字节跳动正式开源内部微服务中间件 CloudWeGo( 二 )


Thriftgo 目前虽然仅支持生成 Golang Thrift 代码,但其定位是可支持各语言的 Thrift 代码生成,未来如果有需求,我们会考虑生成其他语言的代码 。同时我们也会尝试将其回馈至 Apache Thrift 社区 。
Netpoll-http2Netpoll-http2 基于 Golang 标准库 golang.org/x/net/http2 的源码替换 go net 为 Netpoll,目前用于 Kitex 对 gRPC 协议的支持,对 HTTP2 有需求的外部开发者也可以使用此库 。
内外版本维护完整的微服务体系离不开底层云计算生态,无论是公有云、私有云还是本地基础设施等环境,开发者要搭建微服务,离不开配套的微服务治理,如治理平台、监控、链路跟踪、注册/发现、配置中心、服务网格等,此外还存在一些定制的规范 。
字节跳动自然也有完善的内部服务支持微服务体系,但这些服务短期内无法开源 。为了遵守长期投入承诺,内外维护一套代码、统一迭代,基础架构团队已经将与内部生态没有耦合的项目,如 Netpoll,直接迁移到 CloudWeGo 开源库,并将内部依赖调整为开源库 。
而对于需要集成治理能力融入微服务体系的 Kitex,我们基于其扩展性,对内外部代码做了拆分,把 Kitex 的核心代码迁移到开源库,内部库封装一层壳保证内部用户无感知升级,而集成内部治理特性的模块则作为 Kitex 的扩展保留在内部库 。未来,我们也会持续把已经在字节跳动内部经过稳定性验证的新特性,迁移到开源库 。
对于使用 CloudWeGo 的开发者,大家同样可以对 Kitex 进行扩展,将 Kitex 融入自己所在组织的微服务体系中 。我们也诚挚欢迎开发者能贡献自己的扩展到 https://github.com/kitex-contrib,为更多用户提供便利 。
RoadMap对于基础架构团队,CloudWeGo 不仅仅是一个开源项目,它也是一个真实的超大规模企业级实践项目 。通过开源,我们希望 CloudWeGo 能丰富云原生社区的 Golang 工具体系,为更多开发者和企业搭建云原生化的大规模分布式系统,提供一种现代的、资源高效的的技术方案 。
如前文所述,目前 CloudWeGo 只开源了第一批项目,未来,我们会进一步推动其走向完善:

  • 继续开源其他内部项目 。我们会开源更多字节跳动常用 Golang 项目,如 HTTP 框架 Hertz、基于共享内存的 IPC 通信库 ShmIPC 等,为开发者提供更多场景的微服务需求支持 。此前,我们已将部分 Golang 基础工具库开源,统一在 bytedance/gopkg 维护,感兴趣的开发者也可以关注 。
  • 逐步开源经验证的、稳定的特性 。CloudWeGo 的主要项目均为字节内部微服务提供支持,许多新特性仍在内部验证,相对成熟后我们会逐步开源,如对 ShmIPC 的集成、无序列化、无生成代码的支持等 。
  • 结合内外部用户需求,持续迭代 。项目开源后,我们也会根据开发者需求开展迭代 。例如近一个月来,我们收到了来自开发者的大量关于 Protobuf 的诉求,为了提供良好的支持,我们已经在筹备开展 Kitex 对 Protobuf 支持的性能优化 。
欢迎大家向 CloudWeGo 提交 issue 和 PR 共建 CloudWeGo 。我们诚心期待更多的开发者加入,也期待 CloudWeGo 助力越来越多的企业快速构建云原生架构 。如果企业客户想内部试用,我们可以排期提供专项技术支持和交流,欢迎入群咨询 。
相关链接
  • 项目地址:
  • https://github.com/cloudwego
  • 项目官网:www.cloudwego.io

【字节跳动正式开源内部微服务中间件 CloudWeGo】


推荐阅读