Hertz&KiteX里的Thrift | 青训营笔记

355 阅读2分钟

0 前言

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

这段时间一直忙着大项目的架构,学习了web三件套以后暂时觉得采用这个作为项目的架构,看了几天文档把一些比较常用的知识记录下来。

1 什么是thrift

这里的thrift主要是指 thrift 协议,一种IDL,用以进行接口的说明
在Hertz和Kitex中,我们可以使用 thrift语法编写 .thrift 文件,再通过Kitex或者Hertz的代码生成工具快捷的生成项目代码,为我们构建好项目的整体框架,接下来我们只需要在特定的部分根据我们的实际的业务逻辑去完善代码就可以了

2 基本的语法

可以参考thrift.apache.org/docs/idl.ht…
大体上其实与C语言的语法类似,很容易理解并掌握,需要注意的是,Kitex和Hertz的代码生成工具都对 thrift 进行了一定的拓展,使其具备更强大的功能,例如:

  1. Kitex 中的 Thrift Validator
  2. Hertz 中的 API注解

这些是原本的thrift语法中没有,框架自行拓展的内容,使得thrift可以更好的服务我们的web程序

3 代码生成工具的使用

kitex 和 Hertz 的代码生成工具可以根据我们编写好的 thrift 文件快速的构建项目程序,方便我们集中于业务逻辑的处理上,以下是我总结的一些使用要点:

kitex代码生成工具使用方法:

  1. 写thrift文件(定义好接口,即服务中提供的各个函数所需的参数以及返回值,定义服务名称)
  2. 使用kitex生成工具进行代码生成
$ kitex -module "your_module_name" -service service_name path_to_your_idl.thrift

-module "module_name"是在非GOPATH/src目录下创建项目时需要指定的 如果你的项目在GOPATH/src下,直接使用kitex -service service_name path_to_your_idl.thrift就行

Hertz代码生成工具(hz)使用方法:

直接创建项目:

  1. 创建项目 hz new -mod "go mod name" (也可以先go mod init "mod name" 然后使用 hz -module "mod name" new来进行创建)

使用thrift IDL:

  1. 用IDL创建 hz new -idl idl/hello.thrift
    非GOPATH/src需要使用hz new -idl idl/hello.thrift -module "module_name"
  2. 更新 hz update -idl idl/hello.thrift