这是我参与「第五届青训营 」笔记创作活动的第 16 天 。
一、知识点介绍
- 这篇笔记记录Kitex的相关使用。
- 先贴上官方文档Kitex | CloudWeGo
二、详细知识点
环境配置
- 安装Kitex:
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest - 安装thriftgo:
go install github.com/cloudwego/thriftgo@latest - 安装成功后执行如下代码可以看到具体版本号输出
kitex --version
thriftgo --version
- 关于Kitex Kitex 是一个 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)。
- Kitex命令行工具
- 安装:
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest - 执行
kitex命令出现No IDL file found.表示安装成功 - 具体使用参考代码生成工具 | CloudWeGo
- 安装:
快速开始
编写IDL
- 以thrift IDL为例,创建一个名为
echo.thrift的thrift IDL文件定义服务:
namespace go api
struct Request {
1: string message
}
struct Response {
1: string message
}
service Echo {
Response echo(1: Request req)
}
生成echo服务代码
- 在命令行执行:
kitex -module example -service example echo.thrift - 代码格式为:
kitec -module 生成的module名 -service 生成的服务名 该服务的IDL文件