以consul为注册中心的相关程序开发与配置demo
Go to file
suguo.yao d0ca855fdc 注意测试中代码编写,测试通过服务个别中断不会导致程序出错退出 2021-01-23 23:10:10 +08:00
client 注意测试中代码编写,测试通过服务个别中断不会导致程序出错退出 2021-01-23 23:10:10 +08:00
consul 这里有个问题,getclient中每次生成新的会导致consul限流,如果使用同一个好像时间长了会出异常 2021-01-23 22:54:55 +08:00
health 支持多个服务启动,方便之后的测试 2021-01-23 15:10:11 +08:00
proto 注册consul及DeRegister测试通过 2021-01-23 14:33:41 +08:00
sample 基本实现服务查找与调用 2021-01-23 21:58:32 +08:00
.gitignore 支持多个服务启动,方便之后的测试 2021-01-23 15:10:11 +08:00
LICENSE 版权说明中文 2021-01-22 22:56:06 +08:00
Makefile 解决mac下GOPATH变量读取问题 2021-01-23 13:57:28 +08:00
README.md 支持多个服务启动,方便之后的测试 2021-01-23 15:10:11 +08:00
go.mod 增加grpc健康检查接口 2021-01-23 13:57:51 +08:00
go.sum 增加grpc健康检查接口 2021-01-23 13:57:51 +08:00
logger.go 引入logrus 2021-01-23 10:37:04 +08:00
main.go 这里有个问题,getclient中每次生成新的会导致consul限流,如果使用同一个好像时间长了会出异常 2021-01-23 22:54:55 +08:00

README.md

consul-demo

以consul为注册中心的相关程序开发与配置demo

开发IDE:vscode

1. vscode-proto3 proto文件编辑

开发环境

1. sudo apt install protobuf-compiler
2. go get -v -u github.com/golang/protobuf/protoc-gen-go
3. go get -v -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway
4. go get -v -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger

下载googleapis,本地源码库做不定期镜像

git clone git@myschools.me:suguo/googleapis.git

编写proto文件见网络上相关教程注意正式项目中的规范定义

google apis使用时的路径注意

生成proto代码,具体代码指令见Makefile

make proto

实现服务端代码

1. 准备文件夹与sample.proto对应
2. 编写struct名称固定为Server
3. 实现proto中定义的接口

实现服务启动,核心代码

s := grpc.NewServer()
pb.RegisterHelloServer(s, &sample.Server{})

go func() {
	log.Printf("starting grpc service on %s\n", ":9001")
	lis, err := net.Listen("tcp", ":9001")
	if err != nil {
		log.Fatal("fail to open port: ", err)
	}
	err = s.Serve(lis)
	if err != nil {
		log.Fatal("fail to open microservice: ", err)
	}
}()

注册中心注册代码编写

编写在文件consul-service.go中作为源代码组件形式分发

实现客户端代码

启动注册中心consul

1. 开发模式
consul agent -dev -bind=0.0.0.0 -advertise=192.168.8.254 -client=0.0.0.0 -ui

运行及测试并展开后续针对consul各功能使用的代码