1. 程式人生 > >Spring Cloud Zuul--服務閘道器元件配置與使用

Spring Cloud Zuul--服務閘道器元件配置與使用

目標:使用Spring Cloud Zuul建立服務閘道器

開發環境:IntelliJ IDEA

操作步驟:基礎環境配置->Zuul元件配置->應用引數配置->客戶端微服務編寫->應用執行測試(Eureka/Zuul/Client)

1.基礎環境配置

與Eureka元件類似,新建一個專案Spring_Cloud_Zuul,配置參考部落格:

https://blog.csdn.net/xingyuzhe/article/details/79907748

2.Zuul元件配置

API閘道器在應用系統中的作用為統一處理外部客戶端訪問,實現請求路由、負載均衡、校驗過濾等功能。

Spring Cloud Zuul是基於Netflix Zuul實現的API閘道器元件,通過與服務註冊中心Eureka元件協作,解決了服務例項維護的問題。

Netflix Zuul專案地址:https://github.com/Netflix/zuul

Zuul元件核心功能:

(1)Zuul、Ribbon以及Eureka相結合,可以實現智慧路由和負載均衡的功能,Zuul能夠將請求流量按某種策略分發到叢集狀態的多個服務例項。

(2)閘道器將所有服務的API介面統一聚合,並統一對外暴露。外界系統呼叫API介面時,都是由閘道器對外暴露的API介面。保護內部微服務單元的API介面。

(3)閘道器服務可以做使用者身份認證和許可權認證,防止非法請求操作API介面,對伺服器起到保護作用。

(4)閘道器可以實現監控功能,實時日誌輸出,對請求進行記錄。

(5)閘道器可以用來實現流量監控,在高流量的情況下對服務進行降級。

(6)API介面從內部服務分離出來,方便做測試。

閘道器實現基於HTTP協議,並分為多個過濾器:


開發流程:

(1)新建Module工程-CaaS_Zuul_Gateway



專案結構:


(2)新增依賴配置

新增Eureka Client元件支援,功能為將自身作為一個應用註冊到服務註冊中心:


新增Zuul元件支援,提供閘道器服務:


新增Spring Boot的web功能以及測試功能:


新增Maven外掛支援:


(3)編寫Module專案主程式

@EnableEurekaClient註解開啟EurekaClient的功能

@EnableZuulProxy註解開啟Zuul的功能


3.應用引數配置

路由配置在application.yml中實現


4.客戶端微服務編寫

為測試閘道器功能,需編寫客戶端微服務,其中包含簡單介面呼叫。

開發流程:

(1)新建一個Module工程-CaaS_Zuul_Client



(2)新增配置依賴

新增eureka客戶端以及spring boot配置依賴


新增maven外掛依賴


(3)編寫Module專案主程式

@EnableEurekaClient註解開啟註冊服務功能


(4)編寫Module專案控制器

新建EurekaClientController.java


(5)編寫應用執行配置檔案

編寫application.yml


5.應用執行測試(Eureka/Zuul/Client)

應用執行測試過程啟用4個微服務:服務註冊中心Eureka、兩個Client服務、服務閘道器Zuul

其中兩個客戶端服務使用不同埠號:

java -jar xx.jar --server.port=8762

java -jar xx.jar --server.port=8763

檢視服務註冊中心:閘道器服務和客戶端服務已經註冊成功


通過閘道器呼叫客戶端服務介面:http://localhost:5000/zuulclientapi/hello?name=caoxin


重新整理頁面:自動完成負載均衡