一、網(wǎng)關(guān)的使用場景
1.1)網(wǎng)關(guān)的作用——無網(wǎng)關(guān)
1.2)網(wǎng)關(guān)的作用——有網(wǎng)關(guān)
請求轉(zhuǎn)發(fā)相當(dāng)于我們翻墻簇抵,直接訪問油管會被墻擋住,那么我們將請求發(fā)送給代理(代理不被墻)射众,代理將請求轉(zhuǎn)發(fā)給目標(biāo)網(wǎng)站碟摆,目標(biāo)網(wǎng)站將內(nèi)容返回給代理,代理再將返回的內(nèi)容轉(zhuǎn)發(fā)給我
1.3)網(wǎng)關(guān)應(yīng)用——鑒權(quán)認(rèn)證
1.4)網(wǎng)關(guān)應(yīng)用——灰度發(fā)布
發(fā)布問題:新版本發(fā)布后關(guān)閉舊服務(wù)叨橱,比如注冊新帳號測試按照正常的注冊流程沒問題典蜕,等到上線后有一些用戶名中攜帶表情之類注冊断盛,在保存進(jìn)數(shù)據(jù)庫的時(shí)候報(bào)錯(cuò)。而舊服務(wù)是沒問題的用戶使用不順暢可能不用了愉舔,只要不是用戶必須再次使用概率極低
灰度發(fā)布:在大版本改動的時(shí)候?qū)⒘髁繖?quán)重比例逐步向新服務(wù)遷移的一種發(fā)布方式
藍(lán)綠發(fā)布
A/B Test
金絲雀發(fā)布
二、網(wǎng)關(guān)技術(shù)選型
2.1)OpenResty
初始化階段:init_by_lua可以通過腳本加載Nginx配置文件轩缤,想修改配置文件在此步開發(fā)命迈,init_worker_by_lua用來做健康檢查
Rewrite/Access階段:Request Start表示請求打進(jìn)來了,Secure request判斷是不是加密火的,是的話通過ssl_certificate_by_lua握手連接進(jìn)行認(rèn)證工作壶愤,Set_by_lua用來設(shè)置變量
2.2)Zuul
Pre Filters可以做限流、鑒權(quán)馏鹤,Post Filters可以做請求封裝征椒、統(tǒng)計(jì)铐炫,Error Filters可以做重試址芯、日志通知
2.3)Gateway
三、Gateway實(shí)戰(zhàn)
gateway-service
gateway-sample
四脱茉、Gateway架構(gòu)原理
4.1)Gateway的請求處理過程
4.2)RoutePredicateFactory
演示1:BeforeRoutePredicateFactory——請求在指定日期之前
演示2:AfterRoutePredicateFactory——請求在指定日期之后
演示3:CookieRoutePredicateFactory——請求中攜帶的Cookie是否匹配配置的規(guī)則
演示4:HeaderRoutePredicateFactory——請求中Header頭消息對應(yīng)的name和value與Predicate配置的值是否匹配
演示5:HostRoutePredicateFactory——匹配請求中的Host字段進(jìn)行路由
演示6:MethodRoutePredicateFactory——根據(jù)HTTP請求的Method屬性來匹配以實(shí)現(xiàn)路由
4.3)RouteFilterFactory
演示1:AddRequestParameterGatewayFilterFactory——該過濾器的功能是對所有匹配的request請求中添加一個(gè)查詢參數(shù)
演示2: AddResponseHeaderGatewayFilterFactory——該過濾器會對所有匹配的請求琴许,在返回結(jié)果給客戶端之前税肪,在Header中添加相應(yīng)的數(shù)據(jù)
演示3:RequestRateLimiterGatewayFilterFactory——該過濾器會對訪問到當(dāng)前網(wǎng)關(guān)的所有請求執(zhí)行限流過濾
演示4:RetryGatewayFilterFactory——請求重試過濾器,根據(jù)指定的觸發(fā)條件榜田,發(fā)起重試操作
演示5:GatewayMetricsFilter——網(wǎng)關(guān)指標(biāo)過濾器益兄,這個(gè)過濾器會添加name=gateway.requests的timer metrics
演示6:自定義過濾器(自定義Predicate也差不多)
GatewayFilter
GlobalFilter
五箭券、集成Nacos實(shí)現(xiàn)請求負(fù)載
gateway-nacos-provider
gateway-nacos-consumer