一经开源就火了,字节跳动开源微服务中间件CloudWeGo

关注后回复 “进群” ,拉你进程序员交流群

开源最前线(ID:OpenSourceTop) 猿妹整编

综合自:https://github.com/cloudwego/kitex

9 月 8 日,字节跳动正式宣布开源 CloudWeGo。这是一套以 Go 语言为核心、专注于微服务通信与治理的中间件集合,具有高性能、可扩展、高可靠的特点。

CloudWeGo 第一批开源了四个项目,以 RPC 框架 Kitex 和网络库 Netpoll 为主。值得注意的是,一经开源,Kitex就登上了Github热门榜单:

一经开源就火了,字节跳动开源微服务中间件CloudWeGo_第1张图片

Kitex是一个Golang微服务RPC框架,具有高性能、强可扩展的特点。在字节内部已广泛使用。如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望定制扩展融入自己的治理体系,Kitex 会是一个不错的选择。(Github地址:https://github.com/cloudwego/kitex)

Kitex具有以下特性:

  • 高性能:使用自研的高性能网络库 Netpoll,性能相较 go net 具有显著优势。

  • 扩展性:提供了较多的扩展接口以及默认扩展实现,使用者也可以根据需要自行定制扩展,具体见下面的框架扩展。

  • 多消息协议:RPC 消息协议默认支持 Thrift、Kitex Protobuf、gRPC。Thrift 支持 Buffered 和 Framed 二进制协议;Kitex Protobuf 是 Kitex 自定义的 Protobuf 消息协议,协议格式类似 Thrift;gRPC 是对 gRPC 消息协议的支持,可以与 gRPC 互通。除此之外,使用者也可以扩展自己的消息协议。

  • 多传输协议:传输协议封装消息协议进行 RPC 互通,传输协议可以额外透传元信息,用于服务治理,Kitex 支持的传输协议有 TTHeader、HTTP2。TTHeader 可以和 Thrift、Kitex Protobuf 结合使用;HTTP2 目前主要是结合 gRPC 协议使用,后续也会支持 Thrift。

  • 多种消息类型:支持 PingPong、Oneway、双向 Streaming。其中 Oneway 目前只对 Thrift 协议支持,双向 Streaming 只对 gRPC 支持,后续会考虑支持 Thrift 的双向 Streaming。

  • 服务治理:支持服务注册/发现、负载均衡、熔断、限流、重试、监控、链路跟踪、日志、诊断等服务治理模块,大部分均已提供默认扩展,使用者可选择集成。

  • 代码生成:Kitex 内置代码生成工具,可支持生成 Thrift、Protobuf 以及脚手架代码。

使用Kitex,你需要先准备Golang开发环境,在完成环境准备后,你还需要安装代码生成工具,首先,我们需要安装使用本示例所需要的命令行代码生成工具:

  • 确保 GOPATH 环境变量已经被正确地定义(例如 export GOPATH=~/go)并且将$GOPATH/bin添加到 PATH 环境变量之中(例如 export PATH=$GOPATH/bin:$PATH);请勿将 GOPATH 设置为当前用户没有读写权限的目录

  • 安装 kitex:go install github.com/cloudwego/kitex/tool/cmd/kitex@latest

  • 安装 thriftgo:go install github.com/cloudwego/thriftgo@latest

  • 安装成功后,执行 kitex --version 和 thriftgo --version 应该能够看到具体版本号的输出(版本号有差异,以 x.x.x 示例):

$ kitex --version
vx.x.x

$ thriftgo --version
thriftgo x.x.x

接着你可以获取示例代码:

  • 获取示例代码

  • 你可以直接点击 此处 下载示例仓库

  • 也可以克隆该示例仓库到本地git clone https://github.com/cloudwego/kitex-examples.git

除了Kitex,剩下还有三个开源项目,分别如下:

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

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

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

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

一经开源就火了,字节跳动开源微服务中间件CloudWeGo_第2张图片

点击卡片,关注后回复【面试题】即可获取

在看点这里bf78e1af430c2716c0ffa6bbab2d2f8c.gif好文分享给更多人↓↓

你可能感兴趣的:(java,linux,编程语言,github,python)