在本次项目中,预期使用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服务器就可以进行网络响应了。