分享
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
## 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
}
```
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3419 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传