服务网格成熟度不断提升,云原生环境下流量处理愈发重要, 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

在云原生技术体系建设中,网易数帆非常重视统一技术栈,认为这样才能降低研发成本,真正发挥云原生的优势。网格网关体系之所以选择 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 网易严选实现了:

  1. 网关管理平台复用,保证用户习惯一致性。
  2. LUA 插件复用,方便扩展功能的无缝迁移。
  3. 函数级别路由能力的支持,为后续 FaaS 的引流铺平了道路。

经过大规模业务生产落地,网易数帆更加体会到 Envoy 的先天优势,并坚信 Envoy Gateway 是云原生业务流量入口的标准技术方案:

  1. 较 HAProxy、Nginx 更丰富的功能
  2. 与 Nginx 相当,远高于传统 API 网关的性能
  3. 动态管控能力强,具备数据面标准 xDS 协议
  4. 天然亲和容器环境
  5. 多语言扩展沙箱——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 和 Hango 社区,共创云原生的未来。


2022 年 5 月 13 日至 6 月 15 日,Loggie 社区面向云原生、可观测性及日志技术爱好者发起 Loggie Geek Camp 开源协作活动,以 “性能之巅,观测由我” 为主题,让参与者感受开源文化的精髓与开源社区的创造力,共创云原生可观测性的未来。包括提供 user case、捕捉 bug、完善和提交 feature 等四类任务,提交内容通过社区审核即为成功,表现优异者将可获得网易数帆及 Loggie 社区表彰。欢迎访问链接了解和参与:https://sf.163.com/loggie

网易数帆 Envoy Gateway 实践之旅:坚守 6 年,峥嵘渐显的更多相关文章

  1. 性能1.84倍于Ceph!网易数帆Curve分布式存储开源

    在上周刚结束的网易数字+大会上 网易数帆宣布: 开源一款名为Curve的高性能分布式存储系统, 性能可达Ceph的1.84倍! 网易副总裁.网易杭州研究院执行院长兼网易数帆总经理汪源: 基础软件的能力 ...

  2. 大咖说|网易数帆论道 PolarDB 数据库开源 & 存储生态

    开源技术如何商业化?将遇到什么问题?有哪些可行的解决办法?本期大咖说,阿里云数据库开源战役负责人曲山将携手网易副总裁汪源与你分享关于开源商业化的思考. 嘉宾简介 网易副总裁.杭州研究院执行院长.网易数 ...

  3. TiDB 深度实践之旅--真实“踩坑”经历

    美团点评 TiDB 深度实践之旅(9000 字长文 / 真实“踩坑”经历) 4   PingCAP · 154 天前 · 3956 次点击 这是一个创建于 154 天前的主题,其中的信息可能已经有所发 ...

  4. 网易新闻App架构重构实践:DDD正走向流行

    网易新闻App架构重构实践:DDD正走向流行 https://mp.weixin.qq.com/s/FdwrT_xn3CQqpWoRVBttvQ 小智 InfoQ 2020-05-14 作者 | 小智 ...

  5. Nebula Graph 在网易游戏业务中的实践

    本文首发于 Nebula Graph Community 公众号 当游戏上知识图谱,网易游戏是如何应对大规模图数据的管理问题,Nebula Graph 又是如何帮助网易游戏落地游戏内复杂的图的业务呢? ...

  6. Kubernetes 在网易云中的落地优化实践

    本文来自网易云社区 今天我跟大家讲的是 Kubernetes 在网易的一些实践,目的是抛砖引玉,看看大家在这个方向有没有更好的实践方法.简单介绍一下网易云.网易云是从最早 Kubernetes 1.0 ...

  7. 微服务网关Gateway实践总结

    有多少请求,被网关截胡: 一.Gateway简介 微服务架构中,网关服务通常提供动态路由,以及流量控制与请求识别等核心能力,在之前的篇幅中有说过Zuul组件的使用流程,但是当下Gateway组件是更常 ...

  8. Nacos整合Spring Cloud Gateway实践

    Spring Cloud Gateway官网:http://spring.io/projects/spring-cloud-gateway Eureka1.0的问题和Nacos对比:https://w ...

  9. Nuget Server的搭建及实践之旅

    一. 背景 在做的一个项目使用的是Asp.Net MVC,由于缺少规范与约束,团队成员在使用类库各自为政,时常出现路径和版本不一致的问题.在一个同事建议下,开始尝试使用Nuget 管理项目或公司使用的 ...

随机推荐

  1. HCNP Routing&Switching之组播技术-组播路由协议PIM

    前文我们了解了组播技术中组播分发树相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16019334.html:今天我们来聊一聊组播路由协议PIM相关话题 ...

  2. 论文阅读-Temporal Phenotyping from Longitudinal Electronic Health Records: A Graph Based Framework

  3. Bitmap图片的处理

      一.View转换为Bitmap 在Android中所有的控件都是View的直接子类或者间接子类,通过它们可以组成丰富的UI界面.在窗口显示的时候Android会把这些控件都加载到内存中,形成一个以 ...

  4. 数据库查询中where和having的用法

    1.类型: "baiWhere"是一个约束声明,在查询数据库du的结果返回之前对数据库中zhi的查询条件进行约束dao,即在结果返回之前起作用,且where后面不能使用" ...

  5. SpringMVC异常(404,接收参数类型转换错误)

    内容 一.异常信息 HTTP Status 400 - type Status report message description The request sent by the client wa ...

  6. 虚拟机上 安装 CentoOS 7.5 1804 过程记录

    1.准备安装镜像 在开始安装CentOS之前,必须下载安装ISO映像.镜像可从CentOS网站https://www.centos.org/download/.提供以下基本类型的镜像: DVD ISO ...

  7. 深入理解nodejs的异步IO与事件模块机制

    node为什么要使用异步I/O 异步I/O的技术方案:轮询技术 node的异步I/O nodejs事件环 一.node为什么要使用异步I/O 异步最先诞生于操作系统的底层,在底层系统中,异步通过信号量 ...

  8. 基于Yeoman实现自定义脚手架

    什么是脚手架? Yeoman是什么? 实现自定义脚手架 基于Yeoman实现Vue-cli 一.什么是脚手架? 手脚架从功能上来讲就是创建项目初始文件,这其中包括生成功能模块配置.自动安装依赖.自动生 ...

  9. Linux安装Redis步骤和make遇到的坑

    Linux安装Redis服务步骤 1.获取redis资源 ​​​​​​​cd /usr/local wget https://mirrors.huaweicloud.com/redis/redis-6 ...

  10. Educational Codeforces Round 121 (Rated for Div. 2)——A - Equidistant Letters

    A - Equidistant Letters 题源:https://codeforces.com/contest/1626/problem/A 今天上午VP了这场CF,很遗憾的是一道题也没写出来,原 ...