作者 | 罗广明 CloudWeGo 开源卖力人
CloudWeGo 最早于 2021 年 9 月正式开源,到本日为止已经经历了三年韶光。作为追赶者,CloudWeGo 经受到了来自来自全方位的磨练和寻衅,稳步向前,始终坚持着开源的初衷,为社区供应一个微做事领域的高质量开源项目。正如 CloudWeGo 三周年活动开场致辞中字节根本架构卖力人赵鹏伟所提到的,我们希望可以把字节多年的微做事干系实践履历和成果反馈到社区,回报社区,让诸多企业用户和开拓者都能和字节一样享受到高性能微做事框架在降落本钱、提升研发效率方面的收益。
开源三年之际,以下大略盘点一下 CloudWeGo 的生态发展和社区增长情形。

CloudWeGo 的项目生态
Go 是在 2014 年被引入字节跳动的,2019 年旁边,由于新框架的培植,Go 逐渐成为字节跳动内部紧张的业务开拓措辞,超过 50% 的做事采取的是 Go。此外,字节跳动在三年前开始培植 Rust 做事端方向,完成了内部生态培植并已经在多个业务线完成落地,并取得了超出预期的收益。
Go 和 Rust 是我们团队主推的两个编程措辞,适应不同的业务场景,同时也是 CloudWeGo 项目生态支持的两个编程措辞。
Go 生态是我们最早开源的,也是 CloudWeGo 紧张措辞生态。包括 21 年首批开源的 Kitex、Netpoll,22 年开源的 Sonic、Hertz;23 年,我们相继开源了 shmipc 和 Dynamicgo 等项目,他们均有有个共同的特点,那便是高性能。
2021 年底,我们开源了 Monoio,在 Rust 社区引起了不少的关注,随后这个项目也加入到了 CloudWeGo 大家庭;2022 年 CloudWeGo 一周年之际,我们开源了核心微做事框架 Volo 及其干系生态库,包括 Motore、Pilota 和 MetaInfo 等;在 24 年1 月,我们对外开源了同样基于 SIMD 技能的 Sonic rust 版本。
下图便是由字节跳动做事框架团队自主开源出来的项目的生态全景图,左边是 Go 生态项目,右边是 Rust 生态项目;从上到下,依次包括 RPC 和 HTTP 框架、编解码序列化反序列化库、网络库与运行时、工具和中间件等。各个项目既可独立利用也可搭配利用。
对付 Hertz 来说,在社区开拓者的大力支持和参与下,同样构建了丰富的周边生态,在做事注册创造以及可不雅观测性方面,和 Kitex 的能力集成体验上险些是同等的,技能栈可以保持统一。比如,RPC 和 HTTP 场景都可以选择 etcd 作为注册中央,采取 OpenTelemetry 对可不雅观测度量进行打标,采取 Prometheus 展示 metrics 监控,采取 Jaeger 展示链路追踪等。不过紧张运用于 BFF 场景下作为 HTTP 库,不汇合成过多做事管理的能力,但是会支持和 Web 浏览器通信的各种库,比如会话、缓存、跨域访问掌握、认证鉴权、SSE 等干系中间件,知足 Web 后端须要的统统必要能力的集成。
https://github.com/cloudwego/biz-demo/tree/main/easy_note 第一个项目是 EasyNote,由 @Kinggo 和 @lorain 两个同学贡献和掩护,它是一个大略的条记做事,旨在演示如何在一个项目中同时集成 RPC 框架和 HTTP 框架的能力,并且和做事注册中央、数据库打通。Hertz 卖力处理用户要求,处理卖力客用户直接访问的 HTTP 要求,包括这里也利用了 Hertz 的 4 个中间件 ,requestid 中间件、jwt 中间件、 pproof 以及 gzip 中间件。Kitex 紧张利用了它的 etcd 的扩展作为做事注册与创造中央,并且也利用了一个 Kitex 的代码天生扩展,thrift-gen-validator 去对 RPC 要求做校验。末了对数据库操作,利用了 GORM 框架,同时利用 MySQL 数据库作 RDBMS。同时也集成了 OpenTelemetry 以及 Jaeger 对链路进行追踪。末了,用 Logrus 日志对 Hertz, Kitex 与 GORM 默认的日志进行更换,达成统一。 Open Payment Platform https://github.com/cloudwego/biz-demo/tree/main/open-payment-platform 第二个项目叫 OpenPayment Platform,由 @baiyutang 同学贡献和掩护,它是一个支付开放平台的 demo,支付开放平台常日是开放给做事商或商户供应收款记账等能力的做事入口从整体的角度去看这个项目,它是一个基于 Kitex 和 Hertz 实现了 API Gateway。流程如图所示:左边用户发起了 HTTP 要求,POST 方法,指定特定的做事路径参数,传了某些业务参数到了网关;网关会判断它是要去到哪一个 RPC 微做事,然后用通报过来的参数,由泛化调用客户端,向 RPC 做事发起要求。项目中紧张利用到了泛化调用和整洁架构这两个核心理念,项目力求简洁、清晰。不过由于当时 cwgo 还没有开源,项目没有基于 cwgo 实现自定义工程化模版,这块开拓者可以基于这个项目进行扩展。 Bookinfo https://github.com/cloudwego/biz-demo/tree/main/bookinfo 第三个项目是 Bookinfo,由 @CoderPoet 同学贡献和掩护,这个项目是基于 CloudWeGo 这套技能栈重写 Istio 最经典的微做事 demo。
首先,Bookinfo 是 Istio 官方供应的经典 demo 运用,它的目的是演示 Istio 的各种各样特性。这个项目的目的也是类似的:希望利用 CloudWeGo 技能栈来重写这个 demo,并且基于 CloudWeGo 本身供应的技能栈,跟 Istio 生态做结合,去演示如何知足微做事场景上的需求。
技能选型上面,用 Hertz 实现 HTTP 做事 productpage,用 Kitex 实现 RPC 做事;基于 Istio 作为做事网格掌握面,与数据面的 xDS 模块做交互,卖力 xDS 配置动态下发;基于 OpenTelemetry 的 Baggage 实现高下文透传,同时实现 logs、trace、metrics
终极实现基于 Proxyless 架构的全链路泳道。即演示了 CloudWeGo 生态可以与 Istio 生态完美兼容,由演示了可不雅观测、全链路灰度等干系增强能力,是很多企业用户非常关注的技能能力。
Book Shop https://github.com/cloudwego/biz-demo/tree/main/book-shop 第四个项目是 Bookshop,由字节电商研发团队的 @bodhisatan 同学贡献和掩护,这是一个电商的最小化demo,对商品实体和商品链路做了精简,旨在帮助大家理解电商、理解 CloudWeGo 技能栈,对从事电商行业的开拓者具有较大的借鉴意义。技能选型上,利用 Hertz 编写 Face 做事,统一对外 HTTP 层,用 Kitex 编写 Item、User、Order 做事等系统 RPC,利用 Redis 做缓存,利用 ETCD 进行做事注册和创造 等。此外本项目还借鉴了领域驱动设计干系的事理,实现了改进版的 DDD 四层架构,更有利于项目的扩展和掩护。 以上四个项目的详细解读均已发布在 CloudWeGo 的公众号,大家如果感兴趣也可以详细查阅理解。 Easy Note——快速入门 CloudWeGo 生态 Open Payment Platform——基于 CloudWeGo 实现 API Gateway Bookinfo——基于 CloudWeGo 重写 Istio 经典 demo BookShop demo 案例详解 ——从上手电商到上手 CloudWeGo 其它精良创新项目 TikTok Demo:由一组字节青训营的学生开拓,该项目贡献在 hertz-example 目录下,旨在演示如何基于 Hertz 实现一个大略的 HTTPserver 来供应 user、video、交互和社交干系的后端做事项目中利用到了 Redis、MySQL 等技能。详见 https://github.com/cloudwego/hertz-examples/tree/main/bizdemo/tiktok_demo FreeCar:是一套基于 CloudWeGo 和 云原生技能栈的分时共享租车系统,由重庆邮电大学一组本科生团队开拓,在中国大学生打算机设计大赛中荣获二等奖。详见 https://github.com/CyanAsterisk/FreeCar Chatbot Demo :是由字节 @Haswf 同学开拓并开源在 GitHub 的一个开源项目,可以基于本地模型 ollama、langchaingo 和 Hertz SSE 构建演示流式传输的 demo。详见 https://github.com/Haswf/hertz-chatbot-demo CloudWeGo 企业用户案例 CloudWeGo 关注真实企业用户落地,构建企业用户支持体系和掩护体系,持续支持新用户落地,支持现有企业用户需求。当前较大规模落地的企业用户包括:智谱 AI、贪玩游戏、方正证券、Construct、森马、华兴证券、数美科技等;Sonic 也在招商银行企业内部落地。经由企业用户反馈,落地 CloudWeGo 后均得到的性能、本钱和稳定性收益。 游戏 - 贪玩游戏 手游登录接口业务率前辈行 PHP -> Golang 重构,并做微做事拆分,个中 HTTP 做事采取 Hertz 框架,而 RPC 微做事采取 Kitex 框架。其它微做事技能选型:做事注册创造 & 配置中央 Nacos、链路追踪 OpenTelemetry、监控 Prometheus、限流 Kitex 内置限流策略。后逐步推广至更多业务,全面启动重构,根据单一职责将业务拆分更细,可独立开拓和扩展。 收益:1. 性能和稳定性提升:单 Pod 1c2g 能处理 400+ QPS;链路耗时低;失落败率逼近 0%。2. CloudWeGo 提高开拓效率,简化支配流程,自动伸缩容更便捷,业务更有弹性,本钱得到降落。 金融 - 方正证券 2023 年年初方正启动了微做事体系培植,个中注册中央采取的 zookeeper,存量做事利用的是 Dubbo 框架,新培植的 Web 和 RPC 运用框架分别采取的 CloudWeGo 的 Hertz 和 Kitex。(Kitex <=> Dubbo)。微做事架构下,随着业务的发展,对做事的管控难度会越来越大,做事管理的浸染便是为理解决做事拆分所引发的一系列问题,以让做事更稳定地运行,涉及的主题包含了做事注册与创造、负载均衡、做事熔断、做事降级、做事限流等。方正夸克平台供应的超时、重试以及做事端限流的功能,均基于 Kitex 的干系能力而来。 目前方正已经进入到了微做事培植的深水区,紧张涉及到微做事管理,可不雅观测性能力,接口管理等,未来还将基于 CloudWeGo 体系深度探索与做事网格的结合、统一多措辞可不雅观测性、统一 RPC 和 HTTP 接口管理等。 AI - 数美科技 接入层 RPC client 以及业务层 RPC server & RPC client 基于 Thrift 协议采取 Kitex 框架重构,办理了很多原生 Apache Thrift 框架的不敷之处。将与公司根本举动步伐耦合较紧密的这部分作为扩展进行接入,包括做事创造(Zookeeper)、日志(Zap)、链路追踪(OpenTelemetry)、Metrics(Prometheus)等,以上扩展组件 kitex-contrib 均供应了扩展支持,可以直策应用集成到自己系统。集成限流、熔断、过载保护等做事管理能力,让系统能够自适应地办理可能带来稳定性问题的流量。 收益:上线 Kitex 框架和做事管理功能可以很好地办理弹性扩缩以及机器负载导致的可用性问题,将突增引发的失落败影响限定在很小范围内,极大得提升了系统的稳定性。流量是考验效果的唯一标准,经由足够多流量验证的 Kitex 是很好的选择。 泛互 - Construct Construct 做事端架构的演进反响了互联网业务从大略到繁芜的发展需求。Construct 公司见证了从单体架构,再到微做事架构的做事注册与创造机制,终极到做事网格(Service Mesh)的演进。面对浩瀚的微做事框架,Construct 经由寻思熟虑,终极选择了 Kitex。这一决策基于几个核心成分:Kitex 的易用性、高性能,尤其是在高并发环境下的出色表现。基准测试显示,Kitex 的 QPS 是 gRPC 的两倍,而且在延迟方面表现更为精良。 收益与总结:高并发性能出色,是 gRPC 两倍;高可用,可用性 > 99.999%;稳定性,稳定到险些觉得不到框架的存在。 CloudWeGo 的社区发展总结 关键词一:企业用户 CloudWeGo 关注真实企业用户落地,截止日期,Kitex & Hertz 落地外部企业用户超过了 60 家。 开源至今,拉起了 80+ 企业用户一对一互换群,免费帮忙用户办理技能问题,帮助 CloudWeGo 高性能微做事技能在公司内部生产环境落地。 组织了超过 10 次与企业用户的线下面对面技能互换,深度沟通技能问题和解决方案,网络利用反馈和来自一线用户的建议,帮助我们更好地打磨项目的易用性。 关键词二:Star(Just For Fun) 核心项目 Star 之和 2.9 w+,全部项目总计 3.3 w+(2021.9 - 2024.9) 对付开源项目来说,Star 只是一个浅层次的一个指标,每每很难和项目质量、项目代价、项目落地规模强干系。不过 Star 可以在一定程度上展示项目的受欢迎程度,star 的增长也可以给开拓者带来感情上的代价,Happy and Fun ! 关键词三:环球访问用户 截止 2024 年 9 月,CloudWeGo 官网环球独立访问用户超过了 19 万,遍布中国、新加坡、美国、日本、印度尼西亚、德国、韩国等环球地区国家。这一指标意味着 CloudWeGo 走向了国际舞台,已经受到了环球多个国家的关注和利用。 关键词四:贡献者 CloudWeGo 自开源以来,吸引了来自公司内外的环球开拓者参与到 CloudWeGo 的代码和文档的贡献,去重后全组织下的贡献者已经超过了 400 个,个中通过长期参与和有效贡献申请成为 Committer 的累计有 22 个,在此之上进一步晋升成为 Reviewer 的有 7 个,Approver 1 个。社区开拓者繁荣且多样,包括海内的和外洋的,也包括在职员工和高校学生。是大家的共同努力与共享,才铸就了当前 CloudWeGo 生态的繁荣。 关键词五:线下活动 线下活动对付开源社区和开拓者来说是非常主要的活动,面对面的互换不仅能加速技能的深度触达,还能供应开拓者感情上的代价,给大家供应分享和相聚的机会。自开源以来,我们累计举办了超过 8 场较大规模的线下技能沙龙,得到海内主流技能媒体的支持和转播,疫情之后的线下活动均吸引了超过百位激情亲切不雅观众的参会和互动,给大家带来持续提高的力量。 写在末了 自去年式对外发布以来,《CloudWeGo 技能白皮书 - 字节跳动云原生微做事架构事理与开源实践》在 CloudWeGo 官网、火山引擎官网累计下载人次 1000+,下载来源包括阿里、京东、腾讯、百度、美团、小红书等互联网行业公司员工,得到了业界的同等好评。 今年,我们更新了部分细节,新版白皮书将联合 InfoQ 发布,目前已经可以在 CloudWeGo 中文官网(https://www.cloudwego.io/zh/ )下载电子版,只需完成大略信息登记即可免费获取。 活动回顾 2024年9月21日,CloudWeGo 在北京成功举办了“高性能微做事技能实践与 AI 新范式—— CloudWeGo 技能沙龙暨三周年庆典活动”,超过200位开拓者参与活动,与八位讲师一起磋商了近一年来 Kitex/Hertz 如何助力大模型,以及一站式 Go 开拓工具 cwgo 和 LLM 原生的代码办理方案 ABCoder 和 ROG 等项目实践。本文是 CloudWeGo 开源卖力人罗广明的分享总结。 三周年庆典活动视频回顾请访问CSDN、稀土掘金微信公众年夜众号。点击「」即可得到PPT下载链接。