网站建设最简单的教程视频教程,提供邯郸做移动网站,做暧暧视频网站免费,静态班级网站概述
现在#xff0c;我们使用consul客户端的api来把GRPC服务实现注册到consul上#xff0c;非Go-Micro的形式其实#xff0c;consul官方提供了对应的接口调用来实现#xff0c;golang中的consul/api包对其进行了封装我们使用consul/api来进行展示
目录结构
gitee.com/g…概述
现在我们使用consul客户端的api来把GRPC服务实现注册到consul上非Go-Micro的形式其实consul官方提供了对应的接口调用来实现golang中的consul/api包对其进行了封装我们使用consul/api来进行展示
目录结构
gitee.com/go-micro-services/consul-grpc├── protos│ └── users│ ├── users.proto│ ├── users.pb.go│ └── users_grpc.pb.go├── main.go└── go.mod1 protos 相关
这里protos 相关参考之前的文章https://blog.csdn.net/Tyro_java/article/details/136632015
2 main.go
package mainimport (contextfmtnetstrconvgitee.com/go-micro-services/consul-grpc/protos/usersgithub.com/hashicorp/consul/apigoogle.golang.org/grpcgoogle.golang.org/grpc/healthgoogle.golang.org/grpc/health/grpc_health_v1
)// 定义通用度变量, 这里以后可以做成配置仅做简单举例
var (host string 127.0.0.1port int 9000portStr string strconv.Itoa(port)address host : portStr
)type Users struct {users.UnimplementedUsersServer
}func (g Users) AddUser(c context.Context, req *users.AddUserReq) (*users.AddUserRes, error) {fmt.Println(req)return users.AddUserRes{Success: true,Message: 增加用户成功,}, nil
}func (g Users) GetUser(c context.Context, req *users.GetUserReq) (*users.GetUserRes, error) {var tempList []*users.UsersModelfor i : 0; i 10; i {tempList append(tempList, users.UsersModel{Name: 商品 strconv.Itoa(i),Age: int32(i),})}return users.GetUserRes{UserList: tempList,}, nil
}func main() {// ----------------------- 1. 注册consul服务 -----------------------// 1、初始化consul配置consulConfig : api.DefaultConfig()consulConfig.Address 127.0.0.1:8500 // consul服务的默认地址可省略如果不是本机需要补充// 2、获取consul操作对象consulClient, _ : api.NewClient(consulConfig)// 3、配置注册服务的参数agentService : api.AgentServiceRegistration{ID: uuu-1, // 不要重复Tags: []string{test},Name: Users-Service,Port: port, // 和下面 grpc server 的配置相同, 否则就连接不上微服务Address: host, // 同上Check: api.AgentServiceCheck{GRPC: address,Timeout: 3s,Interval: 1s,DeregisterCriticalServiceAfter: 5s,},}// 4、注册服务到consul上consulClient.Agent().ServiceRegister(agentService)// ----------------------- 2. 注册GRPC -----------------------// 1、获取Grpc示例grpcServer : grpc.NewServer()// 2、注册服务users.RegisterUsersServer(grpcServer, Users{})// 3. 健康检查grpc_health_v1.RegisterHealthServer(grpcServer, health.NewServer())// 4、监听端口listener, err : net.Listen(tcp, address)if err ! nil {fmt.Println(err)}// 5、退出服务的时候关闭监听defer listener.Close()// 6、启动服务grpcServer.Serve(listener)
}主要关注 main 函数中的注册和健康检查的配置
运行效果 可见运行和健康检查都正常
其他
源码: https://gitee.com/go-micro-services/consul-grpcconsul文档https://developer.hashicorp.com/consul/docs/services/usage/checks#grpc-checks