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