场景:在项目A构成的一个集群中,其中的一台机器通过dubbo的方式调用集群的dubbo接口
问题:发现发起调用的机器调用到的服务一直都是本身,没有通过dubbo把请求负载到集群
解决:通过调试,在dubbo reference实例的代理类中,看到了invoke的一些信息,其中的地址显示类似:injvm:127.0.0.1......,这里有两个关键信息,一个是injvm,可以用来百度一下,第二是本地ip127.0.0.1,说明没有获取到机器的内网ip,直接从本地走了; 最后通过网上的说明,和dubbo的配置提示,加入了injvm="false"的参数,保证调用负载到集群内的一台上
配置如下:
<dubbo:reference id="apiInvoker" interface="cn.xxx.dubbo.ApiRemoterInvoker"
retries="0"
injvm="false"
registry="dubboRegistry"
connections="20"
check="false"
timeout="2000"/>