写点什么

[ CloudWeGo 微服务中间件实践 -01 ] 开篇

用户头像
baiyutang
关注
发布于: 刚刚

CloudWeGo 是什么

CloudWeGo 是一个项目集合,这是一套以 Go 语言为核心、专注于微服务通信与治理的中间件集合。


项目成员


多年来,在亿级流量背后,字节跳动基础架构团队开发的技术底座支撑着庞大的微服务生态系统,从 2018 年至今,团队维护的在线微服务数量增长了近 600%,超过 5 万。面对这样的规模和增速,提高性能、可扩展性和稳定性成了构建 CloudWeGo 的核心。

CloudWeGo 第一批开源了四个项目,以 RPC 框架 Kitex 和网络库 Netpoll 为主,关于它们的技术实践,可以参考此前发布的两篇文章:《字节跳动 Go RPC 框架 Kitex 性能优化实践》《字节跳动在 Go 网络库上的实践》


Kitex

Kitex 是一个 Golang 微服务 RPC 框架,具有高性能、强可扩展的特点。


Netpoll

Netpoll 是字节跳动内部的 Golang 高性能、I/O 非阻塞的网络库,专注于 RPC 场景。

Thriftgo

Thriftgo 是 Go 语言实现的 Thrift IDL 解析和代码生成器,支持完善的 Thrift IDL 语法和语义检查,相较 Apache Thrift 官方的 Golang 生成代码,Thriftgo 做了一些问题修复且支持插件机制,用户可根据需求自定义生成代码。

Kitex 的代码生成工具就是 Thriftgo 的插件,CloudWeGo 近期也会开源另一个 Thriftgo 的插件 thrift-gen-validator,支持 IDL Validator,用于字段值校验,解决开发者需要自行实现代码校验逻辑的负担,弥补 Thrift 缺失的能力。

Thriftgo 目前虽然仅支持生成 Golang Thrift 代码,但其定位是可支持各语言的 Thrift 代码生成,未来如果有需求,我们会考虑生成其他语言的代码。同时我们也会尝试将其回馈至 Apache Thrift 社区。


Netpoll-http2

Netpoll-http2 基于 Golang 标准库 golang.org/x/net/http2 的源码替换 go net 为 Netpoll,目前用于 Kitex 对 gRPC 协议的支持,对 HTTP2 有需求的外部开发者也可以使用此库。


扩展阅读

  1. 字节跳动开源内部微服务中间件 CloudWeGo

发布于: 刚刚阅读数: 2
用户头像

baiyutang

关注

广州 2017.12.13 加入

Microservices | Golang | Cloud Nitive | “Smart work,Not hard”

评论

发布
暂无评论
[ CloudWeGo 微服务中间件实践-01 ] 开篇