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
重新整理頁面:自動完成負載均衡