日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Mesh 網(wǎng)關(guān)

更新時(shí)間:

本文結(jié)合無(wú)線(xiàn)網(wǎng)關(guān)的發(fā)展歷程,解讀進(jìn)行 Service Mesh 改造的緣由和價(jià)值,同時(shí)介紹在雙十一落地過(guò)程中如何保障業(yè)務(wù)流量平滑遷移至新架構(gòu)下的 Mesh 網(wǎng)關(guān)。

具體內(nèi)容將從下述幾個(gè)方面展開(kāi):

網(wǎng)關(guān)的演變歷史

當(dāng)前,螞蟻集團(tuán)的無(wú)線(xiàn)網(wǎng)關(guān)接入了數(shù)百個(gè)業(yè)務(wù)系統(tǒng),提供數(shù)萬(wàn)個(gè) API 服務(wù),是螞蟻集團(tuán)客戶(hù)端絕對(duì)的流量入口,支持的業(yè)務(wù)橫跨支付寶、網(wǎng)商、財(cái)富、微貸、芝麻和國(guó)際 A+ 等多種場(chǎng)景。面對(duì)多種業(yè)務(wù)形態(tài)、復(fù)雜網(wǎng)絡(luò)結(jié)構(gòu),無(wú)線(xiàn)網(wǎng)關(guān)的架構(gòu)也在不斷演進(jìn)。

中心化網(wǎng)關(guān)

在 All In 無(wú)線(xiàn)的年代,隨著通用能力的沉淀,形成了中心化網(wǎng)關(guān) Gateway,示例如下:

中心網(wǎng)關(guān).png

流程說(shuō)明

  1. 客戶(hù)端連接到網(wǎng)關(guān)接入層集群 Spanner。

  2. Spanner 會(huì)把客戶(hù)端請(qǐng)求轉(zhuǎn)發(fā)到無(wú)線(xiàn)網(wǎng)關(guān)集群 Gateway。

  3. Gateway 提供通用能力如鑒權(quán)、限流等處理請(qǐng)求,并根據(jù)服務(wù)標(biāo)識(shí)將請(qǐng)求路由到正確的后端服務(wù);服務(wù)處理完請(qǐng)求,響應(yīng)原路返回。

2016 年新春紅包爆發(fā),螞蟻森林等新興業(yè)務(wù)發(fā)展壯大,網(wǎng)關(guān)集群機(jī)器數(shù)不斷增長(zhǎng)。這加劇了運(yùn)維層面的復(fù)雜性,IT成本也面臨不能承受之重。同時(shí),一些核心鏈路的業(yè)務(wù)如無(wú)線(xiàn)收銀臺(tái)、掃一掃等,迫切需要與其他業(yè)務(wù)隔離,避免不可預(yù)知的突發(fā)流量影響到這些高保業(yè)務(wù)的可用性。因此,2016 年下半年開(kāi)始建設(shè)和推廣去中心化網(wǎng)關(guān)。

去中心化網(wǎng)關(guān)

去中心化網(wǎng)關(guān)示例

去中心網(wǎng)關(guān).png

去中心化網(wǎng)關(guān)將原先集中式網(wǎng)關(guān)的能力進(jìn)行了拆分:

  • 轉(zhuǎn)發(fā)邏輯:將 Gateway 中根據(jù)服務(wù)標(biāo)識(shí)轉(zhuǎn)發(fā)的能力遷移到 Spanner 上。

  • 網(wǎng)關(guān)邏輯:將網(wǎng)關(guān)通用能力如鑒權(quán)、限流、LDC 等功能,抽成一個(gè) mgw JAR,集成到業(yè)務(wù)系統(tǒng)中,與后端服務(wù) JVM 進(jìn)程一起運(yùn)行。

此時(shí),客戶(hù)端請(qǐng)求的處理流程如下:

  • 客戶(hù)端請(qǐng)求到 Spanner 后,Spanner 會(huì)根據(jù)服務(wù)標(biāo)識(shí)轉(zhuǎn)發(fā)請(qǐng)求到后端服務(wù)的 mgw 中。

  • mgw 進(jìn)行通用網(wǎng)關(guān)能力處理,90% 的請(qǐng)求隨即進(jìn)行 JVM 內(nèi)部調(diào)用。

去中心化網(wǎng)關(guān)與集中式網(wǎng)關(guān)相比,具有如下優(yōu)點(diǎn):

  • 提升性能

    • 少一層網(wǎng)關(guān)鏈路,網(wǎng)關(guān) JAR 調(diào)用業(yè)務(wù)是 JVM 內(nèi)部調(diào)用。

    • 大促期間,無(wú)需關(guān)心網(wǎng)關(guān)的容量,有多少業(yè)務(wù)就有多少網(wǎng)關(guān)。

  • 提高穩(wěn)定性

    • 集中式網(wǎng)關(guān)形態(tài)下,網(wǎng)關(guān)出現(xiàn)問(wèn)題,所有業(yè)務(wù)都會(huì)受到影響。

    • 去中心化后,網(wǎng)關(guān)的問(wèn)題,不會(huì)影響去中心化的應(yīng)用。

但凡事具有兩面性,隨著在 TOP 30 的網(wǎng)關(guān)應(yīng)用中落地鋪開(kāi),去中心化網(wǎng)關(guān)的缺點(diǎn)也逐步顯現(xiàn):

  • 研發(fā)效能低

    • 接入難:需要引入 15 + 的 pom 依賴(lài)、20 + 的配置,深度侵入業(yè)務(wù)配置。

    • 版本收斂難:當(dāng)前 mgw.jar 已迭代了 40+ 版本,但是,還有業(yè)務(wù)使用的是初版,難以收斂。

    • 新功能推廣難:新能力上線(xiàn)要推動(dòng)業(yè)務(wù)升級(jí)和發(fā)布,往往需要一個(gè)月甚至更久時(shí)間。

  • 干擾業(yè)務(wù)穩(wěn)定性

    • 依賴(lài)沖突,干擾業(yè)務(wù)穩(wěn)定性,這種情況發(fā)生了不止一次。

    • 網(wǎng)關(guān)功能無(wú)法灰度、獨(dú)立監(jiān)測(cè),資源占用無(wú)法評(píng)估和隔離。

  • 不支持異構(gòu)接入:非 Java 應(yīng)用,無(wú)法使用去中心化網(wǎng)關(guān)。

Mesh 網(wǎng)關(guān)

去中心化網(wǎng)關(guān)存在的諸多問(wèn)題,多數(shù)是由于網(wǎng)關(guān)功能與業(yè)務(wù)進(jìn)程捆綁在一起造成的。這引發(fā)了螞蟻團(tuán)隊(duì)的思考:如果網(wǎng)關(guān)功能從業(yè)務(wù)進(jìn)程中抽離出來(lái),這些問(wèn)題是否就可以迎刃而解了?這種想法,與 Service Mesh 的 Sidecar 模式不謀而合。因此在去中心化網(wǎng)關(guān)發(fā)展了三年后,我們?cè)俪霭l(fā)對(duì)螞蟻集團(tuán)無(wú)線(xiàn)網(wǎng)關(guān)進(jìn)行了 Mesh 化改造,以期解決相關(guān)痛點(diǎn)。

Mesh 網(wǎng)關(guān)示例

mesh網(wǎng)關(guān).png

Mesh 網(wǎng)關(guān)與后端服務(wù)同一個(gè) Pod 部署,即 Mesh 網(wǎng)關(guān)與業(yè)務(wù)系統(tǒng)同服務(wù)器、不同進(jìn)程,具備網(wǎng)關(guān)的全量能力。客戶(hù)端請(qǐng)求的處理流程如下:

  • 客戶(hù)端請(qǐng)求到 Spanner 后,Spanner 會(huì)根據(jù)服務(wù)標(biāo)識(shí)轉(zhuǎn)發(fā)請(qǐng)求到后端服務(wù)同一 Pod 中的 Mesh 網(wǎng)關(guān)。

  • Mesh 網(wǎng)關(guān)執(zhí)行通用邏輯后,調(diào)用同機(jī)不同進(jìn)程的業(yè)務(wù)服務(wù),完成業(yè)務(wù)處理。

對(duì)比去中心化網(wǎng)關(guān)的問(wèn)題,我們來(lái)分析下 Mesh 網(wǎng)關(guān)所帶來(lái)的優(yōu)勢(shì):

  • 研發(fā)效能:

    • 接入方便:業(yè)務(wù)無(wú)需引入繁雜的依賴(lài)和配置,即可接入 Mesh 網(wǎng)關(guān)。

    • 版本容易收斂、新功能推廣快:新版本在灰度驗(yàn)證通過(guò)后,即可全網(wǎng)推廣升級(jí),無(wú)需維護(hù)和排查多版本帶來(lái)的各種問(wèn)題。

  • 業(yè)務(wù)穩(wěn)定性:

    • 無(wú)損升級(jí):業(yè)務(wù)系統(tǒng)無(wú)需感知網(wǎng)關(guān)的升級(jí)變更,且網(wǎng)關(guān)的迭代升級(jí)可以利用 MOSN 現(xiàn)有的特性進(jìn)行細(xì)粒度的灰度和驗(yàn)證,做到無(wú)損升級(jí)。

    • 獨(dú)立監(jiān)測(cè):由于和業(yè)務(wù)系統(tǒng)在不同進(jìn)程,可以實(shí)時(shí)遙測(cè) Mesh 網(wǎng)關(guān)進(jìn)程的表現(xiàn),并據(jù)此評(píng)估和優(yōu)化,增強(qiáng)后端服務(wù)穩(wěn)定性。

  • 異構(gòu)系統(tǒng)接入:Mesh 網(wǎng)關(guān)相當(dāng)于一個(gè)代理,對(duì)前端屏蔽后端的差異,支持 SOFARPC、Dubbo 和 gRPC 等主流 RPC 協(xié)議,并支持非 SOFA 體系的異構(gòu)系統(tǒng)接入。

至此,無(wú)線(xiàn)網(wǎng)關(guān)的演變歷史已經(jīng)說(shuō)明完畢。

細(xì)心的讀者可能有下述疑問(wèn):

  • Mesh 化之后的請(qǐng)求處理流程不是同進(jìn)程調(diào)用,比去中心化網(wǎng)關(guān)多了一跳,是否有性能損耗?

  • 如此大的改革之后,在上線(xiàn)過(guò)程中如何保障穩(wěn)定性?

下文將嘗試回答上述疑問(wèn)。

網(wǎng)關(guān) Mesh 化

架構(gòu)

依照 Service Mesh 的分層模型,Mesh 網(wǎng)關(guān)分為數(shù)據(jù)面和控制面,示例如下:

spanner.png

網(wǎng)關(guān)Mesh化分層模型圖說(shuō)明

  • 藍(lán)色箭頭線(xiàn)是客戶(hù)端請(qǐng)求的處理流程,Mesh 網(wǎng)關(guān)數(shù)據(jù)面在螞蟻集團(tuán)內(nèi)部 MOSN 的 Sidecar 中。

  • 綠色箭頭線(xiàn)是網(wǎng)關(guān)配置下發(fā)過(guò)程,Mesh 網(wǎng)關(guān)控制面當(dāng)前還是由網(wǎng)關(guān)管控平臺(tái)來(lái)承載。

  • 紅色箭頭線(xiàn)是 MOSN Sidecar 的運(yùn)維體系。

數(shù)據(jù)面

數(shù)據(jù)面,采用 Go 語(yǔ)言實(shí)現(xiàn)了原先網(wǎng)關(guān)的全量能力,融合進(jìn) MOSN 的模型中,復(fù)用了其他組件已有的能力。同時(shí)網(wǎng)絡(luò)接入層 Spanner 也實(shí)現(xiàn)了請(qǐng)求分發(fā)決策能力。數(shù)據(jù)面包含下述幾個(gè)功能:

  • 數(shù)據(jù)轉(zhuǎn)換:將客戶(hù)端的請(qǐng)求數(shù)據(jù)轉(zhuǎn)換成后端請(qǐng)求數(shù)據(jù),將后端響應(yīng)數(shù)據(jù)轉(zhuǎn)換成客戶(hù)端響應(yīng)。利用 MOSN 協(xié)議層擴(kuò)展能力,實(shí)現(xiàn)了對(duì)網(wǎng)關(guān)自有協(xié)議 Mmtp 的解析能力。

  • 通用功能:具備授權(quán)、安全、限流、LDC 和重試等網(wǎng)關(guān)通用能力。利用 MOSN Stream Filter 注冊(cè)機(jī)制以及統(tǒng)一的 Stream Send/Receive Filter 接口擴(kuò)展而來(lái)。

  • 請(qǐng)求路由:客戶(hù)端請(qǐng)求按照特定規(guī)則路由到正確的后端系統(tǒng)。在網(wǎng)關(guān)層面實(shí)現(xiàn) LDC 邏輯后,復(fù)用 MOSN RPC 組件的路由匹配能力。其中大部分請(qǐng)求都會(huì)路由到當(dāng)前 Zone,從而直接請(qǐng)求到當(dāng)前 Pod 的業(yè)務(wù)進(jìn)程端口。

  • 后端調(diào)用:支持調(diào)用多種類(lèi)型的后端服務(wù),支持 SOFARPC、Chair 等后端,后期計(jì)劃支持更多的 RPC 框架和異構(gòu)系統(tǒng)。

控制面

為網(wǎng)關(guān)用戶(hù)提供新增、配置 API 等服務(wù)的管控系統(tǒng),可將網(wǎng)關(guān)配置數(shù)據(jù)下發(fā)至 Mesh 網(wǎng)關(guān)的 Sidecar 實(shí)例。多一跳對(duì)業(yè)務(wù)性能是否有影響?

MOSN 層性能損耗分析圖

性能.png

更多性能分析詳情,請(qǐng)參考 螞蟻金服 Service Mesh 深度實(shí)踐

分析結(jié)論是:相較于復(fù)雜的業(yè)務(wù)邏輯,Mesh 的性能損耗在可接受的范圍內(nèi),同時(shí)帶來(lái)了快速獲得收益的能力。Mesh 網(wǎng)關(guān)在此次接入過(guò)程中也做了 Session 精簡(jiǎn)化:

  • 內(nèi)容精簡(jiǎn):從 7k 字節(jié)降低到 650 字節(jié)。

  • 無(wú)解壓縮:節(jié)省 GZip 的性能損耗。

  • 無(wú)線(xiàn) PC 隔離:解決 Session 污染問(wèn)題。

在帶 Session 校驗(yàn)場(chǎng)景下,相較于去中心化網(wǎng)關(guān),基準(zhǔn)性能壓測(cè)得出的結(jié)論是:QPS 提升近 1 倍,RT 下降約 15%。

雙十一落地

2019 年雙十一,Mesh 網(wǎng)關(guān)的落地情況如下:

  • 大促支付鏈路淘系支付 API 100% 引流。

  • 大促會(huì)員鏈路主戰(zhàn)場(chǎng)應(yīng)用 100% 引流。

  • 網(wǎng)關(guān) Top API 5% 引流。

從上述引流情況可以看出,Mesh 網(wǎng)關(guān)支持多維度百分比引流。當(dāng)然,新的架構(gòu)體系在大促時(shí)落地,充滿(mǎn)了各種風(fēng)險(xiǎn),圖示如下:

風(fēng)險(xiǎn).png

為了做好風(fēng)險(xiǎn)管控,我們嚴(yán)格按照三板斧(可監(jiān)控、可灰度、可回滾)的要求建設(shè)相關(guān)能力。當(dāng)前 Mesh 網(wǎng)關(guān)的路由具備 API 百分比、服務(wù)器、Zone 以及應(yīng)用級(jí)別的開(kāi)關(guān)能力,支持業(yè)務(wù)灰度和應(yīng)急止血。

開(kāi)關(guān)

生效時(shí)機(jī)

作用

Mesh 百分比

立即

控制某個(gè) API 的 Mesh 路由是否開(kāi)啟,支持百分比。

Label

自動(dòng)感知

控制某臺(tái)服務(wù)器的 Mesh 路由是否開(kāi)啟。

Zone

Spanner Reload

控制某個(gè) Zone 的 Mesh 路由是否開(kāi)啟。

MeshOnly

Spanner Reload

控制某個(gè)應(yīng)用的 Mesh 路由是否開(kāi)啟。

這里著重分享下 Mesh 網(wǎng)關(guān) API 百分比分流策略。通過(guò)和網(wǎng)絡(luò)接入層 Spanner 配合,螞蟻團(tuán)隊(duì)開(kāi)發(fā)了 Mesh 分流功能,實(shí)現(xiàn)了秒級(jí)生效的單個(gè) API 百分比切流 Mesh 網(wǎng)關(guān)能力。某 API 配置了 去中心化 x%,Mesh 化 y%,其切流規(guī)則生效時(shí)的流量,示意如下:

切流規(guī)則.png
  • 去中心化網(wǎng)關(guān)服務(wù):由 Port 1(Http)或 Port 2(Mmtp)端口提供服務(wù)。

  • Mesh 網(wǎng)關(guān)服務(wù):由 Port 3(Http)或 Port 4(Mmtp)端口提供服務(wù)。

其中百分比信息由業(yè)務(wù)方在 API 管控頁(yè)面配置,隨著 API 響應(yīng)頭帶回 Spanner Worker,由 Worker 自主學(xué)習(xí)后,按照對(duì)應(yīng)的百分比做分流決策。同時(shí)實(shí)現(xiàn)了路由失敗回退機(jī)制,優(yōu)先級(jí) Service:去中心化端口 > Service:Mesh 端口 > Gateway ,由集中式網(wǎng)關(guān)進(jìn)行兜底保證業(yè)務(wù)不失敗。