CloudWeGo 社区会议 6.30

会议主题 :CloudWeGo 社区会议 6.30

参会人 :GuangmingLuo, welkeyever, YangruiEmma, liu-song, byene0923, Ivnszn, ylck, li-jin-gou, stephenzhang0713, Li Zheming, debug-LiXiwen, joway, yccpt, Yin Xuran, JZK-Keven, Li Weiting, Fan Guangyu, Jacob953, errocks, Huang Xiaolong, towelong, powerxu519, jayantxie, baiyutang, skyenought, yiyun, baize, yunwei37, 834810071, LhdDream

会前必读官网;https://github.com/cloudwego

议程 1 :新人自我介绍 @GuangmingLuo

  1. 新成员名单:stephenzhang0713, yunwei37, errocks, Li Weiting, Huang Xiaolong, towelong, powerxu519, LhdDream, ylck, byene0923
  2. 社区新成员分别进行自我介绍,主要包含个人基本情况、开源贡献经历和后续参与社区工作内容。

议程 2 :Good-first-issue 复盘 @GuangmingLuo

  1. Kitex 单测任务还有两个子任务待完成,希望加快进度。后续会持续放出其它新手任务,希望大家可以保持关注并积极参与。后续针对 PR 可能会有单测覆盖率限制,希望后面每一个提交贡献的同学都能补充相关的单测,提升相关模块的单测覆盖率,保证项目的代码质量。
  2. Hertz 文档建设进展:
  • 先前发布了文档翻译类型的新手任务,英文文档建设是项目非常重要的一部分,新手、字节内部同学、国内熟悉英文的用户都可查看。后续也会将项目进行国际化推广,因而英文文档建设也是很有价值的。
  • 英文文档建设可以锻炼英文翻译能力、对项目技术的理解能力,在翻译时要考虑中英文表达方式的差异,不能只是文字对照翻译。也欢迎大家后续对文档翻译进行持续优化,这也是为社区作出重要贡献的方式之一。

议程 3 :工程化模板或标准化的讨论 @baiyutang

  1. Issue 地址:https://github.com/cloudwego/kitex/issues/500
  2. 背景:用户在做技术选型的时候,对工具化模板是有一定诉求的,比如说怎样快速便捷生成一些基础的业务代码。对比 Go-zero 框架的 API 生成、RPC 生成、Model 生成以及模版的管理四类命令工具,Kitex 有一些生成客户端代码的命令、生成基础 Handler 方法的服务端代码命令等,如果想满足更多用户的诉求,我们可以确定一个 Layout 或者丰富工具化、生成业务代码方面的命令。
  3. 相关讨论
  • Kitex 和 Hertz 有两套单独的 RPC 命令生成工具,生成 Model 可能需要一个总的工具,因为有很多业务诉求是有共性的,这个问题正在考虑中。
  • Q:Kitex 和 Hertz 同属一个 Group,命令是否可以相似,如果不去自动指定 Model 的话,可以自动从执行命令最近的文件夹里面找到 Go mod 文件? A:建议提出 PR,相关同学后续会跟进。

欢迎感兴趣的同学加入讨论!


议程 4:Hertz 近期 Roadmap 介绍、实战案例建设、新手任务介绍等等 @welkeyever

  1. Hertz 上周已正式官宣,内部在逐步梳理开源侧的 Roadmap。主库拆成 Hertz 对外提供的各维度的能力:
  • HTTP2 在内部已经有一个工程实践,内部很多组件用户已经在使用,但是出于成熟度的考量,还没有正式开源。因此首先后期会补充 HTTP2 的能力,对此感兴趣的同学可以一起参与;
  • HTTP3 的 RFC 文档在 6 月份正式发布,这部分也是即将举办的 Byte Camp 的议题,后续的开发工作也会以 Issue 和 PR 的形式直接在主库上展开。也欢迎大家加入到开发过程中;
  • 关于协议,如 ALPN 已经开源,后续希望组织好这些协议,把 ALPN 的能力发挥到极致。协议间无感切换是说在用户在使用 Hertz 时,它能够做到一键切换协议版本;
  • Automatic TLS 在内部不是刚需,主要面对开源用户。其余各维度的能力也在陆续梳理中。
  • 对于 Hz,后续会提供多场景、高定制化、开箱即用等用户自定义能力,通过 Hz 能够直接一键创建出可以快速上线的一整个代码脚架。还会涉及 API 管理以及生成工具提供一些更高层面的抽象能力,包括屏蔽掉 HTTP 协议相关的 Request Response,给用户生成一些基于 IDL、类似于 RPC 方向的开发体验。欢迎感兴趣的同学一起进行 Hz 工具的打磨。
  1. Contrib 仓库为 Hertz 提供全方位的组件能力:
  • Websocket 已经在内部使用一年多,本质上是基于 Gorilla Websocket 的库做适配,因此没有直接开源。后续可作为新手任务。
  • 反向代理与 Websocket 类似,这个实现也是基于 Golang 原生的实现做的适配,没有直接开源。后续可作为新手任务。
  • 常用中间件(Session/Compress/Cache),每个中间件相对独立,所以希望每个同学单独承接,做独立开发。
  • 服务治理相关能力,与 Automatic TLS 类似,在内部会直接卸载到 Service Mesh 上。服务发现、负载均衡、限流、熔断、超时,都在 Service Mesh上有对应的实现。这一系列的服务治理的相关能力也在开源的 Roadmap 中,后续会逐步地将任务梳理出来。
  • 可观测性(Log/Trace/Metrics),我们现在已经做了一些集成的,日志能够支持具体实现注入,Trace 也有相应的埋点,Example 库也提供了类似于使用 Tracing 能力的示例,这些也在规划中。
  • 云原生(Proxyless/一键部署/CICD),Proxyless 在服务治理能力补齐之后会开始做,直接对接 Istio,Kitex 的这部分已经在进行中,Hertz 后续也会逐步补充。一键部署是指部署到第三方云环境的能力,包括集成 CICD 等等,都是 Contrib 仓库会涵盖的。

希望已经给 Hertz 提供 PR 或 Issue 的同学多使用,帮助框架进一步做性能提升。细节部分可以在 Hertz SIG 讨论,公共事务可以在开发者交流群进行沟通。


议程 5:社区 Mentor 机制介绍 @GuangmingLuo

  1. 上周社区开发者交流群里进行的问卷调查,是为了有针对性地给群里各位新加入的同学提供学习成长路径和帮助,后续会针对大家的意愿,给各位同学匹配对应的 Mentor,遇到问题可以及时跟 Mentor 交流沟通,方便大家快速地学习以及真正地深入到这个项目的开发中,也帮助大家快速成为社区 Committer。

议程 6:Issue 任务答疑 Q & A 环节

Q:Hertz 和 Kitex 都要做服务治理,在功能上是不是有些重复?

A: 二者业务场景不同,整个框架的治理能力是可扩展性的,Kitex 目前在对接 OpenSergo 和 Polaris 等项目,针对服务治理能力做一些集成对接,分别把它们封装成两套不同的服务治理 Suite 进行接入。这部分 Kitex 已经在进行中了,如果后续 Hertz 对应接口扩展性这方面完成准备,也会启动类似这样的集成对接。字节的服务治理能力是由服务网格去实现的,目前 Hertz 框架的服务治理还比较薄弱,因此我们后面会统一对接第三方的服务治理能力,以 Suite 的方法一键集成进来,需要上云的用户就可以一键集成对应不同公务云的通用服务指引能力。有个性化需求的用户可以去做一些集成的对接,但不会对框架的 Core 有侵入。

Q:Hertz 提供 IDL 生成是不是导致与 Kitex 有重叠?

A:在 Hertz 中,IDL 主要是用在接口描述上面,在这个接口描述布局下面,生成对应的 HTTP 框架的代码。后续 Kitex 会基于 IDL 做一部分代码生成,但 Hertz 是没有的。本质上其实可以理解为还是 HTTP 协议,跟 RPC 没有任何关系。

Q:既然支持 Thrift 和 PB 两种语言,那是否可能自己开发出一套语言来进行接口描述?

A:Thrift 和 PB 都只是在 Hertz 中发挥接口描述的功能。除此之外,我们内部其实都是以 Thrift 的 IDL 做一些描述,包括 RPC 是直接基于 Thrift 生成代码的。其实在 Hertz 这边,我们仅仅只是用了接口描述的能力,如果你想换成自定义协议套都是可以的。后续我们其实也会考虑是否可以设计一套通用的接口描述,撑起整个 Hertz 代码生成逻辑。

Q:因为 Hertz 和 Kitex 字节内部已经有一些应用实践经验,我们可以不仅仅从产品设计上去考虑,而且还要把它当做技术产品去看待,响应市场的需求。针对不同的人群来讲,第一类是不太了解微服务的概念或者实践的人群,第二类是更关注性能测试的中高级的用户,Hertz 和 Kitex 是否可以给出一些最佳实践文档?

A: 我们最近也开展了类似的源码解读活动,是面向新手和年轻开发者的活动,之后也在陆续整理一些相关概念和知识介绍。至于偏具体业务场景的使用案例,后续我们希望能有更多同学参与进来。这个其实是一个社区攻坚的过程,我们也会尽可能把字节内部已有的比较好的实践进行输出。希望大家能够就是借着这个框架可以自己去做一些相关领域的实践,我们目前也正在搭一个电商的样例,这个项目会在近期完成,最后我们会把它发布出来放在官网。一些企业用户案例也比较有借鉴意义,我们也希望能够在不同行业,比如电商、证券、游戏和机器学习等做一些企业用户的行业标杆。后续我们也会收集和整理相关企业用户进行落地页实现的案例,放在官网统一的位置做展示,让用户和需要做技术选型的同学能够快速地看到,能够了解这个项目究竟能给业务带来什么价值,能在哪些场景上铺开使用。