在使用dubbo的过程中,我们经常会遇到以下两类问题:
1.明明注册了dubbo接口服务,但是业务方一调用就说接口调不同,提示forbid consumer access service。
com.alibaba.dubbo.rpc.RpcException: Forbid consumer 10.26.33.175 access service com.aaa.bbb.api.service.RewardConfigFacade from registry zk01-test.aaa.com:3298 use dubbo version 2.1.2, Please check registry access list (whitelist/blacklist).
那么如何快速自证确实有注册该接口服务呢?
2.环境没有做好隔离,不同环境的机器注册到同一个zk上了,导致接口返回的结果出现诡异现象。那么如何快速找出机器IP?
其实这两个问题,归根到底都是一个问题,即如何在zookeeper上查看指定接口的提供方?
安装zookeeper
链接:https://blog.csdn.net/weixin_33207551/article/details/86521905
准备材料
zookeeper信息如下:
address: zk01-test.aaa.com:3298 group: /home/xxx/dubbo username: home password: 123456
需要查看的注册接口
com.aaa.ccc.api.PeoplePackageFacade
链接zookeeper服务器
/* 命令格式:zkCli -server zookeeper地址 */命令:zkCli -server zk01-test.aaa.com:3298
登录成功后的页面如下:
zhanxiaotong@zhanxiaotongdeMacBook-Pro-2 ~ zkCli -server zk01-test.aaa.com:3298Connecting to zk01-test.aaa.com:3298Welcome to ZooKeeper!JLine support is enabledWATCHER::WatchedEvent state:SyncConnected type:None path:null[zk: zk01-test.aaa.com:3298(CONNECTED) 0]
添加认证用户
/* 命令格式:addauth digest 用户名:密码 */命令:addauth digest home:123456
查看用户所在组下注册的接口
/* 命令格式:ls 组名 */命令:ls /home/xxx/dubbo
如下是命令返回结果
[zk: zk01-test.aaa.com:3298(CONNECTED) 1] ls /home/xxx/dubbo[com.aaa.ccc.api.PeoplePackageFacade, com.aaa.bbb.business.quality.facade.XXXFacade]
如果该命令返回的结果中没有我们提供的接口,那么说明我们的接口并没有注册这个zk上,因此需要看看看看我们的代码以及配置是否有问题。如果有我们提供的接口,则需要继续往下执行。
查看接口的服务提供方
/* 命令格式:ls 组名/接口全路径/providers */命令:ls /home/xxx/dubbo/com.aaa.ccc.api.PeoplePackageFacade/providers
如下是命令返回的结果
[dubbo%3A%2F%2F10.126.200.6%3A10732%2Fcom.aaa.ccc.api.PeoplePackageFacade%3Fanyhost%3Dtrue%26application%3Dtest-aaa.bbb.cc.com%26default%3Dtrue%26default.retries%3D1%26default.service.filter%3DmlsProviderFilter%2CiprdDubboFilter%26default.timeout%3D3000%26default.version%3D1.0.1%26dispatcher%3Dmessage%26dkimi.app%3Dtest-aaa.bbb.cc.com%26dubbo%3D2.1.2%26generic%3Dfalse%26interface%3Dcom.aaa.ccc.api.PeoplePackageFacade%26logger%3Dslf4j%26methods%3DqueryEmployeeDataListByPackageCode%2CqueryPeoplePackageInfoListByRoleCode%2CqueryEmployeeDataListByPackageCodeAndPt%2CfilterPackageByCityCode%2CqueryUcIdListByPackageCode%2CqueryPeoplePackageInfoByUcId%2CqueryPeoplePackageInfoByUcIdAndRoleCode%2CfilterPeoplePackageCodeByUcId%2CqueryPeoplePackageInfoByPackageCode%26organization%3Dfang-rd%26pid%3D9937%26revision%3D1.0.7-SNAPSHOT%26side%3Dprovider%26timestamp%3D1603528971648%26version%3D1.0.0, dubbo%3A%2F%2F10.126.134.66%3A10751%2Fcom.aaa.ccc.api.PeoplePackageFacade%3Fanyhost%3Dtrue%26application%3Dagent-info-broadcast%26default%3Dtrue%26default.retries%3D1%26default.service.filter%3DmlsProviderFilter%2CiprdDubboFilter%26default.timeout%3D5000%26default.version%3D1.0.1%26dispatcher%3Dmessage%26dubbo%3D2.1.2%26generic%3Dfalse%26interface%3Dcom.aaa.ccc.api.PeoplePackageFacade%26logger%3Dslf4j%26methods%3DqueryPeoplePackageInfoListByRoleCode%2CqueryEmployeeDataListByPackageCode%2CqueryEmployeeDataListByPackageCodeAndPt%2CfilterPackageByCityCode%2CqueryUcIdListByPackageCode%2CqueryPeoplePackageInfoByUcId%2CqueryPeoplePackageInfoByUcIdAndRoleCode%2CfilterPeoplePackageCodeByUcId%2CqueryPeoplePackageInfoByPackageCode%26organization%3Dfang-rd%26pid%3D75032%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1603519844455%26version%3D1.0.0]
从结果中,我们可以看到该zk上注册了com.aaa.ccc.api.PeoplePackageFacade接口服务的机器有两台,IP分别是10.126.200.6和10.126.134.66。
总结
本文首先介绍工作中常见的两类dubbo问题,然后介绍了这两类问题的解决思路,即如何在zk上查看dubbo接口服务的提供方。最后希望对大家排查工作中的dubbo问题能有帮助。