group:当一个接口有多种实现时,可以用group区分;
1 <!-- start--服务提供者 --> 2 <!-- dubbo中当一个接口有多个实现类时,需要添加group来区分 --> 3 <!-- 机器A:服务提供者 --> 4 <bean id="zhenliangsongA" class="com.xxx.ServiceImplA" /> 5 <dubbo:service group="song" interface="com.xxx.InterfaceService" ref="zhenliangsongA" /> 6 <!-- 机器B:服务提供者 --> 7 <bean id="zhenliangsongB" class="com.xxx.ServiceImplB" /> 8 <dubbo:service group="wang" interface="com.xxx.InterfaceService" ref="zhenliangsongB" /> 9 <!-- end--服务提供者 --> 10 11 <!-- start--服务消费者 --> 12 <!-- 机器C:服务消费者:dubbo消费者也可以设置为“*”,表示消费任意一个group的服务均可 --> 13 <dubbo:reference id="consumerService" interface="com.xxx.InterfaceService" group="*" /> 14 <!-- 机器D:服务消费者:dubbo消费者也可以设置为“song”,表示只能消费group是song的接口实现类 --> 15 <dubbo:reference id="consumerService" interface="com.xxx.InterfaceService" group="song" /> 16 <!-- 机器E:服务消费者:dubbo消费者也可以设置为“wang”,表示只能消费group是wang的接口实现类 --> 17 <dubbo:reference id="consumerService" interface="com.xxx.InterfaceService" group="wang" /> 18 <!-- end--服务消费者 -->
附加:顺便将version的使用也一并说一下;
version:当一个接口的实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用;
1 <!-- start--服务提供者 --> 2 <!-- 机器A提供1.0.0版本服务 --> 3 <dubbo:service interface="com.xxx.ProviderService" version="1.0.0" /> 4 <!-- 机器B提供2.0.0版本服务 --> 5 <dubbo:service interface="com.xxx.ProviderService" version="2.0.0" /> 6 <!-- end--服务提供者 --> 7 8 <!-- start--服务消费者 --> 9 <!-- 机器C消费1.0.0版本服务 --> 10 <dubbo:reference id="consumerService" interface="com.xxx.ProviderService" version="1.0.0" /> 11 <!-- 机器D消费2.0.0版本服务 --> 12 <dubbo:reference id="consumerService" interface="com.xxx.ProviderService" version="2.0.0" /> 13 <!-- 消费任意一个版本服务 --> 14 <dubbo:reference id="consumerService" interface="com.xxx.ProviderService" version="*" /> 15 <!-- end--服务消费者 -->
接口升级时注意事项:
* 在低压力时间段,先升级一半的提供者为新版本;
* 再将所有的消费者升级为新版本;
* 然后将剩下的一半提供者升级为新版本;