新入职此公司, 发现公司使用的框架原来是传说中的分布式的(原谅我以前在传统公司工作,并远离浪潮久矣), 使用过程中发现各服务之间使用 dubbo 进行通信. 特地总结下遇见的坑,为以后总结经验. 欢迎大家指正.
1. com.alibaba.dubbo.rpc.RpcException: Forbid consumer 172.88.1.6 access service com.xxxx.open.trade.api.ElemeOpenTradeService from registry 192.168.101.24:2181 use dubbo version 2.5.3, Please check registry access list (whitelist/blacklist).
网上查了下, 遇见此类问题 , 总的来说就是一句话 服务端的接口 不让访问了,
原因1' 接口长时间无人访问, 自动挂掉了, 个人没遇见过,猜想是与服务端的配置有关系
2' 权限不匹配. 接口发布过程中 服务端定义了group="groupVIP", version="1.0" 等等属性字段, 相应客户端配置也需要定义group="groupVIP", version="1.0" --同服务端一致. 我就是因为group定义不匹配导致调用失败 .
附上dubbo使用配置信息
服务端配置:
<dubbo:consumer check="false"/> <!-- 提供方应用信息,用于计算依赖关系 --> <dubbo:application name="open-api"/> <!-- 使用zookeeper注册中心暴露服务地址 --> <!-- 到这里调用 --> <dubbo:registry protocol="zookeeper" address="${dubbo.registry.address}" id="zookeeperClient"/> <!-- 用dubbo协议在33000端口暴露服务 --> <dubbo:protocol name="dubbo" port="33000" dispather="all" threadpool="cached" threads="5000" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.wangshuyu.open.trade.api.OpenTradeService" ref="jdOpenTradeService" group="vip" version="1.0" registry="zookeeperClient" owner="wangsy" />
客户端配置
<dubbo:reference id="skuShopStockService" interface="com.wangshuyu.product.service.api.SkuShopStockService" check="false" version="1.0" url="" registry="zookeeperClient" protocol="dubbo" timeout="15000"/>