0. Kitex
Kitex是在Thrift的基础上封装的RPC框架,根据我们写好的IDL文件,可以调用kitex工具生成脚手架文件,之后修改脚手架文件,实现RPC服务发现与提供方的业务代码。
1. kitex工具的基本使用
# 基本语法
kitex -module url # go.mod的module空间
-service PSM # 命名空间
-I path # .thrift文件的路径
-use path # 不生成kitex_gen,而是使用该参数给定的路径(必须是一个kitex_gen目录)
-protobuf value # 传给protoc的参数,会拼接在`-go_out`后面
-thrift value # 唱诶thriftgo的参数,拼接在`-g go`后面
-core # 生成代码不使用kitex自带的服务治理功能
-v # 输出更多日志
2. Kites生成的文件结构
kitex_gen文件结构
服务消费者要实现 client.go 中的 Client 接口
服务生产者要写 handle.go 中对应的方法
kitex_gen/
├── base # Kitex生成的文件,暂时不需要关注
│ ├── base.go
│ ├── k-base.go
│ └── k-consts.go
├── common_param # Kitex生成的文件,暂时不需要关注
│ ├── agw_common_param.go
│ ├── k-agw_common_param.go
│ └── k-consts.go
├── device_info # Kitex生成的文件,暂时不需要关注
│ ├── device_info.go
│ ├── deviceservice
│ │ ├── client.go
│ │ ├── deviceservice.go
│ │ ├── invoker.go
│ │ └── server.go
│ ├── k-consts.go
│ └── k-device_info.go
└── F # Kitex根据我们的IDL文件生成的部分
| └── M
| └── S # F.M.S是我们在IDL命名空间规定的FSM结构
| ├── demo.go
| ├── demoapiservice
| │ ├── client.go # 服务消费者需要实现这里面的 Client 接口
| │ ├── demoapiservice.go
| │ ├── invoker.go
| │ └── server.go
| ├── k-consts.go
| └── k-demo.go
├── build.sh # 写好业务后运行该脚本,生成out文件夹(里面有编译好的项目)
└── handle.go # 在这里写我们服务提供者的方式实现逻辑