Kitex RPC框架学习笔记

524 阅读1分钟

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 # 在这里写我们服务提供者的方式实现逻辑