dubbo-go3 rc2 无法找到服务提供方

发布于 2021-07-07  655 次阅读


  1. 使用环境
    1. dubbo-go 3.0 rc2
    2. nacos2.0
    3. 使用nacos做元数据中心
  2. 解决思路
    1. 查看服务注册
    2. 修改服务注册实例

查看服务实例时发现我的服务名称前多了dubbo@

首先试了一下这里把服务名称修正可以解决问题 ,那么可以看看为什么会导致服务名称和我们nacos服务的不一致

端点进入获取服务实例的放法,这里将组名和服务名拼接以后调用了GetServiceInfo方法 之后返回的实例名称就变成了 组名+拼接符号+服务名

GetServiceInfo方法中 首先在缓存map中获取缓存的服务信息

如果map中没有该key值存在则 进行信息更新updateServiceNow

updateServiceNowProcessServiceJson方法中 将查询到的服务信息更新到hr.serviceInfoMap中去,并写出文件信息

之后返回的service.host中的serviceName已经拼接了组合拼接字符

想到两个方式

1 在调用sc.hostReactor.GetServiceInfo 时将传入的参数直接改为服务名(原本为组名+分隔符@@+服务名)

2 将返回结果中的服务名中的其余字符去除

不确定修改后对其他组的用服务会不会有影响,再测试一下

使用方式一尝试实例将查询不到,返回实例为空

使用方式二尝试修改后发现能调用到了 并且不同分组下的服务之间也没影响

但是这样修改会导致客户端无法正确的在nacos监听服务,猜想这里应该不是问题的所在,servicename确实应该返回拼接后的服务名,应该是在调用服务的时候对有的服务进行判断

用本机测试的时候服务启动客户端服务信息被写到了本地的C:\Users\tanshijie\AppData\Local\Temp\cache\config目录下


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。