go框架三件套
第二件 PRC -- Kitex
文档地址:www.cloudwego.io/zh/docs/kit…
1.安装kitex代码生成工具
这里没什么好说的,但是kitex对Window支持不完善,本地开发建议用虚拟机或者WSL2,框架地址
安装 kitex:go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
安装 thriftgo:go install github.com/cloudwego/thriftgo@latest
安装完成后使用kitex -version 显示版本号即为安装成功
2.定义IDL
如果要进行RPC,就需要知道对方的接口是什么,需要传什么参数,也需要知道返回值。这时候需要IDL来约定双方的协议,就像在写代码的时候需要调用某个函数,就需要知道函数的签名一样(直接在下面结构体中更改即可)
namespace go api
struct Request {
1:string message
}
struct Response {
1: string message
}
service Echo {
Response echo(1:Request req)
}
3.Kitex生成代码
使用 kitex -module example -service example echo.thrift命令生成代码(会生成一个树结构,这里很像linux)
build.sh:构建脚本
kitex_gen:IDL内容相关的生成代码,主要是基础的Server/Client代码
main.go:程序入口
handler.go:用户在该文件里实现IDL service定义的方法
4.kitex的基础使用
在handler.go中实现(server端),下面是handler.go的代码,默认监听8888端口
package main
import(
"context"
"example/kitex_gen/api"
)
//定义
type EchoImpl struct{}
//接口
func (s *EchoImpl) Echo(ctx context.Context,req *api.Response,err error){
//TODO : Your code here
return
}
Client端
import "example/kitex_gen/api/echo"
import "github.com/couldwego.kitex/client"
...
c,err := echo.NewClient("example",clientWithHostPorts("0.0.0.0:8888"))
if err != nil {
log.fatal(err)
}
发起请求
import "example/kitex_gen/api"
...
req := &api.Request{Message:"my request"}
resp,err := c.Echo(context.Background(),req,callopt.WithRPCTimeout(3*time.Second))
if err != nil{
log.Fatal(err)
}
log.Println(resp)
5.kitex服务注册与发行
目前kitex的服务注册与发现已经对接了主流了服务注册与发现中心,如ETCD,Nscos等
这里会另开一篇文章去写,专门讲解,写完后这里会附上文档地址
6.kitex生态
各种扩展地址:www.cloudwego.io/zh/docs/kit…
题外话:现在很多公司都会使用这种类似的代码生成框架,我现在实习就是20多个前端页面直接生成器生成出来就可以了,然后把前端简单的逻辑丢给我来执行和改bug,也就导致前端人员疯狂缩水,因此不想被替代还是要自身硬才可以
吐槽:注册那边代码也太多了,而且逻辑性很强,为了保住这篇算数,会另开一个,估计代码会比较多,我会尽量弄懂并且理解出来,今天刚画完20来个页面,明天又有新项目,这次要我带一个新人全栈开发了哈哈(明明我也是新人)