Spring Cloud Zuul
什麼是Zuul
Zuul 包含了對請求路由和校驗過濾兩個最主要的功能:
- 其中路由功能負責將外部請求轉發到具體的微服務實例上,是實現外部訪問統一入口的基礎:
客戶端請求網關/api/product,通過路由轉發到 product 服務
客戶端請求網關/api/order,通過路由轉發到 order 服務 - 過濾功能則負責對請求的處理過程進行干預,是實現請求校驗等功能的基礎
Zuul 和 Eureka 進行整合,將 Zuul 自身註冊爲 Eureka 服務治理中的服務,同時從 Eureka 中獲得其他微服務的消息,也即以後的訪問微服務都是通過Zuul跳轉後獲得。
Zuul 路由功能實戰
新建 microservice-cloud-10-zuul-gateway-7001
配製pom.xml文件
配置application.yml文件
配置啓動類
功能測試,訪問 http://localhost:8001/product/get/1等同於訪問http://localhost:7001/microservice-product/product/get/1
路由轉發映射配置
在 application.yml 配置文件中追加部分
重啓zuul路功能,只要接收到/product開頭的路徑請求,都會轉發到microservice-cloud-08-provider-product-hystrix-8001 服
務
Zuul 過濾器實戰
自定義過慮器需要繼承 ZuulFilter,ZuulFilter是一個抽象類,需要覆蓋它的4個方法,如下:
filterType:返回字符串代表過濾器的類型,返回值有:
pre:在請求路由之前執行
route:在請求路由時調用
post:請求路由之後調用, 也就是在route和errror過濾器之後調用
error:處理請求發生錯誤時調用
filterOrder:此方法返回整型數值,通過此數值來定義過濾器的執行順序,數字越小優先級越高。
shouldFilter:返回Boolean值,判斷該過濾器是否執行。返回true表示要執行此過慮器,false不執行。
run:過濾器的業務邏輯
自定義過濾器 LoginFilter
功能測試,不攜帶token時候返回錯誤,攜帶token可以正常請求