Kitex学习 | 青训营笔记

150 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第 16 天 。

一、知识点介绍

二、详细知识点

环境配置

  • 安装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 框架,底层就需要两大功能:
  1. Serialization 序列化
  2. 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文件