GateWay之路由轉發和過濾
在一個Gateway項目(配置了eureka等組件)中進行配置
server: port: 9006 spring: application: name: zhao-service-gateway cloud: gateway: routes: - id: service-autodeliver-router #uri: http://127.0.0.1:8091 uri: lb://zhao-service-autodeliver predicates: - Path= /autodeliver/** - id: service-resume-router #uri: http://127.0.0.1:8081 uri: lb://zhao-service-resume predicates: - Path=/resume/** filters: - StripPrefix=1
通過第一個服務hao-service-autodeliver的配置形式,使用固定ip和服務名均可正常通過網關項目訪問到服務,但是固定ip的方式不太靈活,而 lb://zhao-service-autodeliver可以實現隨機的負載均衡,且不用填寫固定ip也避免了不要的麻煩
第二個服務配置中 filters:- StripPrefix=1這個配置會過濾掉第一個路徑配置,所以我們在最後訪問的時候,除了需要加上第一個過濾掉的配置,還需要加上原本的配置。訪問形式如下
GateWay斷言
上述針對路徑的配置即是斷言predicates的配置,而Gateway還內置了以下幾種斷言
基本上上述斷言都是基於請求攜帶的信息進行過濾的,在實際操作過程中可以綜合使用這些信息來達到我們想要的操作
GateWay自定義全局過濾器
通過該過濾器攔截了黑名單中的請求(該操作在實際中可藉助mysql或redis等數據存儲實現),實現效果
GateWay的高可用
⽹關作為⾮常核⼼的⼀個部件,如果掛掉,那麼所有請求都可能⽆法路由處理,因此我們需要做GateWay的⾼可⽤。GateWay的⾼可⽤很簡單:可以啟動多個GateWay實例來實現⾼可⽤,在GateWay的上游使⽤Nginx等負載均衡設備進⾏負載轉發以達到⾼可⽤的⽬的。啟動多個GateWay實例(假如說兩個,⼀個端⼝9002,⼀個端⼝9003),剩下的就是使⽤Nginx等完成負載代理即可。