package main
import (
"New-lesson/account_srv/biz"
"New-lesson/account_srv/proto/pb"
"New-lesson/internal"
"flag"
"fmt"
consulapi "github.com/hashicorp/consul/api"
"go.uber.org/zap"
"google.golang.org/grpc"
"google.golang.org/grpc/health"
"google.golang.org/grpc/health/grpc_health_v1"
"net"
)
func main() {
flag.Parse()
addr := fmt.Sprintf("%s:%d", internal.ViperConf.AccountSrvConfig.Host, internal.ViperConf.AccountSrvConfig.Port)
server := grpc.NewServer()
pb.RegisterAccountServiceServer(server, &biz.AccountServer{}) //注册用的谁的结构体关联的方法,就用谁的结构体进行注册.
listen, err := net.Listen("tcp", addr)
if err != nil {
zap.S().Error("account_srv 启动异常", err.Error())
panic(err)
}
grpc_health_v1.RegisterHealthServer(server, health.NewServer()) //将已经有的server注册到grpc的健康检查中
defaultConfig := consulapi.DefaultConfig() //初始化默认consul配置
defaultConfig.Address = fmt.Sprintf("%s:%d",
internal.ViperConf.ConsulConfig.Host,
internal.ViperConf.ConsulConfig.Port)
client, err := consulapi.NewClient(defaultConfig) //生成consul注册对象
if err != nil {
zap.S().Error("consul.NewClient err:", err)
}
checkAddr := fmt.Sprintf("%s:%d", internal.ViperConf.AccountSrvConfig.Host, internal.ViperConf.AccountSrvConfig.Port)
//checkAddr 是注册服务的地址.不是consul的服务地址用于注册服务的监控检测
registration := consulapi.AgentServiceRegistration{
ID: internal.ViperConf.AccountSrvConfig.SrvName, //grpc服务的id
Name: internal.ViperConf.AccountSrvConfig.SrvName, //grpc服务的Name
Tags: internal.ViperConf.AccountSrvConfig.Tags, //grpc服务的Tags
Port: internal.ViperConf.AccountSrvConfig.Port, //grpc服务的 端口号
//Address: defaultConfig.Address,
Address: internal.ViperConf.AccountSrvConfig.Host, //这里的地址是注册服务的地址.不是consul的地址.
Check: &consulapi.AgentServiceCheck{
Interval: "1s", //监控检测间隔时间
Timeout: "3s", //监控检测超时时间
GRPC: checkAddr, //grpc服务对应的地址和端口号
DeregisterCriticalServiceAfter: "10s", //超过这个时间后自动将注册服务从consul中删除 ..
//删除时间过长.会有缓存导致服务注册有问题.
},
} //告诉consul要注册服务的配置信息
err = client.Agent().ServiceRegister(®istration)
if err != nil {
zap.S().Error("srv服务注册失败.", err)
}
err = server.Serve(listen)
if err != nil {
panic(err)
}
}
grpc服务注册到consul中
最新推荐文章于 2023-11-23 05:18:59 发布