阿里巴巴早在 2018 年,就開啟了云原生上云的序幕,將容器、服務(wù)網(wǎng)格作為核心技術(shù)點(diǎn)進(jìn)行演進(jìn),并嘗試阿里巴巴和螞蟻通過這次技術(shù)演進(jìn),來統(tǒng)一雙方的中間件技術(shù)棧,讓業(yè)務(wù)更聚焦業(yè)務(wù)開發(fā),屏蔽底層分布式復(fù)雜度。作為服務(wù)網(wǎng)格一個重要方向,我們開啟了下一代網(wǎng)關(guān)的探索之路。
1 Envoy Gateway 1.0(孵化期)
上云過程中,我們期望統(tǒng)一應(yīng)用架構(gòu)技術(shù)棧,但是螞蟻和阿里巴巴的 RPC 協(xié)議不同,存在互調(diào)鏈路長、協(xié)議轉(zhuǎn)換消耗大、Tengine Reload 訪問有損(接入生效快就需要不斷 reload 有損,如果控制 reload 影響,就要減少 reload 次數(shù),接入服務(wù)生效慢)、Nginx 內(nèi)核服務(wù)治理能力較弱等問題。因此,需要一個面對未來的網(wǎng)關(guān)解決方案。
當(dāng)時,我們有兩個技術(shù)演進(jìn)思路,一個是基于 Tengine 進(jìn)行優(yōu)化,一個是基于 Envoy 內(nèi)核來擴(kuò)展網(wǎng)關(guān)場景,考慮到 Tengine 解決這些場景架構(gòu)變動太大,Envoy 作為網(wǎng)關(guān)的第二選項(xiàng),能夠簡單的解決上述痛點(diǎn),因此,我們選擇了 Envoy 內(nèi)核作為下一代的網(wǎng)關(guān)演進(jìn)方向,而且從 CNCF Ingress Provider 的統(tǒng)計(jì)數(shù)據(jù)來看,Envoy 也是增長最快的,社區(qū)接受度高。
在 2020 年 5 月,我們啟動了 Envoy Gateway 1.0 的研發(fā),同年成功支撐了雙 11 大促,且成為核心重保的業(yè)務(wù)鏈路。
Envoy Gateway 1.0主要是應(yīng)用于東西向流量的 RPC 互通,其架構(gòu)部署如下圖:
這個時期,我們面對未來演進(jìn)了 Dubbo3.0 的 Triple 協(xié)議,基于 Envoy,演進(jìn)了網(wǎng)關(guān)的服務(wù)管理能力,支撐了當(dāng)年雙十一本地生活戰(zhàn)役數(shù)十萬 TPS 的流量洪峰。
2 Envoy Gateway 2.0(成長期)
隨著阿里巴巴上云戰(zhàn)役的推進(jìn),越來越多的場景找到我們,如云上云下業(yè)務(wù)互通,由于 Tengine 服務(wù)管理弱導(dǎo)致阿里內(nèi)部大量二層微服務(wù)網(wǎng)關(guān)需要收斂,因此從業(yè)務(wù)上我們需要做 Tengine + Envoy 兩層網(wǎng)關(guān)的演進(jìn),承擔(dān)南北向網(wǎng)關(guān)流量。在 2020 年 12 月份我們開始了 2.0 架構(gòu)的演進(jìn),下面以優(yōu)酷場景為例說明演進(jìn)過程如下圖:
Envoy Gateway 2.0 南北向的架構(gòu)圖如下:
在兩層架構(gòu)中,Envoy 網(wǎng)關(guān)更多承擔(dān)了微服務(wù)網(wǎng)關(guān)和微服務(wù)治理的需求,和 Tengine 流量網(wǎng)關(guān)完成了整合。在這個過程中,我們提升了服務(wù)治理和高可用能力,并且支撐優(yōu)酷內(nèi)部多個二層微服務(wù)網(wǎng)關(guān)統(tǒng)一,大幅提升性能和運(yùn)維效率。
2.0階段,Envoy Gateway 完成了東西向、南北向全域流量的調(diào)度分發(fā),東西向上不僅支持跨業(yè)務(wù)域的螞蟻 RPC 互通,更是擴(kuò)展到了混合云的云上云下的 RPC 互通場景,包括釘釘文檔、阿里視頻云、達(dá)摩院的店小蜜、智慧數(shù)字人等,2.0階段的業(yè)務(wù)大圖如下(云上云下互通場景,以釘釘為例說明):
隨著 Envoy Gateway 業(yè)務(wù)的快速鋪開,在跟優(yōu)酷持續(xù)合作時大家不約而同的提出了一個問題:Tengine Gateway(承擔(dān)流量網(wǎng)關(guān)角色) + Envoy Gateway(承擔(dān)微服務(wù)網(wǎng)關(guān)角色)的兩層網(wǎng)關(guān)是否可以合并,使用 Envoy Gateway?答案是肯定的,而且我們也合作設(shè)計(jì)了新的架構(gòu)圖,如下:
這個方案的演進(jìn),讓我們看到了網(wǎng)關(guān)新的發(fā)展態(tài)勢,尤其在以 Kubernetes 主導(dǎo)的容器化背景下,Kubernetes 集群內(nèi)外網(wǎng)絡(luò)的天然隔離性,用戶也需要一款兼顧高性能與安全性、以及強(qiáng)大服務(wù)治理能力的入口網(wǎng)關(guān),這也為我們走向3.0提供了很好的積累。
3 Envoy Gateway 3.0(成熟期)
隨著阿里巴巴大量場景的打磨,Envoy 網(wǎng)關(guān)性能、穩(wěn)定性都獲得了很好的發(fā)展。2021 年,阿里巴巴開啟了中間件三位一體戰(zhàn)役,用云產(chǎn)品支撐集團(tuán)業(yè)務(wù),因此我們也將孵化成熟的技術(shù)通過 MSE 云原生網(wǎng)關(guān)來服務(wù)集團(tuán)。
此時,我們通過 Envoy 將流量網(wǎng)關(guān) + 微服務(wù)網(wǎng)關(guān)合二為一的同時,還通過硬件加速、內(nèi)核優(yōu)化等手段,在性能不打折的情況下,持續(xù)優(yōu)化網(wǎng)關(guān)的資源部署成本。
技術(shù)架構(gòu)決定技術(shù)優(yōu)勢,Envoy 天然的可擴(kuò)展性,還能將豐富的安全認(rèn)證和微服務(wù)治理能力進(jìn)行集成,體現(xiàn)了云原生網(wǎng)關(guān)高聚合的優(yōu)勢,例如:
- 網(wǎng)關(guān)直連業(yè)務(wù) PodIP,不經(jīng)過傳統(tǒng) Cluster IP,RT 更低
- 支持 HTTPS 硬件加速,QPS 提升80%
- 支持 Wasm 插件市場,插件熱加載,滿足多語言自定義插件需求
- 自研 Multi-Ingress Controller 組件支持多集群 Ingress 復(fù)用同一個網(wǎng)關(guān)實(shí)例
- 原生兼容 Kubernetes Ingress 規(guī)范,且支持 Nginx Ingress 核心功能注解的無縫轉(zhuǎn)化
4 回饋社區(qū)
我們在對 Envoy Gateway 進(jìn)行演進(jìn)的過程中,也提了很多社區(qū) issue,包括:dubbo_proxy、wasm、cryptomb等,未來我們會陸續(xù)回饋社區(qū),作出更多貢獻(xiàn),和社區(qū)共同打造下一代網(wǎng)關(guān)。
作者介紹
耿蕾蕾(如葑),阿里云研發(fā)工程師,從 2020 年 5 月負(fù)責(zé) Envoy Gateway 的構(gòu)建到推出 3.0,作為技術(shù)負(fù)責(zé)人主導(dǎo)了整個演進(jìn)過程,在云原生網(wǎng)關(guān)領(lǐng)域有著豐富的實(shí)踐。?