网易数帆 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。
详见:
展望未来,网易数帆致力于扩大轻舟云原生体系“出圈”规模融入产业数字化,作为一个核心模块的轻舟 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