Dubbo: 对官方文档模糊地方的验证及补充
验证环境是dubbo-2.6.2。
-
在同一XML中可以声明多个实现同一接口的dubbo:service,都会被暴露出去,不管是否标识了id属性。
-
XML配置中dubbo:service可以指定多个协议,若不指定,默认会使用声明的所有协议
-
若service有版本号,则reference必须也声明版本号才能对接,若不声明,默认只会调用不声明版本号的service,可以通过version="*"来匹配所有(dubbo 2.2.0以后支持)。group逻辑同理,需要声明"*"
-
dubbo:protocol中没有lazy属性,在dubbo:reference和dubbo:consumer中有。这属性决定了是从容器中获取实例时还是在真正调用实例方法时建立连接。(本来reference就有延迟初始化,加上lazy延迟的是与provider的真正连接到方法调用时,而注册已在初始化时完成)。
-
local stub(本地存根)一般在provider端实现,但是逻辑会在consumer端缓存并执行。local mock(本地伪装)一般在consumer端实现,用于服务降级。 可将mock和stub实现类和接口定义放在同一个模块中。
-
mock的配置(在xml中):
- mock=“false” 禁用mock机制,默认配置为禁用。
- mock=“true“ 启用mock机制,调用类名必须是接口+Mock。比如DemoService接口对应的DemoServiceMock。
- mock="com.xxx.xxMock" 启用mock机制,指明调用类。
- mock="return null" 启用mock机制,直接指明mock处理语句。
- mock机制能配置什么时候调用处理逻辑,控制符为fail,force。上面的例子可以写为mock=”fail:return null", mock="fail:com.xxx.xxMock", mock="force:return null", mock="force:com.xxx.xxMock"等。fail控制当正常服务调用失败时调用mock逻辑。force控制不进行正常服务调用,强制直接执行mock逻辑。
-
connections 属性默认为0,文档中xml配置参考中的默认值100有误。0表示consumer对provider任何服务的调用共用一条长连接(一般consumer和provider多对一,每对之间单一长连接)。设置为正整数表示单个服务或方法可以有独立的相应数量的长连接,重复配置遵循配置覆盖原则。
-
粘滞连接是声明sticky = true,官方文档示例声明在dubbo:protocol中,经实验应该声明在dubbo:consumer和dubbo:reference中