如葑:阿里雲原生閘道器Envoy Gateway實踐
圖片來源:pexels.com
原文來源,分散式實驗室:http://mp.weixin.qq.com/s/t1ppAQfm0cPmqhxEARB03Q
最近閱讀 《 Envoy Gateway 來了 》這篇文章,深感 Envoy 強大的可擴充套件性和基於 Envoy Gateway 帶來的易用性,在 Kubernetes 架構下,Envoy 重新定義了閘道器的定位和能力,被譽為雲原生閘道器,甚至被稱之為 下一代閘道器 。阿里巴巴早在 2018 年就啟動了下一代閘道器的探索之路,本文將對這個探索歷程做一個簡單介紹。
阿里巴巴早在 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,作為技術負責人主導了整個演進過程,在雲原生閘道器領域有著豐富的實踐。
- Bruce Eckel:再聊設計模式(篇一)
- 聊聊技術人員如何做好團隊管理
- 為什麼大資料平臺要回歸 SQL
- 如葑:阿里雲原生閘道器Envoy Gateway實踐
- 構建健壯的分散式系統
- SOLID 原則的可靠指南
- 今天我要批判中臺!
- Apache架構師的30條設計原則!
- 成為優秀軟體工程師的三條路徑
- 創業公司是如何進行研發管理和績效考核的?
- 千萬級流量的大型分散式系統架構設計
- 設計抗100億請求的春晚紅包系統
- DDD許可權平臺建模與實戰(附程式碼)
- 阿里、京東基於DDD的架構設計與最佳實踐
- 天畫-codeMaker元件化架構升級實踐
- 數字化轉型下的銀行雲單元架構
- 聊聊技術人的“績效考核”
- 敏捷效能提升的五大要素與誤區
- 精華:軟體架構模式的7種武器
- 聊聊真正的架構設計