受邀成为 Envoy 社区国内首位且唯一的 Maintainer,网易数帆资深架构师王佰平讲述个人四年开源贡献的心得体会。

数字化浪潮下,云原生底层核心技术趋于成熟。根据中国信通院《云计算白皮书(2021年》,2020年国内微服务架构采用率超过50%,服务注册发现与服务代理技术已进入成熟期,而作为新一代微服务架构的服务网格(Service Mesh),也即将从技术爆发期进入整合期。

网易数帆是国内云原生应用的先行者,率先实现了经典微服务框架与服务网格的整合、服务网格与 API 网关的整合,更实现了云原生架构与金融、制造等传统行业需求的整合,这些整合也获得了中国信通院以及银行、证券行业头部客户的认可。在这结果的背后,是云原生社区技术和生态不断成熟,更是网易数帆云原生团队坚持参与开源社区贡献。

本文所说的 Envoy,是云原生计算基金会(CNCF)第三个毕业项目,也是网易数帆轻舟服务网格及 API 网关的数据面选型,和重点贡献项目之一。目前轻舟团队已累计向 Envoy 社区贡献 60+ PR,超过 14000+ 新增代码,覆盖了 Envoy 的有状态会话保持、Tracing 能力增强、Lua script 的支持和 Dubbo 治理能力增强等核心功能。

Envoy(github.com/envoyproxy/envoy )是由 Lyft 开源的高性能数据和服务代理,以可观测性和高扩展性著称,可通过 L3/L4/L7 插件机制在各个层级实现功能扩展,从而为业务构建灵活易扩展、稳定高性能的服务网格、API 网关等基础设施。

近日,Envoy 社区邀请网易数帆云原生专家、资深架构师王佰平成为社区 Maintainer——这是国内首位且唯一的 Envoy Maintainer,同时也是 Dubbo Extension Senior Maintainer,表明了社区对网易数帆持续贡献的认可。在本文中,小编邀请王佰平分享了他从参与开源到成长为知名项目 Maintainer 的经验心得。

初识 Envoy:贡献始于 bugfix

2019 年,网易对服务网格技术应用的探索到了一个新阶段,网易数帆与网易严选基于 Istio 共建的第二代服务网格平台逐步成型,王佰平在这个时候加入网易数帆,从事和数据面 Envoy 相关的工作。秉承网易数帆坚持开源开放的技术路线,王佰平从那个时候起关注 Envoy 社区的一些动态。

此后,在轻舟微服务平台采用 Envoy 落地 API 网关、服务网格的过程中,王佰平偶然间发现了 Envoy 的一些小 bug ,就尝试把这些 bug 的修复贡献给 Envoy 开源社区,意料之中地被社区立即接受,这成为他 Envoy 开源贡献的良好开端。

高频贡献:缩减内部分支维护成本

随着网易数帆云原生实践的不断深入,轻舟微服务团队对 Envoy 的侵入性修改越来越多,维护内部单独的 Envoy 分支的成本也逐渐增加。为了避免后续和社区的分歧越来越大,也为了更好的借助社区的力量往后演进,团队开始投入较多的精力到开源社区当中,将内部的一些增强抽象化、通用化之后,贡献到开源社区。

整个过程下来,一方面,轻舟微服务团队的技术积累和对 Envoy 的理解程度提升了很多。因为社区有来自全球不同地区、风格习惯各异的贡献者,为了保证工程的长期健康,除了功能的完善,各种编码的约束和规范也细致得多,所以贡献给 Envoy 社区的代码,编写要更为小心谨慎,要求非常高,当然在此过程中也会获得很多社区大佬的帮助。另一方面,Envoy 社区也获得了更多有生力量的支撑,轻舟团队的贡献使得 Envoy 项目的优势得以充分发挥,也更适合国内大量 Dubbo 用户的需求。

“这是一个 win-win 的过程。”王佰平说。

成为 Maintainer:团队支持最关键

2021年,在网易集团的引导和鼓励下,网易数帆自主开源工作迎来了一个小高潮:一方面,在云原生领域一口气开源了4个项目,包括基于 Istio 和 Envoy 的服务网格管理器 Slime(github.com/slime-io/slime )和云原生 API 网关 Hango(github.com/hango-io/hango-gateway );另一方面,作为 Spark 生态的 Kyuubi 项目被纳入 Apache 基金会孵化器,Spark 和 Kyuubi 的负责人燕青成为 Apache Spark Committer,并入选 Databricks 灯塔。这些成果获得了管理层的肯定。

在这背景下,王佰平也立下了一个小小的 flag——希望能在 2022 年成为 Envoy 社区 Maintainer。一方面,他向社区说明了自身成为 Maintainer 意愿。另一方面,除了创建 PR 向社区贡献之外,他开始在自己较为熟悉的领域做一些 PR review,帮助其他的贡献者完成他们的 PR。“开源社区其实很纯粹简单的。”他说。

付出终有收获,王佰平提前 8 个月达成了目标。谈到自己的感受,他这样说:

在成为 Maintainer 之前,我曾想过如果能成为 Maintainer,一定能给我乐疯了。实际上,高兴确实是高兴的,可是也没有那么激动,只是一种自己付出得到承认的舒心感。

对于 Envoy Maintainer 的角色,他表示,之前之后所做的事情其实差别并不大,包括日常的社区的相关 PR 的一些 review,问题解答,引导新人,做一些新的贡献。当然,责任是更重了一些。因为之前做 PR review、做贡献其实都是非强制的,而成为 Maintainer 之后,就有了相关的义务。

回顾之所以能成为 Envoy Maintainer,王佰平给出了三个关键因素:

第一个,是团队的支持。团队给予的角色定位让他有更多的机会去深入的研究 Envoy,也给了他充分的自由去投入到开源社区。这也是最关键的因素。

第二个,是持之以恒。做开源贡献是很需要耐心的。有时候,因为 reviewer 很忙,可能一个 PR 要挂在那里十几天,要适应这种节奏。

第三个,是 Envoy 社区提供了巨大的帮助,有很多大佬仔细地帮忙 review 方案和 PR,给出修改建议。

谈到为什么国内的 Envoy Maintainer 如此稀少,而 Istio 社区有更多的关注度和国内 Maintainer,王佰平认为这是一件很正常的事情。

他解释说,虽然服务网格很火,但是目前多数团队对于数据面 Envoy 还是停留在“使用”的阶段——Envoy 设计复杂,且采用 C++ 编写,性能更有保证,但在人均 Golang 的云原生社区颇显另类,较难驾驭,而借助 Service Mesh 或者说 Istio(国内 Mesh 基本就等价于 Istio 了)的封装,大家不用太关注 Envoy 的细节。这其实也是 Istio 存在的很重要的意义。

不过,他也希望后面会有越来越多的国人能够参与到 Envoy 社区当中。根据网易数帆的经验,Envoy 在更多业务的深度实践,必然对技术团队的 Envoy 关键基础组件掌握能力提出更高要求,如此才能保证团队对项目的理解和有效控制,保持云原生落地过程中微服务平台对业务需求的强力支撑。比如在一些金融领域场景中,就会存在私有协议代理或者复杂协议转换等需求,团队如果对数据面没有足够的把控,就很难覆盖此类需求。而参与开源社区显然是学习和掌握 Envoy 最快的方法。

开源心得:不要羞涩,多 ping 几次就好

对于参与开源社区贡献,王佰平总结了三个普遍的原则。

一是要保持谦虚。因为技术领域真的是人外有人,天外有天。而谦虚真诚的态度更容易获得他人的帮助。

二是要持续学习。在一个大开源社区当中,由于模块众多,领域划分很细,所以一个人很难一开始就能 cover 所有问题。这就需要参与者保持持续学习的精神,取长补短,逐步成长。

三是要遵守规则。任何开源社区都有一些基本的规范,作为社区的后来参与者,应该尊重社区前人构筑的规范。

这些原则可以在参与社区的过程中慢慢体悟。王佰平认为,最重要的其实还是第一步,就是主动去参与。

提出 issue 和建议也好,辅助代码 review 也好,做最简单的一些贡献也好,千里之行,迈出第一步是最重要的。

以 Envoy 而言,社区对新人还是非常友好的,大家会非常热情地提供新人需要的帮助。当然,考虑到很多社区成员不是全职做开源,Envoy 是国外团队发起的项目,交流时间不同步是正常的,所以可能有一些延迟响应的情况。“不要羞涩,多 ping 几次就好了。”王佰平说。

那么,非全职参与开源的情况下,商业化客户项目工作繁重,如何能做出想要的成绩?对此,王佰平的答案仍然是要迈出第一步并坚持。

他表示,首先,作为商业化团队,保障客户项目任务始终是第一位的。其次,假设项目任务当中,可以汲取出对于开源有价值的一些点,那是最好的。再者,相比于突击式开源,细水长流,持之以恒,可能更有价值。最后,万事开头难,虽然中间也难,结尾也难,但是开头尤其难,先走出第一步,然后坚持下去,加上适当的宣传,会有一个好结果的。

谈到团队自身开源的项目,王佰平表示,希望 Slime 能够成为服务网格落地的必不可少的标配组件,希望 Hango 可以成为开源云原生网关领域的领头羊。当然,目前这些项目在开源领域还是新人,还需要沉淀和积累更多的东西,也需要更多的来自用户和社区本身的意见。

他也意识到, Envoy 这样的项目很可能是不可复制的。

对于我个人来说,我们的开源项目只要能够为一部分用户或者社区成员带来价值,同时能够给团队带来正向反馈,那就算是成功了,路可以慢慢走嘛。

权威机构和头部客户的认可,以及 Envoy 社区的承认,让团队相信,自己是走在正确的道路上的。

嘉宾简介: 王佰平,网易数帆云原生专家、资深架构师,CNCF Envoy Maintainer,Hango/Slime Maintainer ,轻舟 API 网关与轻舟服务网格数据面负责人,通晓网关、负载均衡、服务网格等分布式技术原理,熟悉 Envoy 和 Istio,对于 API 网关、服务网格落地具有丰富的经验。

相关链接:

  • IstioCon 2022,网易数帆六年优化经验即将揭秘
  • Hango Rider:网易数帆开源 Envoy 企业级自定义扩展框架
  • Envoy 架构及其在网易数帆的落地实践
  • 网易数帆基于 Envoy 的云原生网关实践
  • 如何基于开源Envoy,构建高性能云原生微服务网关
  • Hango 开源解读:云原生网关实践,为何要选择 Envoy ?
  • 云原生API网关 - 开源项目Hango网关设计与实践
  • 网易开源 Slime:让 Istio 服务网格变得更加高效与智能
  • Istio1.5 & Envoy 数据面 WASM 实践
  • Envoy 项目地址:https://github.com/envoyproxy/envoy
  • Slime 项目地址:https://github.com/slime-io/slime
  • Hango 项目地址:https://github.com/hango-io/hango-gateway

网易数帆王佰平:我的 Envoy Maintainer 之路相关推荐

  1. 网易数帆 Envoy Gateway 实践之旅:坚守 6 年,峥嵘渐显

    服务网格成熟度不断提升,云原生环境下流量处理愈发重要, Envoy Gateway 项目于近日宣布开源,"旨在大幅降低将 Envoy 作为 API 网关的使用门槛",引发了业界关注 ...

  2. 网易数帆基于 Envoy 的云原生网关实践

    本文根据 InfoQ 公开课<如何基于开源Envoy,构建高性能云原生微服务网关>整理,有删减. 简介:Envoy 是由 Lyft 开源的高性能网络代理软件.相比于 Nginx.HAPro ...

  3. Service Mesh Summit | 无侵入增强 Istio,网易数帆践行这三条原则

    在云原生社区近日主办的 Service Mesh Summit 2022 服务网格峰会上,网易数帆云原生技术专家方志恒分享了轻舟服务网格无侵入增强 Istio 的经验,本文据此次分享整理,介绍了对无侵 ...

  4. 网易数帆开源iSCSI服务器tgt独门优化,彻底解决性能问题

    iSCSI是现代企业级存储系统中的一项重要技术, 开源iSCSI 服务器tgt存在单线程性能问题,而相关的优化补丁效果参差不齐,尚未真正解决问题,本文介绍网易数帆存储团队如何通过一系列独特的创新实现t ...

  5. 网易数帆基础软件平台获2020南京软博会年度创新产品奖

    2020第十六届中国(南京)国际软件产品和信息服务交易博览会(以下简称南京软博会)顺利拉开帷幕,以"数字经济 智创未来"为主题,重点展示工业互联网.云计算.5G.人工智能等数字经济 ...

  6. 网易数帆Curve加入PolarDB开源数据库社区

    简介:Curve社区签署阿里巴巴开源CLA(Contribution License Agreement, 贡献许可协议), 正式与阿里云PolarDB 开源数据库社区牵手. Curve社区签署阿里巴 ...

  7. 网易数帆发布轻舟低代码平台2.0,聚焦中等复杂度企业级应用

    编辑 | 宋 慧 出品 | CSDN云计算 头图 | 轻舟低代码平台2.0发布会现场 8月26日,网易数帆正式发布轻舟低代码应用开发平台2.0版本(以下简称"轻舟低代码平台"),以 ...

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

    作者 | 陈利鑫 头图 | CSDN 下载自东方 IC 出品 | CSDN(ID:CSDNnews) 也许是厂家+"云"的后缀会让人产生这些厂商都是竞争关系的错觉,网易云最近宣布品 ...

  9. 基于OpenStack Ironic与DPU的网易数帆裸金属方案实践

    背景 目前,所有号称性能损耗小的VM技术,实际上都会有5-15%甚至更高的损耗.作为替代方案,如Gartner在2015年发布的报告"Market Trends: The Rise of B ...

  10. 网易数帆云原生故障诊断系统实践与思考

    Kubernetes 是一个生产级的容器编排引擎,但是 Kubernetes 仍然存在系统复杂.故障诊断成本高等问题.网易数帆旗下轻舟云原生团队在近几年的稳定性保障工作中累计了不少生产实践的经验,我们 ...

最新文章

  1. mysql innodb 从 ibd 文件恢复表数据
  2. 实例分析JAVA CLASS的文件结构
  3. Effective C++: noexcept
  4. 函数计算 【题目描述】
  5. 分治法【锦标赛问题:设计一个满足以下要求的比赛日程表: (1)每个选手必须与其他n-1个选手各赛一次; (2)每个选手一天只能赛一次; (3)循环赛一共进行n-1天。】
  6. 146. LRU缓存机制
  7. 2021-10-28嵌入式人工智能
  8. Android的清单文件添加百度地图SDK
  9. 提高网站打开速度的18点要素和五点建议
  10. 简历javaweb项目描述怎么写_java web软件工程师个人简历
  11. 如何准确的定级_等保三级与等保二级
  12. 【网络基础】以太网电缆:UTP和STP,直连线和交叉线,网线类别
  13. python ccf题解 201903-2 二十四点
  14. 传世调试之-道士技能《解毒术》、《神光术》:无法正常升级。
  15. 电脑图片打不开并且显示没有注册类怎么办?
  16. 4个公认高用的OCR文字识别网站,免费高效率!
  17. 吃饭,睡觉,打豆豆喽~~
  18. 获取mp3部分信息的python代码
  19. 海蜘蛛软路由linux安装教程,软路由安装设置教程【详细步骤】-太平洋IT百科
  20. Amigo 源码解读

热门文章

  1. 资深 iOS 开发工程师教你5 道题全面考察候选人
  2. win7如何修改html图标,Win7如何更改软件图标?Win7更改软件图标的方法
  3. iOS 此应用需要开发者更新以在此ios版本上运行
  4. srs源码分析2-浅析state_threads
  5. win10商店的应用下载移植 注:.appx文件最好在win10使用 附win10商店UWP的安装包
  6. java 碳架山地车寿命_关于自行车的4大“谣言” 铝合金车架寿命只有五年
  7. 连续均匀聚苯乙烯纳米微球造孔剂/氨基化聚苯乙烯微球/羧基功能化马来酸酉干(MA)聚苯乙烯微球
  8. 达人篇:3.1.3)FAI 首件检验
  9. c++滑动窗口leetcode3\567
  10. 生活四大勤,让老人延年益寿