日前,字节跳动技能社区 ByteTech 举行的第七期字节跳动技能沙龙圆满闭幕,本期沙龙以《字节高功能开源微服务结构:CloudWeGo》为主题。在沙龙中,字节跳动 CloudWeGo 开源(社区)运营担任人邓逸云,跟咱们共享了《开源社区的长时间主义与新改变 — CloudWeGo 开源社区实践》,本文依据共享整理而成。
本文将从以下三个方面介绍 CloudWeGo 开源一年以来社区的改变和咱们一向坚持的长时间主义:
CloudWeGo 开源一周年的改变;
新一代云原生微服务用户画像;
继续演进的 CloudWeGo 开源社区。
1. 概述
CloudWeGo 开源一周年以来收成了超越 1w 的 star 数,这一年 CloudWeGo 从项目的数量、功能的进步、社区的活泼、生态的拓宽等各个方面都有一些全体的改变。一起,经过一周年的开源,咱们收成了十分多的开源社区用户,这些用户在社区里也供给了许多项目的运用反应。依据这些反应,咱们发现随着技能开展和用户事务的不断迭代,用户需求也在发生着改变。因而咱们梳理了新一代关于云原生微服务用户的画像,作为辅导咱们社区继续演进的重要参阅。
2. CloudWeGo 开源一周年的改变
2.1 全景图
CloudWeGo 是一套由字节跳动开源的云原生微服务架构中心件调集。在 2021 年 9 月正式推出的时分,只开源了 Kitex 高功能 RPC 结构、高功能网络库 Netpoll,还有相关的辅助东西和基础库。
经过一年的建造,CloudWeGo 社区现在有 11 个重点项目齐头并进。咱们不只有 Kitex 结构,还有依据 HTTP 相关的高功能结构 Hertz,一起开源了高功能的 Rust RPC 结构 Volo,这也是国内首个开源 Rust RPC 结构。
从 CloudWeGo 开源的项目也能感遭到咱们对功能的极致寻求,咱们不只开源了结构相关的项目,一起也把深度优化的一些编解码库、网络库都进行了开源。在 CloudWeGo 全体的项目中,始终都坚持着三高的特性,即高功能、高牢靠性和高扩展性。
与此一起,这一年咱们也在致力于开源社区的建造:
- 易用性
CloudWeGo 十分重视整个项目的易用性建造。咱们有十分完好的官方文档系统,包括全体的扩展和 Example 的建造,以及各大云厂商生态的对接等。
- 落地支撑
为了协助更多对高功能微服务架构有需求的用户,能够让他们实在地把高功能的技能处理计划落地,咱们供给了 Benchmark 的功能测验和选型参阅,一起供给免费的企业支撑,协助用户处理自己事务特异性上的一些问题。
- 活动 & 布道
为了让更多有需求的用户能够在社区找到高功能技能处理计划,咱们开设了相关的活动和布道系统的建造。在 CloudWeGo 开源一周年之际,项目全体收成了许多用户支撑,也收成了许多企业用户的运用反应。
2.2CloudWeGo开源社区的长时间主义
2.2.1 高功能技能处理计划的继续探究
CloudWeGo 开源一周年的进程,其实便是对高功能技能处理计划继续探究的进程。
- CloudWeGo 从 2021 年 9 月 8 日正式开源。推出高功能的 RPC 结构 Kitex、协作 Kitex 运用的高功能网络库 Netpoll、依据 Thrift 代码生成东西 Thriftgo 和基础库 Sonic。
- 2022 年 5 月,开源了依据 JIT 的编解码东西 Frugal。Kitex 协作 Frugal 的运用,能够带来 5 倍的功能进步。
- 2022 年 6 月,开源高功能 HTTP 结构 Hertz。Hertz 不只仅是一个 高功能的HTTP 的开源结构,一起也是一个超大规模的企业落地实践。在咱们内部的网关场景下,替换 Hertz 结构之后的 CPU 运用节省了超越 40%。
- 2022 年 7 月,咱们响应社区呼声最高的关于 Protobuf 的功能优化,带来了高功能的 Protobuf 序列化反序列化库 FastPB,再次对相关的功能进行进步。
- 开源一周年之际,咱们又进行了更深度的高功能结构才能探究,开源了国内首个 Rust RPC 结构 Volo。
CloudWeGo 开源一周年的时间线,隐藏着 CloudWeGo 社区运营的第一个长时间主义关键词:高功能技能处理计划的继续探究。
2.2.2 活泼 & 高牢靠性的长时间许诺
CloudWeGo 开源一年来,收成了超越 1w 的 star 数,整个社区的活泼度也有了飞速进步。
社区坚持着 2-3 个月发布一次中版本的发版频率,PR 和 Issue 数量在开源一年的时间内完成稳步进步,从每月 47 条 PR 合入增加到每月超越 160 条 PR 合入。
其实高活泼的社区并不少见,可是咱们社区还有一个关键词:坚持活泼 & 高牢靠性的长时间许诺。CloudWeGo 社区对牢靠性的坚持,要求咱们不只要保持活泼,还要坚持活泼且牢靠。
CloudWeGo 开源社区一向坚持着咱们一切的开源项目表里一致的许诺,一起咱们开源到外部的一切才能和项目都是在内部经过牢靠性验证的。这也正是 CloudWeGo 开源社区坚持的另一个长时间主义。
2.2.3 高易用性规划
咱们十分期望 CloudWeGo 开源出来的高功能技能处理计划,能够更好地协助更多用户树立自己的微服务架构系统。因而,CloudWeGo 在社区建造上围绕着易用性建造做了十分多的拓宽:
- CloudWeGo文档建造
首先,在文档建造方面,CloudWeGo 官网上线了近 3 万字较为完善的文档系统。内容掩盖从 1 分钟快速上手,到各个相关模块的基本特性介绍,再到一些拓宽才能的建造。
其次,咱们为了达到实在的开箱即用,节省用户对接各个扩展项目的运用本钱,上线了 Kitex 和 Hertz 相关的 Example,帮忙建造了相关从注册发现,到各个中心件运用的一些开箱即用的 Demo。
别的,为了进步更多开发者的运用体验,官网也上线了静态文档的查找才能。
- CloudWeGo生态建造
想在内部构建一套完好的云原生微服务架构系统,仅仅运用 CloudWeGo 的一个结构项目,是远远不够的。因而,CloudWeGo 在易用性方面大力拓宽相关的生态建造。
1.CloudWeGo 在 2021 年参加 CNCF Landscape,期望给用户一个更加清晰的产品定位。一起,支撑对接各大云厂商,为 CloudWeGo 项目的用户供给更多公有云的运用挑选。
2.为协助咱们减少相关的运用本钱,咱们十分积极地和上下游的开源项目进行深度协作,建造了一整套微服务开源供应链的协作系统,树立了 CloudWeGo 结构对接各个项目的相关 Demo 和开箱即用的 Example。
3.从考虑未来开展的角度而言,当企业落地了一整套微服务架构之后,或许会存在易用性或功能方面的问题。当呈现更好的技能处理和功能进步计划,依据原有架构的耦合和复杂度,很难推进新的架构进行全体的迭代。因而,咱们也十分积极地在推进建造云原生微服务办理的全体规范。期望更多的项目,能够构成统一的接入和对接的规范,从而在未来的一些新的、更高功能的技能处理计划的搬迁和过渡上,能够让搬迁和运用本钱降到最低。
- CloudWeGo的开发者活动
CloudWeGo 项目包括整个社区都对高功能有十分火热的寻求。因而,咱们也在不断地迭代。
CloudWeGo 一向在不断寻求高功能结构以及高功能技能处理最新计划。每次上线新的技能处理计划和一些相关才能之后,咱们都期望让更多的用户知道这些计划是怎样的,让用户能够更快捷地学习到一些相关的技能攻略。
因而,咱们针对性地规划了 CloudWeGo Study Group 学习计划,这是为了将一些全新的功能处理计划进行系统化的学习共享,即经过一些相似于从结构入门到中心才能的解读、再到一些学习途径的共享以及扩展知识的相关介绍对外开放给社区。
咱们会供给一份完好的学习资料,下降用户学习新的技能处理计划的本钱,也能够让用户了解到自己的学习是否合适其事务场景。在整个学习和运用的过程中,下降终究学习的时长,经过系统化的学习更快地理解技能计划的功能亮点和需求学习的相关点。
2.2.4 小结
CloudWeGo 开源社区坚持的长时间主义:
2.3CloudWeGo的用户
依据开源社区长时间主义的坚持,CloudWeGo 自 2021 年 9 月开源,至今开源 1 年,取得超越 1w star,支撑完成了证券、电商、中台、交际、游戏、AI 等职业企业客户的落地运用。
2.4CloudWeGo的奉献者
在活泼的社区氛围下,咱们收成了从开端刚开源只有 20 个内部奉献者,到现在现已有了超越 200 个代码奉献者。这些奉献者在深度运用了 CloudWeGo 开源项目之后,也为 CloudWeGo 开源项目奉献了许多生态方面相关对接才能。
2.4.1 奉献者系统更新
依据越来越多的奉献者在咱们的开源社区里做了许多深度奉献,CloudWeGo 开源社区在一周年的周年庆之际,推出全新的奉献者鼓励系统。
咱们新增开放了三个人物系统,期望经过这种完善的人物机制,赋予社区开发者更多的社区办理权限。一起咱们也鼓舞更多的奉献者能够成为项目的保护者,期望长时间的保护者能够实在带领咱们的项目继续进行高功能的优化和相关的演进。
2.4.2 奉献者多样化
在开源项目的运营和保护中,包括开源社区的建造,不只仅是依靠代码奉献者的参加,还有许多其他方面的奉献,其间包括企业支撑场景的奉献、布道活动的奉献、全体活动安排的奉献等多元参加。这些奉献者在 CloudWeGo 社区也是被大力支撑的,因而咱们专门针对多元奉献上线了 CloudWeGo 年度鼓励计划。
社区在 8 月份刚刚完成了 2021 – 2022 年度 CloudWeGo Awesome Contributor 的评选,咱们十分侥幸地收成了 84 位年度优异奉献者。在完成了社区的提名与公示后,这些同学现已顺利成为了 CloudWeGo 年度优异奉献者,之后咱们会为这些优异奉献者送上 CloudWeGo 一周年的荣誉留念徽章。
2.5CloudWeGo社区遇到的问题
正是由于社区较高的活泼度以及众多奉献者的参加,许多用户参加了 CloudWeGo 社区。咱们逐步发现用户的运用场景开端渐渐发生了拓宽。从开端或许仅仅想了解一下微服务的结构、单独的一个项目怎么去落地和运用,到后来渐渐变成探究一整套微服务架构的规划,以及多个项目之间的实践协作和相关生态才能的建造。
这些其实是十分系统化、大规模的需求,因而咱们联合一些企业用户进行了相关场景的实践奉献。CloudWeGo 之前支撑了包括证券、电商、AI 和各个职业用户场景落地,咱们也和这些企业用户进行了相关场景的梳理。
2.6CloudWeGo的企业用户奉献
2.6.1 华兴证券
事例链接:www.cloudwego.io/zh/cooperat…
华兴证券的张天教师团队向社区奉献了来自证券职业运用 Kitex 完成混合云布置下跨机房运用场景的事例。
咱们在跟张天教师团队协作的时分发现,他们遇到的最大的问题是有的事务布置在金融云机房上,有的事务布置在私有机房上,所以存在跨机房调用的问题。由于他们运用 K8s 集群,还会呈现同集群调用和跨集群调用的问题。整个调用的链路十分长,这中心就会呈现许多不可观测的问题,当呈现问题的时分,排查难度就极其大。
所以张天教师团队在和 CloudWeGo 协作之后,全体树立了一个Kitex+K8s的可观测性系统,也将相关的树立实践奉献到了开源社区。感兴趣的同学能够经过 CloudWeGo 大众号检查相关的企业事例和终究的实践场景。
2.6.2 森马
事例链接:www.cloudwego.io/zh/cooperat…
CloudWeGo 和森马一起梳理了与电商职业相关的一个全体运用场景。十分感谢森马团队,奉献了电商职业运用 Kitex 接入 Istio,以进步对高并发订单处理才能的运用场景。
森马团队还奉献了依据微服务架构的两种方法,为有相关高功能事务需求的用户供给了服务网格+Kitex办理方法相关的选型依据,并且给出了相关的压测陈述,也给社区有相同需求的小伙伴供给重要参阅。
2.6.3 飞书
事例链接:www.cloudwego.io/zh/cooperat…
Hertz 开源后,许多用户会问到内部网关渠道架构的规划思路,包括内部网关渠道怎么协作 Hertz 全体运用?
飞书之前是一个 all-in-one 的套件开发方法,各个事务团队会将事务代码提交到飞书网关渠道的代码仓里面,由飞书网关相关的同学来做 web 逻辑的开发。这就导致他们一切的服务都是融在一起的,没有办法做到发布隔离,极大地阻碍了网关渠道架构的演进和迭代速度。
因而,飞书团队将前端 Node 单体服务做了微前端架构拆分,协作 Kitex 泛化调用各个事务的微服务,完成了各个事务发布彻底隔离,这使得他们不再依靠网关渠道的事务开发,进而加快了整个网关事务迭代的速度。
2.7来自社区的用户具体问题
咱们十分感谢企业用户奉献的相关问题,CloudWeGo 协作企业用户的场景事例也取得了社区用户的众多好评。与此一起,有更多的用户也提出了新的问题,这些问题十分具体。
经过总结发现,这些问题具有显著的事务特异性。咱们也很好奇这些用户在内部到底是怎么树立其微服务系统的?
因而咱们开端梳理 CloudWeGo 开源社区的云原生微服务用户画像。
3.新一代云原生微服务用户画像
咱们将社区的用户大概分成了三种类型:
- 字节跳动
字节跳动是咱们现在最大的用户。字节跳动的线上微服务数量现已超越了 10 万,服务端峰值 QPS 现已达到了数亿的等级,事务复杂性十分大,存在跨言语、跨渠道、跨终端、跨集群、跨机房等多种复杂的问题。
一起字节跳动内部有十分完善的微服务架构系统,全体的微服务办理现已全面迈入了 2.0 的年代,用微服务结构协作服务网格携手并进。
在这个场景之下,字节跳动最大的需求便是高功能和可扩展性,这也是 CloudWeGo 作为字节跳动内部孵化的一个优异的高功能技能处理计划开端开源时所具有的特性。
- 处于转型期的用户
社区里数量最大的集体,这些用户或许是电商的、证券的、后台的以及一些创业公司,他们的节点数量不是特别多,或许在 5-1000 以内,线上微服务数量处于 5000 以内的水平,但这些用户或许本身便是云原生架构,或者现已在往这方面做一些相关的搬迁。
这类用户在 CloudWeGo 开源社区的诉求,主要是针对事务的特异性方面存在高功能相关的需求。
- 非云原生架构企业用户
这一类用户归于非云原生架构的企业,他们的服务或许还没有彻底云化,具有必定的历史搬迁担负。这类用户着重会优先考虑怎么将自己的服务搬迁上云。
因而能够看到,第二类用户是现在社区数量最大,且最需求最迫切的一类用户。
咱们认为抱负状况下用户整个云原生架构系统的树立过程:
- 第一个阶段:服务上云
相似第三类用户,当时面临的问题便是怎么把自己的事务搬迁上云。
- 第二个阶段:云原生布置
相似第二类社区许多的用户,其完成已是云原生布置的企业,用到了相关容器化和编列调度的技能。
- 第三个阶段:微服务架构
继续往前演进,开端树立相关的微服务架构,以及会做服务的拆分和通讯的办理。
- 第四个阶段:微服务办理
当用户在线上有了必定数量的微服务之后,会开端呈现依靠办理和一致性保障的问题。
可是咱们在跟用户沟经过程中发现,这其实不是一种肯定意义上的区别。
由于许多公司其实并不是彻底归于其间一种状况,而是一种持久的中心态,公司的事务会处于不同的状况。一起,咱们在和相关用户进行深度的交流时,发现这些事务场景其实并不是彻底不可复制的,而是具有必定的职业聚合性和相似性。
所以,咱们开端探究怎么经过社区更好地协助这些开发者处理痛点问题,这也正是 CloudWeGo 开源社区接下来全体的演进方向。
4.继续演进的CloudWeGo开源社区
CloudWeGo 1.0 社区树立的主要方向,是将字节跳动内部孵化的高功能结构处理计划触达给更多的用户,让更多对高功能处理计划有需求的用户能够实在地在内部落地和运用这些计划。
当咱们发现用户呈现特异性的职业需求后,ClouWeGo 2.0 期望社区建造以开发者服务为主,能实在地协助到社区的开发者,处理其在微服务办理过程中遇到的一些实在存在的问题。
- 职业处理计划
经过用户问题、场景和处理计划的职业共建,构成社区的 Go 云原生微服务最佳实践,期望能够针对有特异性需求的用户给到必定的参阅。
- 易用性建造
咱们会继续和开源链条的上下游深化协作,建造云原生微服务相关的规范办理。致力于后续易用性的建造,期望能够给到本钱更低的搬迁,以及树立后期保护的办理规范。
- 继续投资高功能计划
继续保持 CloudWeGo 开源社区的长时间主义。咱们会深化投入对高功能处理计划的继续探究,也会在 Rust 范畴继续展开相关生态和开源的建造,共建 Rust 中国的开源生态。
依据此,引出 CloudWeGo 开源社区 2.0:
CloudWeGo 2.0 的阶段,咱们期望社区能够跨过项目边界,实在能够协助社区用户树立一套高功能的微服务办理架构和全体的微服务办理系统:
- 经过 Go 范畴相关微服务办理的规范和最佳实践的建造,为一些通用性技能和职业最佳实践供给参阅;
- 对接开源项目上下游进行深度协作,极大地进步整个项目的易用性;
- 推进高功能 Rust 处理计划的落地,继续探究 Rust 高功能技能处理计划,构建 Rust 相关生态。
如果咱们对 CloudWeGo 开源社区,以及方才说到的一些技能处理计划、企业的落地支撑有任何的疑问,能够重视 CloudWeGo 大众号,咱们会在大众号上发布一些新闻动态以及各个相关场景的事例报导,一起咱们也会在大众号上供给相关的技能支撑。感谢咱们的重视!
5. Q & A
Q1:第一次了解到CloudWeGo,想请问一下 CloudWeGo 有技能社区吗?怎么样能快速地参加到技能社区?怎么快速地获取到这个项目的官方文档?
A:对于初步了解 CloudWeGo 供给两种可行计划:
- 认准 CloudWeGo 官网(www.cloudwego.io/),咱们会在官网上线非…
- 重视 CloudWeGo 大众号,咱们会在大众号上继续发布最新的 CloudWeGo 技能共享以及相关活动,协助引导用户获取最新动态并参加技能社区。
Q2:作为一个新手,怎么样能够比较快速地参加到CloudWeGo开源社区,有没有比较好的一些方法引荐?
A:总结的一些通用途径如下:
- 清晰自身目的。清楚自己参加开源社区的中心方针是什么,为了学习项目仍是为了快速地依据自己的事务去树立和落地运用。
- 跟从社区供给的学习攻略和途径,凭借社区给到的一些资源。比方 CloudWeGo 开源社区,咱们会有相关的 CSG 活动,便是 study group 的活动方法,在这里能够系统化地了解一整套的技能处理计划,从小的模块再到大的全场景的落地。
- 了解项目,从部分走向全局。社区供给的新手 issue 和使命,比方一些 First Good Issue,经过这些 issue 的开发及处理,能够快速地参加到开源社区。
- 在开源社区里经过自己的深度运用,进行相关的奉献。
以上,是参加开源社区的一个比较通用的途径。CloudWeGo 大众号中也有咱们社区的 Contributor 具体地共享过关于参加开源社区的往期文章,全面介绍怎么从一个新手到深度参加开源社区的相关内容。
Q3:请问不同项目是怎么去匹配不同的社区开展模型的呢?
A:首先清晰两个思考问题:
- 社区运营对整个项目的价值是什么?
开端大部分的开源项目,只重视相关的技能布道,用户看到合适的项目就进行技能的学习并在企业内部落地,这一阶段的社区运营会依据整个社区的成长阶段设置相关的开展模型。可是这种方法,存在社区和项目之间脱节的问题。比方,原有项目技能计划的更新推广到社区不具备连续性,对用户缺乏系统化的内容输出,用户在社区所获取的内容和项目的演进阶段是有必定差异的。
- 开源社区对整个项目的价值是什么?
这里存在一个视角:要把整个开源项目作为是一个产品来运营。比方 CloudWeGo 开源项目,咱们有各个结构的技能担任人,中心担任各部分相关的技能问题,可是项目中有十分多的用户存在场景的特异性问题以及整个项目的运用体验问题等,这些问题由谁来去处理?
综上,能够清晰整个开源社区终究的方针,其实便是保护项目并协助处理用户所发生的相关问题。一旦清晰方针,就会依据项目不同的开展阶段以及项目当时演进中用户发生的相关疑问,去匹配项目的未来开展规划。
比方,CloudWeGo 项目一向都是在高功能方面做了相关的演进,咱们的用户其实也都是依据一些高功能的事务特异性需求来到了 CloudWeGo 社区。当咱们和社区的用户进行了相对深度的交流之后,咱们也发现依据职业特性、系统的特异性、或者和字节跳动内部技能计划的差异性,直接供给的技能计划是没有办法适配落地的。因而,咱们就经过社区的一些支撑,协助用户在其内部实在落地高功能的技能处理计划。
因而,优先清晰社区对项目的中心价值,了解用户的中心需求,在把握整个项目的演进节奏之后,依据项目的阶段以及开展方针,再去匹配相应的运营手法和运营的开展模型得以推进社区的开展。
6. 字节跳动 CloudWeGo 团队
CloudWeGo 是一套由字节跳动开源的、可快速构建企业级云原生微服务架构的中心件调集。它包括许多组件:Golang RPC 结构 Kitex,HTTP 结构 Hertz,Rust RPC 结构 Volo,网络库 Netpoll,Go 言语 Thrift 编译器 Thriftgo 等等。经过结合社区优异的开源产品和生态,能够快速树立一套完善的云原生微服务系统。项目一起的特点是高功能、高扩展性、高牢靠,专心于微服务通讯与办理。CloudWeGo 项目自 2021 年 9 月开源,至今开源 1 年,取得 1w+ star,代码奉献者人数已有 140+,年度 Awesome Contributor 提名 84 位。更多生态才能对接,请参阅 kitex-contrib 和 hertz-contrib。
以上内容整理自第七期字节跳动技能沙龙《字节高功能开源微服务结构:CloudWeGo》,获取讲师 PPT 和回放视频,请在大众号“字节跳动技能团队”后台回复关键词“0827”。