课程导学:https://juejin.cn/post/7095977466094682148#heading-31
课程视频:https://live.juejin.cn/4354/yc_teacher
Kitex[kaɪt’eks]|字节跳动内部的 Golang 微服务RPC 框架
Kitex 框架及命令行工具,默认支持 thrift
和 proto3
两种 IDL,对应的 Kitex 支持 thrift
和 protobuf
两种序列化协议。传输上 Kitex 使用扩展的 thrift
作为底层的传输协议(注:thrift 既是 IDL 格式,同时也是序列化协议和传输协议)。IDL 全称是 Interface Definition Language,接口定义语言。
GRPC
、Thrift
、Dubbo
、Spring Cloud
这4种常用的RPC框架,讲述了每种框架的原理,还有示例,非常适合入门学习:RPC框架介绍与选型这部分我将参照Kitex的quick start部分的文档过一下 (quick start文档中先教你运行并扩展一个使用Kitex框架的服务的功能,然后再教你从0开始使用Kitex框架编写自己的服务) ,也会给出一些补充(课中给出Easy Note项目也是一个使用Kitex框架编写完成的服务,比较全,我建议还是先尝试自己从零开始体验一下Kitex的使用,循序渐进,之后再去学习这个项目)
按照文档中的执行两个go install xxx
命令之后,将在自己的$GOPATH/bin
路径下找到下载的两个工具
git clone https://github.com/cloudwego/kitex-examples.git
客户端实例
和服务端实例
时添加的--network host
参数是用于设定容器与宿主共用网络,这样就能从容器中访问宿主网络了,下面是执行两个命令后,客户端的终端不断打印从服务端返回的响应 (这个简单的示例就是一个回声服务,客户端不断向服务端发送message后,服务端返回)docker build -t kitex-examples .
命令,它的作用是会默认使用当前目录的Dockerfile
进行编译镜像,编译后的镜像名为kitex-examples
docker ps
命令表示查询当前正在运行的Docker容器,docker images
表示查询当前Docker中的所有镜像这一步按照文档中的步骤操作即可,大致的流程如下:
mkdir example
cd example
环境变量配置参看这篇文章:https://blog.csdn.net/a1056244734/article/details/121861743
// 若当前目录不在 $GOPATH/src 下,需要加上 -module 参数,一般为 go.mod 下的名字
kitex -module example -service example echo.thrift
解决方案:https://github.com/cloudwego/kitex/issues/447(感谢群里的同学)
func main() {
c, err := echo.NewClient("example", client.WithHostPorts("0.0.0.0:8888"))
if err != nil {
log.Fatal(err)
}
req := &api.Request{Message: "my request 啦啦啦"}
resp, err := c.Echo(context.Background(), req, callopt.WithRPCTimeout(3*time.Second))
if err != nil {
log.Fatal(err)
}
log.Println(resp)
}
通过Quick Start部分快速体验了一下Kitex框架构建服务的流程,后续的学习我建议是结合Kitex文档与Easy Note的demo进行强化学习,深入学习Kitex的各种特性。