一经开源就火了,字节跳动开源微服务中间件cloudwego(代码片段)

程序员大咖 程序员大咖     2023-01-05     632

关键词:

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

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

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

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

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

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 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!

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

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

springcloud微服务:阿里开源组件nacos,服务和配置管理

...可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。2 查看详情

字节跳动如何从0到1打造一个开源项目?

本文整理自51CTO开源基础软件学习季的直播公开课《字节跳动的开源实践与思考》 像很多公司一样,字节跳动接触开源也有一个从0到1、由浅入深的过程,大体经历三个阶段: 第一阶段,使用开源。为了推动业务更快发... 查看详情

字节跳动开源数据集成引擎bitsail的演进历程与能力解析

导读BitSail是字节跳动开源数据集成引擎,支持多种异构数据源间的数据同步,并提供离线、实时、全量、增量场景下全域数据集成解决方案,目前支撑了字节内部和火山引擎多个客户的数据集成需求。经过字节跳动各大业务线... 查看详情

高性能rpc框架cloudwego-kitex内外统一的开源实践

...节跳动技术沙龙圆满落幕,本期沙龙以《字节高性能开源微服务框架:CloudWeGo》为主题。在沙龙中,字节跳动字节跳动基础架构服务框架资深研发工程师杨芮,跟大家分享了《高性能RPC框架Kitex内外统一的开源实... 查看详情

牛逼,字节跳动又一开源大作!程序员的福音!

...有位读者私信,说能不能推荐一些大厂使用的安卓类开源项目,想了下,读者中也有不少搞安卓开发的,所以今天给大家推荐一个大厂出品的安卓开源项目。这个项目是「ByteHook」,目前在GitHub收获了670Starÿ... 查看详情

字节跳动开源bitsail,助力企业走好数字化“第一步”

10月26日,字节跳动宣布开源BitSail数据集成引擎。BitSail意为“数据航行”,可支持二十余种异构数据源间的数据同步,提供离线、实时、全量、增量场景下的全域数据集成解决方案,从而打通困扰企业数字化转型... 查看详情

字节跳动开源最新gan压缩算法,算力消耗可减少至1/46(代码片段)

字节跳动近期开源了一项代号为OMGD的压缩技术。这是字节自研的GAN(生成对抗网络)压缩算法,在保证生成效果不变的前提下,算力消耗最低可以减少到原来的1/46,相比之前业界的最佳压缩效果提升一倍多。... 查看详情

揭秘字节跳动云原生sparkhistory服务uiservice

...实现了一套全新的云原生SparkHistory服务——UIService,相比开源的SHS,UIService存储占用和访问延迟均降低90%以上,目前UIService服务已经在字节跳动内部广泛使用,并且作为 查看详情

速度超快!字节跳动开源序列推理引擎lightseq(代码片段)

...业界第一款完整支持Transformer、GPT等多种模型高速推理的开源引擎。2017年Google提出了Transformer[1]模型,之后在它基础上诞生了许多优秀的预训练语言模型和机器翻译模型,如BERT[2]、GPT系列[13]等,不断刷新着众多自然语言处理任... 查看详情

字节跳动开源隐私合规检测工具appshark

一、背景随着移动互联网的高速发展,人们的生产生活也逐渐从PC电脑端转移到手机等移动端,各类移动App也如雨后春笋般产生。受限于代码的开发质量等原因,App中或多或少的会存在安全漏洞或因开发设计不谨慎引入的违规收... 查看详情

字节跳动开源序列推理引擎lightseq(代码片段)

背景介绍2017年Google提出了Transformer[1]模型,之后在它基础上诞生了许多优秀的预训练语言模型和机器翻译模型,如BERT[2]、GPT系列[13]等,不断刷新着众多自然语言处理任务的能力水平。与此同时,这些模型的参数... 查看详情

字节跳动开源序列推理引擎lightseq(代码片段)

背景介绍2017年Google提出了Transformer[1]模型,之后在它基础上诞生了许多优秀的预训练语言模型和机器翻译模型,如BERT[2]、GPT系列[13]等,不断刷新着众多自然语言处理任务的能力水平。与此同时,这些模型的参数... 查看详情

一款无惧“魔改”的设计系统开源了,已支持字节跳动4000多个项目

...后期维护也比较困难。现在,一款名为ArcoDesign的全新开源设计系统或将打破上述困局。ArcoDesign的开发者、字节跳动GIPUED和前端架构技术 查看详情

字节跳动最新开源!昆明java工程师招聘

Java基础JDK和JRE有什么区别?==和equals的区别是什么?两个对象的hashCode()相同,则equals()也一定为true,对吗?final在java中有什么作用?java中的Math.round(-1.5)等于多少?String属于基础的数据类型吗ÿ... 查看详情

springcloud微服务安全网关安全3-8用开源项目spring-cloud-zuul-ratelimit做网关上的限流(代码片段)

1.网关的限流用开源项目spring-cloud-zuul-ratelimit 做网关上的限流(项目github:https://github.com/marcosbarbero/ )1.1引入限流组件依赖在this-security-gateway网关项目中引入限流组件的maven依赖<dependency> <groupId> 查看详情

推荐6个顶级springcloud微服务开源项目,个人学习和企业开发必备!

今年面试了不少程序员,都号称自己会SpringBoot,SpringCloud。可随便问几句就露馅了。今天给大家推荐六款比较热门的SpringCloud微服务项目,感兴趣的可以clone下来研究学习一下,相信对你学习微服务架构很有帮助&#x... 查看详情

国内开源还得看阿里

...巴巴提供的微服务开发一站式解决方案,是阿里巴巴开源中间件与SpringCloud体系的融合。马老师左手双十一,右手阿里开源组件,不仅占据了程序员的购物车,还要攻占大家的开发工具。先说说SpringCloud提起微服务,不得不提Sprin... 查看详情

内含福利|csdn携手字节跳动:云原生meetup北京站报名热烈启动,1月8日见!

伴随云原生技术的成熟与落地,越来越多框架、中间件等开源项目相继涌现,帮助开发者和企业有效解决业务问题。2022年1月8日,CSDN携手字节跳动基础架构,将在北京举办第四场云原生线下Meetup。在这里,您... 查看详情