1. 分组

官方文档:

service-group​dubbo.apache.org
7e73c4d95af4c3a7a9ea4ec977a4ffcf.png

dubbo支持接口的灵活配置,当一个接口有多个实现时,可以选择使用group 分组。

provider的xml配置:

<bean id="groupServiceA"
class="com.sy.dubbo.group.GroupServiceImplA"/>
<bean id="groupServiceB"
class="com.sy.dubbo.group.GroupServiceImplB"/>
<dubbo:service group="A"
interface="com.sy.dubbo.service.ServiceApi"
ref="groupServiceA"/>
<dubbo:service group="B"
interface="com.sy.dubbo.service.ServiceApi"
ref="groupServiceB"/>

注解如下:

@Service(interfaceClass = OrderServiceAPI.class,group = "order2017")
public class OrderServiceImpl2017 implements OrderServiceAPI

consumer在使用的时候:

xml:

如果group指定A或者B,那么就调用A或B,如果同时指定A B,那么dubbo会在A B之间轮询调用。有点类似负载均衡。

<dubbo:reference id="consumerService" group="A,B"
merger="true"
interface="com.sy.dubbo.service.ServiceApi"
/>

注解:

@Reference(
interfaceClass = OrderServiceAPI.class,
check = false,
group = "order2017")
private OrderServiceAPI orderServiceAPI

2.聚合

group-merger​dubbo.apache.org
7e73c4d95af4c3a7a9ea4ec977a4ffcf.png

有多个分组,想要把 分组的结果合并,可以使用:

搜索所有分组

<dubbo:reference interface="com.xxx.MenuService" group="*" merger="true" />

合并指定分组

<dubbo:reference interface="com.xxx.MenuService" group="aaa,bbb" merger="true" />

配置灵活

3、版本控制

multi-versions​dubbo.apache.org
7e73c4d95af4c3a7a9ea4ec977a4ffcf.png

当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。

可以按照以下的步骤进行版本迁移:

  1. 在低压力时间段,先升级一半提供者为新版本
  2. 再将所有消费者升级为新版本
  3. 然后将剩下的一半提供者升级为新版本

provider xml:

<bean id="versionServiceA"
class="com.sy.dubbo.version.VersionServiceImplA"/>
<bean id="versionServiceB"
class="com.sy.dubbo.version.VersionServiceImplB"/>
<dubbo:service version="0.1"
interface="com.sy.dubbo.service.ServiceApi"
ref="versionServiceA"/>
<dubbo:service version="0.2"
interface="com.sy.dubbo.service.ServiceApi"
ref="versionServiceB"/>

consumer指定版本:

<dubbo:reference id="consumerService"
version="0.1"
interface="com.sy.dubbo.service.ServiceApi"
/>

源码:

链接:https://pan.baidu.com/s/1Ym7jaZpWNPLvdXTTxqz5ZA

提取码:ngio

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐