划分微服务后 rpc远程调用找不到服务

来源:10-12 编码实战: 改造api网关service

慕姐7389518

2020-04-13

环境是 本地运行go(127.0.0.1/192.168.174.1) 程序consul (192.168.174.200:8500) 在虚拟机中的docker下安装

在这一步调用报错,请问是什么原因呢 服务都已启动!]
本地调用

用户服务

api网关

consul服务

写回答

1回答

xiaomo

2020-04-14

同学你好,其中一个可能的原因是由于consul不能正常主动销毁service实例引起的,就是当已注册的service退出后,consul没有正常感知并作出清理的动作.可以先检查一下,在向consul注册的时候,是否已经加上了以下配置:

	service := micro.NewService(
		micro.Name("go.micro.service.user"),
		micro.RegisterTTL(time.Second*10),  // 指定ttl为10, 即超时10秒后consul可删除service记录
		micro.RegisterInterval(time.Second*5), // 指定service定期发送心跳注册间隔为5秒
	)

如果以上都设置了,可以检查下,如果所有service都手动关闭后,consul是否还保存service的相关记录.是的话则是consul工作不正常;不是的话,再进行下一步的判断:可以先查找一下service对应的日志.如果有错误,再贴一下来讨论一下.

0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程