網易數帆 Envoy Gateway 實踐之旅:堅守 6 年,崢嶸漸顯
- 2022 年 5 月 30 日
- 筆記
服務網格成熟度不斷提升,雲原生環境下流量處理愈發重要, Envoy Gateway 項目於近日宣布開源,「旨在大幅降低將 Envoy 作為 API 網關的使用門檻」,引發了業界關注。2018 年 11 月,Envoy 成為 CNCF 畢業項目,開始作為一款高性能數據和服務代理軟體為從業者所知,但此後兩三年,中國 API 網關實踐中,選型 Envoy 仍是一條較為孤獨的道路。
作為中國雲原生實踐的先行者,網易數帆輕舟雲原生團隊早在 2017 年就探索基於 Istio 和 Envoy 實現服務網格平台及 API 網關,並於 2019 年完成該體系在嚴選電商業務的成熟應用。踐行及今 6 載,在企業側,網易數帆 Envoy Gateway 承載了互聯網、銀行、證券、能源等多行業頭部企業核心業務流量,經受了百億級日流量的考驗;在社區側,團隊於 2021 年開源了基於 Istio 和 Envoy 研發的 Hango Gateway,2022 年誕生了中國唯一的 Envoy Maintainer。
在此過程中,網易數帆也多次分享了 Envoy Gateway 相關實踐,並曾於 2020 年就網關技術路線展開討論,力陳 Envoy Gateway 的優勢,與社區同道共同推動並見證 Envoy 不斷成熟。網易數帆認為,Envoy Gateway 的開源,為 Envoy 成為標準數據面組件帶來了一個良好的開端。
- Envoy Gateway 項目://github.com/envoyproxy/gateway
- Hango 項目://github.com/hango-io/hango-gateway
網易數帆雲原生架構選定 Envoy
在雲原生技術體系建設中,網易數帆非常重視統一技術棧,認為這樣才能降低研發成本,真正發揮雲原生的優勢。網格網關體系之所以選擇 Envoy,不僅僅是因為 Envoy 是 Istio 數據面默認的 Sidecar,更因為它是功能與性能都非常優秀的「雙優生」。此後在網易嚴選業務的實踐,驗證了這一選擇的正確性。
網格側,網易數帆認為,Istio + Envoy 對微服務流量和服務治理的良好抽象,帶來了統一服務化層技術棧的曙光。同時 Envoy 擁有不低於 Nginx 的轉發性能,但在治理能力和控制能力(UDPA)方面,卻比 Nginx 靈活得多。在網易嚴選當時的測試中,採用 eBPF/xDP(sockops),優化路徑為 SVC <-> Envoy,延遲性能提升10-20%。
詳見:
網易嚴選網關的升級,則考慮輕舟微服務體系的無縫融合以及主流的產品實現,同樣採用 Envoy 數據面組件,負責南北向數據流量的代理、路由、治理、遙測等;通過 filterchain 進行擴展,支援基於 Lua、C++ 語言編寫插件,WASM 落地後支援多語言方式擴展;並通過 xDS 與控制面組件進行配置下發等動態控制。控制面則以 Istio Pilot 作為基本控制面組件,同時提供 API 層、控制台供用戶或第三方平台接入。
基於輕舟 Envoy Gateway 網易嚴選實現了:
- 網關管理平台復用,保證用戶習慣一致性。
- LUA 插件復用,方便擴展功能的無縫遷移。
- 函數級別路由能力的支援,為後續 FaaS 的引流鋪平了道路。
經過大規模業務生產落地,網易數帆更加體會到 Envoy 的先天優勢,並堅信 Envoy Gateway 是雲原生業務流量入口的標準技術方案:
- 較 HAProxy、Nginx 更豐富的功能
- 與 Nginx 相當,遠高於傳統 API 網關的性能
- 動態管控能力強,具備數據面標準 xDS 協議
- 天然親和容器環境
- 多語言擴展沙箱——WASM
性能方面,在網易數帆的測試中,Envoy 的 TPS 可以達到 12W 左右,而基於 Nginx 的 Kong,TPS 為 5W 左右。
到 2020 年,輕舟 Envoy Gateway 在網易多個核心業務大規模落地:
- 網易傳媒(新聞)已經實現全站流量通過輕舟 Envoy Gateway 暴露
- 網易嚴選已經實現上雲服務全部流量通過輕舟 Envoy Gateway 暴露
- 網易有道、雲信、Lofter 等網易核心互聯網業務流量通過輕舟 Envoy Gateway 暴露
詳見:
Hango 開源,進入 CNCF Landscape
2021 年 8月,網易數帆開源了高性能、可擴展、功能豐富的雲原生 API 網關 Hango,並在之後再次從功能、性能、行業影響、技術趨勢和最佳實踐等方面全面解讀了 Envoy 技術路線的優勢,以及 Hango 的擴展設計和落地實踐。
簡而言之,Hango 數據面基於 Envoy 擴展,增強插件鏈,控制面基於 Istio 進行擴展,完成了微服務網關、七層負載均衡、Kubernetes Ingress 等多場景能力支援。如下是 Hango 網關插件鏈的數據流,通過創建 EnvoyPlugin CR,Slime 動態監聽聚合生成對應的 EnvoyFilter,完成對 Envoy filter chain 的動態擴展。
而 Hango 也獲得了雲原生從業者的認可,進入了 CNCF Landscape。
詳見:
展望未來,網易數帆致力於擴大輕舟雲原生體系「出圈」規模融入產業數字化,作為一個核心模組的輕舟 Envoy Gateway 也會加碼產業應用場景落地能力,如多集群高可用、協議轉換等金融場景剛需能力的增強。同時,輕舟 Envoy Gateway 的更多能力也會通過 Hango Gateway 開源出來。
持續貢獻,中國唯一 Maintainer 出爐
目前網易數帆輕舟團隊已累計向 Envoy 社區貢獻 60+ PR,超過 14,000+ 新增程式碼,覆蓋了 Envoy 的有狀態會話保持、Tracing 能力增強、Lua script 的支援和 Dubbo 治理能力增強等核心功能。
2022 年 3月 ,Envoy 社區邀請網易數帆雲原生專家、資深架構師王佰平成為社區 Maintainer——這是中國首位且唯一的 Envoy Maintainer,同時也是 Dubbo Extension Senior Maintainer,表明了社區對網易數帆持續貢獻的認可。
詳見:
Envoy Maintainer 助力解鎖 Envoy 新技能
在成為 Envoy Maintainer 之前,王佰平也積極通過文章、直播、線下分享的方式,多次解讀 Envoy 技術發展以及 Envoy Gateway 在內的相關實踐。
詳見:
- 網易數帆基於 Envoy 的雲原生網關實踐
- Envoy 架構及其在網易輕舟的落地實踐
- Envoy WASM 源碼抽絲剝繭
- Istio1.5 & Envoy 數據面 WASM 實踐
- Envoy-入門介紹與xDS協議
- Envoy-插件模型與插件配置
最後,歡迎讀者朋友踴躍參與 Envoy 和 Hango 社區,共創雲原生的未來。
-
Envoy Gateway 項目://github.com/envoyproxy/gateway
-
Hango 項目://github.com/hango-io/hango-gateway
2022 年 5 月 13 日至 6 月 15 日,Loggie 社區面向雲原生、可觀測性及日誌技術愛好者發起 Loggie Geek Camp 開源協作活動,以 「性能之巔,觀測由我」 為主題,讓參與者感受開源文化的精髓與開源社區的創造力,共創雲原生可觀測性的未來。包括提供 user case、捕捉 bug、完善和提交 feature 等四類任務,提交內容通過社區審核即為成功,表現優異者將可獲得網易數帆及 Loggie 社區表彰。歡迎訪問鏈接了解和參與://sf.163.com/loggie