# 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各功能使用的代码