为什么dubbo要分组配置?
因为服务器有限,想在同一个注册中心中,分隔测试和开发环境。
理解分组聚合含义
按组合并返回结果。从不同group中选取部分内容合并他们结果返回,这便是分组聚合。
案例强化理解:
例如你去吃火锅,服务员给你一个菜单,菜单上按不同菜类型(汤底,底肉类,刺身,丸子类等),现在你从每种选取一个形成订单告,返回给服务员告诉他们你要这些,这就是一个简单的聚合菜单项
Dubbo分组聚合-配置
provider层
@DubboService注解实现
import org.apache.dubbo.config.annotation.DubboService;
@DubboService(group = "test")
public class StudentServiceImpl implements StudentService
{
consumer层
通过dubbo:reference配置实现
<dubbo:reference interface="@DubboReference-Service接口路径" group="分组范围" merger="合并策略" />
1 * 搜索所有分组
<dubbo:reference interface="com.cxl.service.xxService" group="*" merger="true" />
2 groups 合并指定分组
<dubbo:reference interface="com.cxl.service.xxService" group="分组名1,分组名2" merger="true" />
3 指定方法合并结果,其它未指定的方法,将只调用一个 Group
<dubbo:reference interface="com.cxl.MenuService" group="*">
<dubbo:method name="getfindList" merger="true" />
</dubbo:service>
4 某个方法不合并结果,其它都合并结果
<dubbo:reference interface="com.cxl.MenuService" group="*" merger="true">
<dubbo:method name="getadd" merger="false" />
</dubbo:service>
5 指定合并策略,缺省根据返回值类型自动匹配,如果同一类型有两个合并器时,需指定合并器的名称
<dubbo:reference interface="com.mmcro.student.service.StudentService"
id="myStudentc" group="b,c" >
<dubbo:method name="calTotal" merger=".myMerge"></dubbo:method>
</dubbo:reference>
6 指定合并方法,将调用返回结果的指定方法进行合并,合并方法的参数类型必须是返回结果类型本身
<dubbo:reference interface="com.cxl.MenuService" group="*">
<dubbo:method name="getList" merger=".addAll" />
</dubbo:service>
dubbo系相关文章
Thanks!