说在后面
在扬帆破浪的 2022 年里,有一批可恶的数帆共事在工作中、工作外凭酷爱发光发热。
一个个小故事背地,呈现出他们在数字化技术与利用实际中,步履不停的摸索和开拓进取的力量。
明天是「破浪人」栏目第 2 期。
受邀成为 Envoy 社区国内首位且惟一的 Maintainer,网易数帆资深架构师王佰平 讲述集体四年开源奉献的心得体会。
Envoy Maintainer 是 Envoy 我的项目多个技术畛域的 owner,负责这些畛域的倒退方向、品质保障等,是我的项目的核心人物,须要具备高度的责任心和足够的技术敏感度。
嘉宾简介:王佰平,网易数帆云原生专家、资深架构师,CNCF Envoy Maintainer,Hango/Slime Maintainer,轻舟 API 网关与轻舟服务网格数据面负责人,精通网关、负载平衡、服务网格等分布式技术原理,相熟 Envoy 和 Istio,对于 API 网关、服务网格落地具备丰盛的教训。
王佰平获评截图
数字化浪潮下,云原生底层核心技术趋于成熟。依据中国信通院《云计算白皮书(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 社区的抵赖,让团队置信,本人是走在正确的路线上的。
相干链接:
网易开源 Envoy 企业级自定义扩大框架 Hango Rider 简介
Envoy 架构及其在网易数帆的落地实际
网易数帆基于 Envoy 的云原生网关实际
如何基于开源 Envoy,构建高性能云原生微服务网关
Hango 开源解读:云原生网关实际,为何要抉择 Envoy?
云原生 API 网关 – 开源我的项目 Hango 网关设计与实际
网易开源 Slime:让 Istio 服务网格变得更加高效与智能
Istio1.5 & Envoy 数据面 WASM 实际
Envoy 我的项目地址:https://github.com/envoyproxy…
Slime 我的项目地址:https://github.com/slime-io/s…
Hango 我的项目地址:https://github.com/hango-io/h…