hertz与kitex整合 | 青训营

在本次项目中,预期使用kitex与hertz实现。hertz将作为总关是实现请求的转发,将各请求转发至对应rpc服务器。在本篇文章中,仅使用单机进行简单介绍。

官方范例:github.com/cloudwego/h…

首先需要准备linux环境并安装kitex以及hz代码生成工具。

官方网址:www.cloudwego.io/

kitex与hz安装:

在linux终端中输入

go install github.com/cloudwego/kitex/tool/cmd/kitex@latest

go install github.com/cloudwego/hertz/cmd/hz@latest

以获取最新版本的kitex以及hz代码生成工具

代码生成

hz new -idl ../idl/xxxx.thrift

kitex ../idl/xxxx.thrift

生成后的文件结构可以查看

kitex:www.cloudwego.io/zh/docs/kit… hertz:www.cloudwego.io/zh/docs/her…

现在就可以进行编码了, 在hertz server文件夹下 biz/handler/api/xxxx.go中可以找到hz为我们生成的代码,在这里添加代码逻辑即可。这里因为是kitex与hertz整合,所以需要获得rpc相应作为网络响应结果。因此需要创建client连接对应的server,

   client, err := studentmanagement.NewClient("student", client2.WithHostPorts("127.0.0.1:8888"))
    if err != nil {
        panic(err)
    }

特别的这里需要将hertz_server的request转化为rpc_server的request

   reqRpc := &management.QueryStudentRequest{
        Num: fmt.Sprintf("%d", req.Num),
    }

    respRpc, err := client.QueryStudent(ctx, reqRpc)
    if err != nil {
        panic(err)
    }

同样的需要转化response

   resp := &api.QueryStudentResponse{
        Num:    respRpc.Num,
        Name:   respRpc.Name,
        Gender: respRpc.Gender,
    }

这样启动rpc服务器后再启动hertz服务器就可以进行网络响应了。