1.token不向后傳
微服務(wù)設(shè)計中,header中的信息(Cookie/Set-Cookie/Authorization)屬于附加鑒權(quán)相關(guān),
而統(tǒng)一鑒權(quán)屬于網(wǎng)關(guān)工作范疇,所以請求經(jīng)過網(wǎng)關(guān)后,header信息不會繼續(xù)向后傳.最小知道原則
想解決 配置文件中
sensitive-headers:置空即可
2.項目改造過程中,路由問題
原有服務(wù)域名old.com
重構(gòu)服務(wù)域名new.com
將app調(diào)用old.com的請求轉(zhuǎn)發(fā)到 新服務(wù) new.com
解決辦法:
1.zuul網(wǎng)關(guān)中,新老url做映射
2.nginx中進行匹配
3.zuul中自定義filter
3.動態(tài)路由(流量定向分發(fā))問題
根據(jù)特定規(guī)則,將不同用戶請求分發(fā)到不同服務(wù)中去,
思路參考:《灰度發(fā)布與ABtest》
4.網(wǎng)關(guān)一般作用:
分發(fā)服務(wù)
鑒權(quán)
過濾請求
監(jiān)控
(動態(tài))路由
限流
- 流量峰值估算,28原則
80%的流量集中在在20%的時間中
5.zuul四種過濾器
pre 在請求被路由之前調(diào)用,可實現(xiàn)鑒權(quán)、選擇微服務(wù)、日志、限流
route在請求路由到微服務(wù)時調(diào)用,利用httpClient或ribbon實現(xiàn)
post在調(diào)用微服務(wù)之后調(diào)用,將相應返回客戶端,可用于添加heder、記錄日志
error 其它階段發(fā)生異常時
6.filter實現(xiàn)過程
1.繼承zuulfilter
2.shoudFilter()true:執(zhí)行當前filter false:不執(zhí)行
3.run()filter具體業(yè)務(wù)邏輯
4.filterType:pre、route、post、error
5.order:數(shù)字越小,執(zhí)行順序越靠前
7.zuul中404問題
zuul中地址來源:Eureka中獲取/配置文件中獲取,
如果都找不到就會404
8.zuul容錯
實現(xiàn)FallbackProvider
9.過濾器開關(guān)
shoudFilter(),中信息存儲到redis或者配置中心,
不需要重啟服務(wù)可完成過濾器的開啟和關(guān)閉
-
sendZuulResponse(false)將短路下一類型filter,
但是同類型filter不受影響,如果需要短路同類型,需要自行在同類型filtershoudFilter()中對sendZuulResponse進行判斷
網(wǎng)關(guān)限流
- 通過filter+google.guava令牌桶進行限流
- 微服務(wù)自身也應該有限流,也可以通過filterfilter+google.guava限流,
也可采用filter+Sentinel或者@SentinelResource注解方式