網易數帆 Envoy Gateway 實踐之旅:堅守 6 年,崢嶸漸顯
服務網格成熟度不斷提升,雲原生環境下流量處理愈發重要, 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 專案:https://github.com/envoyproxy/gateway
- Hango 專案:https://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。
詳見:
- Hango 開源解讀:雲原生閘道器實踐,為何要選擇 Envoy ?
- 雲原生API閘道器 - 開源專案Hango閘道器設計與實踐
- Hango Rider:網易數帆開源 Envoy 企業級自定義擴充套件框架
展望未來,網易數帆致力於擴大輕舟雲原生體系“出圈”規模融入產業數字化,作為一個核心模組的輕舟 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 專案:https://github.com/envoyproxy/gateway
2022 年 5 月 13 日至 6 月 15 日,Loggie 社群面向雲原生、可觀測性及日誌技術愛好者發起 Loggie Geek Camp 開源協作活動,以 “效能之巔,觀測由我” 為主題,讓參與者感受開源文化的精髓與開源社群的創造力,共創雲原生可觀測性的未來。包括提供 user case、捕捉 bug、完善和提交 feature 等四類任務,提交內容通過社群稽核即為成功,表現優異者將可獲得網易數帆及 Loggie 社群表彰。歡迎訪問連結瞭解和參與:https://sf.163.com/loggie