第十二天:浪跡天涯網上商城(1.0版本)--spring cloud zuul閘道器搭建
1、需求
我們都知道專案中的服務是越來越多的,如果沒有一個統一的閘道器來做分發,那麼就會將複雜度帶到客戶端,所以我們必須搭建閘道器。
2、實現步驟
1、建立一個專案langjitianya-gateway
2、準備好pom.xml檔案
3、準備好配置檔案
4、準備好啟動類
5、run 起來
6、訪問驗證
3、具體實現
1、專案結構簡圖
2、pom配置檔案
<groupId>com.niepengfei.langjitianya</groupId> <artifactId>langjitianya-gateway</artifactId> <version>1.0-SNAPSHOT</version> <name>langjitianya-gateway</name> <description>浪跡天涯商城閘道器</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.12.RELEASE</version> <relativePath/> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Edgware.SR3</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-web</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
3、配置檔案application.properties
#服務埠 server.port=5555 #服務名稱 spring.application.name=langjitianya-gateway ## 註冊中心eurka地址 eureka.client.serviceUrl.defaultZone=http://localhost:8000/eureka/ #給閘道器地址加上版本號 zuul.prefix=/v1 # 商品服務閘道器 zuul.routes.item-service.path=/itemservice/api/** zuul.routes.item-service.serviceId=langjitianya-itemservice
4、啟動類
5、run
6、測試, 訪問:http://localhost:5555/v1/itemservice/api/item/list.json?page=1&rows=2
4、服務降級處理
1、服務降級處理類
具體原始碼參考如下:
package com.niepengfei.langjitianya.gateway.fallback.itemservice; import org.springframework.cloud.netflix.zuul.filters.route.FallbackProvider; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.client.ClientHttpResponse; import org.springframework.stereotype.Component; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; /** * @author Jack */ @Component public class ItemServiceFallbackProvider implements FallbackProvider { /** * 只對langjitianya-itemservice做降級處理, 如果需要對所有的服務都加降級處理 * 只需要將字串變成“*” * @return */ @Override public String getRoute() { return "langjitianya-itemservice"; } @Override public ClientHttpResponse fallbackResponse(Throwable cause) { return this.fallbackResponse(); } @Override public ClientHttpResponse fallbackResponse() { return new ClientHttpResponse(){ @Override public HttpStatus getStatusCode() throws IOException { return HttpStatus.OK; } @Override public int getRawStatusCode() throws IOException { return HttpStatus.OK.value(); } @Override public String getStatusText() throws IOException { return "OK"; } @Override public void close() { } @Override public InputStream getBody() throws IOException { return new ByteArrayInputStream("error".getBytes()); } @Override public HttpHeaders getHeaders() { HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.APPLICATION_JSON); return httpHeaders; } }; } }
2、服務降級測試
第一步:首先停掉langjitianya-itemservice服務。
第二步:訪問 http://localhost:5555/v1/itemservice/api/item/list.json?page=1&rows=2
5、程式碼託管
相關推薦
第十二天:浪跡天涯網上商城(1.0版本)--spring cloud zuul閘道器搭建
1、需求我們都知道專案中的服務是越來越多的,如果沒有一個統一的閘道器來做分發,那麼就會將複雜度帶到客戶端,所以我們必須搭建閘道器。2、實現步驟1、建立一個專案langjitianya-gateway2、準備好pom.xml檔案3、準備好配置檔案4、準備好啟動類5、run 起來
第十八天:浪跡天涯網上商城(1.0版本)--引入spring cloud sleuth分散式鏈路追蹤
1、需求 我們都知道隨著專案的發展,各個底層的服務呼叫關係複雜,有時候因為某個服務的效能問題導致整個呼叫鏈出現故障,那麼排查問題是很困難的。現在我們引入Spring Cloud Sleuth分散式鏈路追蹤來解決這個問題。 2、Spring Cloud Sleut
第十天七:浪跡天涯網上商城(1.0版本)--Feign基礎使用教程
1、為什麼選擇Feign而不是其他 Feign使得 Java HTTP 客戶端編寫更方便。Feign 靈感來源於Retrofit、JAXRS-2.0和WebSocket。Feign 最初是為了降低統一繫結Denominator 到 HTTP API 的複雜度,不區分是否支援
python學習第十二天:閉包函數與裝飾器
源代碼 -s 為什麽 pre def func stop 修改 rom 閉包函數: 什麽是閉包函數: 閉指的是定義在一個函數內部 包指的是該函數包含對外部作用域(非全局作用域)名字的引用 def counter(): n=0 d
【譯】你不知道的 Chrome 除錯工具技巧 第十二天:忍者日誌列印!(the ninja logs)
特別宣告 本文是作者 Tomek Sułkowski 釋出在 medium 上的一個系列。據作者透露一共有 24 篇,一直更新到 12 月 24 日 版權歸原作者所有。 作者在Twitter上推薦我們的中文翻譯啦,截圖在最後 譯者在翻譯前已經和作者溝通得到了翻譯整個系列的授權。 為了不影響大家閱讀,授權
自學python 第十二天:數字 三角函式+數學常量
#python 三角函式 ''' 函式 描述 acos(x) 返回x的反餘弦弧度值。 asin(x) 返回x的反正弦弧度值。 atan(x) 返回x的反正切弧度值。 atan2(y,
Spring學習第十二天:FactoryBean配置bean
Spring 中有兩種型別的 Bean, 一種是普通Bean, 另一種是工廠Bean, 即FactoryBean. 工廠 Bean 跟普通Bean不同, 其返回的物件不是指定類的一個例項, 其返回的是該工廠 Bean 的 getObject 方法所返回的物件
Spring Cloud實戰 | 第十一篇:Spring Cloud Gateway 閘道器實現對RESTful介面許可權控制和按鈕許可權控制
## 一. 前言 hi,大家好,這應該是農曆年前的關於開源專案[有來商城](https://github.com/hxrui) 的最後一篇文章了。 [有來商城](https://github.com/hxrui) 是基於 Spring Cloud OAuth2 + Spring Cloud Gateway
Spring Cloud實戰 | 第十一篇:Spring Cloud Gateway閘道器實現對RESTful介面許可權和按鈕許可權細粒度控制
## 一. 前言 hi,大家好,這應該是農曆年前的關於開源專案[有來商城](https://github.com/hxrui) 的最後一篇文章了。 [有來商城](https://github.com/hxrui) 是基於 Spring Cloud OAuth2 + Spring Cloud Gateway
Spring Cloud gateway 閘道器服務二 斷言、過濾器
微服務當前這麼火爆的程度,如果不能學會一種微服務框架技術。怎麼能升職加薪,增加簡歷的籌碼?spring cloud 和 Dubbo 需要單獨學習。說沒有時間?沒有精力?要學倆個框架?而Spring Cloud alibaba只需要你學會一個就會擁有倆種微服務治理框架技術。何樂而不為呢?加油吧!騷猿年 上一篇我
從零搭建Spring Cloud Gateway閘道器(二)—— 列印請求響應日誌
作為閘道器,日誌記錄是必不可少的功能,可以在網關出增加requestId來查詢整個請求鏈的呼叫執行情況等等。 # 列印請求日誌 列印請求日誌最重要的就是列印請求引數這些東西,不過RequestBody通常情況下在被讀取一次之後就會失效,這樣的話,下游的服務就不能正常獲取到請求引數了。所以我們需要重寫下請求體
樂優商城第十二天(Elasticsearch)
spring data Elasticsearch1.匯入依賴<dependencies> <dependency> <groupId>org.springframework.boot</groupId>
Ng第十二課:支持向量機(Support Vector Machines)(二)
.com htm 條件 hid cti 無法 技術 add 效果 7 核函數(Kernels) 考慮我們最初在“線性回歸”中提出的問題,特征是房子的面積x,這裏的x是實數,結果y是房子的價格。假設我們從樣本點的分布中看到x和y符合3次曲線,那麽我們希望使用x的三次多項式來逼
python第十二天
() ati urn col nbsp div 斐波那契數 傳值 log 第二模塊學習: 生成器,叠代器,內置函數 生成器特點:只有在調用時才會生成相應的數據,運行的速度快! 示例: 1 def fil(max):#斐波那契數 2 n,a,b=0,0,1
第十二章:查找與處理文件
路徑 完整 管理員 arc 數據庫 保存 查詢 執行 處理 目標 使用 locate 使用 find 使用 Gnome Search tool locate 基於預先定義的數據庫定義,這個數據庫保存了所有文件的路徑和權限 非實時查詢
python自動化開發-[第十二天]-前端Css
html cto 導致 比較 基本語法 itl 一個 pan pytho CSS基本語法 CSS 規則由兩個主要的部分構成:選擇器,以及一條或多條聲明。 selector { property: value;
手機影音第十二天,集成vitamio萬能播放器
集成vitamio萬能播放器 Vitamio 是一款 Android 與 iOS 平臺上的全能多媒體開發框架,全面支持硬件解碼與 GPU 渲染。Vitamio 憑借其簡潔易用的 API 接口贏得了全球眾多開發者的青睞。到目前,全球已經有超過 一萬 種應用在使用 Vitamio,覆蓋用戶超過 5億 。Vi
愛創課堂每日一題第十二天 XSS原理及防範?
前端 前端學習 前端入門 Xss(cross-site scripting)攻擊指的是攻擊者往Web頁面裏插入惡意 html標簽或者javascript代碼。比如:攻擊者在論壇中放一個看似安全的鏈接,騙取用戶點擊後,竊取cookie中的用戶私密信息;或者攻擊者在論壇中加一個惡意表單,當用戶提交表單
第十二篇:HTML基礎
項目 logs 瀏覽器 圖片 handle 標題欄 width light 標題 本篇內容 HTML概述 HTML常用基本標簽 CSS格式引入 一、 HTML概述 1.定義: HTML,超文本標記語言,寫給瀏覽器的語言,目前網絡上應用最廣泛的語言。HTML也在不斷
第十二章: 類的無參方法
使用方法 成員變量和局部變量 必須 技術 sun公司 語句 步驟 語法規則 前綴 第十二章: 類的無參方法 類 定義類的方法 類的方法必須包括:1.方法名稱 2.方法返回值