这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
简介
关于Kitex
Kitex 是一个 RPC 框架,既然是 RPC,底层就需要两大功能:
- Serialization 序列化
- Transport 传输
Kitex 框架及命令行工具,默认支持 thrift
和 proto3
两种 IDL,对应的 Kitex 支持 thrift
和 protobuf
两种序列化协议。 传输上 Kitex 使用扩展的 thrift
作为底层的传输协议(注:thrift 既是 IDL 格式,同时也是序列化协议和传输协议)。IDL 全称是 Interface Definition Language,接口定义语言。
关于IDL
如果我们要进行 RPC,就需要知道对方的接口是什么,需要传什么参数,同时也需要知道返回值是什么样的,就好比两个人之间交流,需要保证在说的是同一个语言、同一件事。 这时候,就需要通过 IDL 来约定双方的协议,就像在写代码的时候需要调用某个函数,我们需要知道函数签名一样。
Thrift IDL 语法可参考:Thrift interface description language。
proto3 语法可参考:Language Guide(proto3)。
一、安装代码生成工具
首先,我们需要安装使用本示例所需要的命令行代码生成工具:
- 确保
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
二、确定代码放置的位置
- 若将代码放置于
$GOPATH/src
下,需在$GOPATH/src
下创建额外目录,进入该目录后再获取代码 - 若将代码放置于 GOPATH 之外,可直接获取
mkdir -p $(go env GOPATH)/src/github.com/cloudwego
cd $(go env GOPATH)/src/github.com/cloudwego
三、获取示例代码
git clone https://github.com/cloudwego/kitex-examples.git
四、运行示例代码
方式一:直接启动
-
进入示例仓库的
hello
目录cd kitex-examples/hello
-
运行 server
go run .
-
运行 client,另起一个终端后,
go run ./client
方式二:使用Docker启动
-
进入示例仓库目录
cd kitex-examples
-
编译项目
docker build -t kitex-examples .
-
运行 server
docker run --network host kitex-examples ./hello-server
-
运行 client, 另起一个终端后
docker run --network host kitex-examples ./hello-client