网站建设最简单的教程视频教程,提供邯郸做移动网站,做暧暧视频网站免费,静态班级网站概述 
现在#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