## 1: 问题描述:
项目正常使用,半年没有更新;进程重启后一个grpc依赖服务突然失败,报错信息如下:
```go
{"id":"go.micro.client","code":500,"detail":"none available","status":"internal server error"}
```
## 2: 根据报错信息排查
思考:(1)项目代码一直没有改动,2个项目之间依赖的服务报错. 通过搜索报错,猜测是服务注册有问题;
(2)想通过consul webUI来查看服务节点状态,但由于各种问题(nginx等配置有问题).改用命令行查看
(3)curl http://127.0.0.1:8500/v1/agent/checks ,注册地址自己修改
(4) 通过consul查看服务节点及其状态,发现服务注册有问题,证实上面的猜测
(5) 思考? 项目代码一直没有动,服务注册有问题,可能是grpc包更新的问题,查看https://github.com/micro/go-grpc
(6) github查看包更新了,根据提示使用新的包https://github.com/micro/go-micro
(7) 测试服测试通过,服务正常了.可是发到线上发现报错,"Server register error: Put http://127.0.0.1:8500/v1/agent/service/register: dial tcp 127.0.0.1:8500: connect: connection refused"
(8)线上服务register address 怎么是默认的127.0.0.1:8500?
## 3:通过github.com/micro/go-micro/registry/consul 添加服务地址,测试通过.
代码如下:
```go
// Get 获取服务接口
func Get(registries ...string) micro.Service {
reg := consul.NewRegistry(
registry.Addrs(registries...),
)
s := micro.NewService(
micro.Name(config.Get("SERVICE.NAME")),
// micro.Registry(registry.NewRegistry(registry.Addrs(registries...))),
micro.Registry(reg),
micro.RegisterTTL(time.Second*6),
micro.RegisterInterval(time.Second*3),
)
return s
}
// Start 启动服务器
func Start(registries ...string) error {
s := service.Get(registries...)
s.Init()
proto.RegisterAlmsConstructHandler(s.Server(), new(impl.Impl))
err := s.Run()
return err
}
```
有疑问加站长微信联系(非本文作者)