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