地址

感兴趣的朋友关注给个 star 哟♥

ifconfigure/go-kit-grpc-demo: go-kit和grpc的融合,包括go-kit的分层体系和grpc的交互的例子 (github.com)

安装

1.git clone github.com/ifconfigure/go-kit-grpc...

2.go mod download

简介


结合了 go-kit 和 grpc 的学习使用,go-kit 因为分层的关系,会使得代码生涩难读,再加上 go-kit 一般是配合 gRpc 使用,所以便有了这个 demo。

可以使用它作为项目的初始化框架,在分层的体系上尽量保持了精简,只需要稍微花点时间理解一下每层的意义,便可以快速进行微服务开发。

TODO: 后期会引入服务注册 / 发现,熔断,降级,链路追踪,感谢朋友 star💖一波

如果想运行纯 GRPC 的 DEMO

1. 启动 gRPC Server

1) cd gRpc

2) go build grpc-server.go

3) ./grpc-server

 

2. 启动 gRPC Client


1) go build grpc-client.go

2) ./grpc-client

如果想运行 go-kit + gRpc 的 demo

1) cd go-kit

2) go build rpc-server.go

3) ./rpc-server

4) 切换到 grpc 目录下编译并启动 grpc-client, 例:./grpc-client

 

目录结构描述


├── go-kit
go-kit的主要目录, go-kit的分层思想和微服务都应该写在这里面

│ ├── EndPoint
负责业务逻辑,并且返回给Handler

│ ├── Handler
负责调用EndPoint,也就是把EndPoint和TransPort层封装起来,并且返回给grpc调用,可以理解为中间人

│ ├── TransPort
跟go-kit的思想一样,就是负责数据传入的处理,比如传入检验等

├── gRpc
grpc的业务逻辑

│ ├── PB
生成的PB文件放这里

│ ├── Proto
Proto3原始文件,为什么和PB要分开放是因为可以单独共享proto文件给其它团队生成调用

│ ├── Service
这里可以单独写grpc里的业务逻辑,是和go-kit分开的,如果在go-kit的endpoint写了业务就不用在这里写,当然也可以在这里写业务通过endpoint调用

├── main.go