Dubbo——服务治理

服务治理


Dubbo提供了集群部署、路由、负载均衡等容错机制,在客户端引用服务时,由MockClusterInvoker封装具体的集群策略类,默认是FailoverCluster类,具体逻辑见《4.4.2 远程引用服务》部分。


由集群策略类将Directory中的多个Invoker伪装成一个Invoker,对上层调用端是透明的,不同的集群策略有不同的处理方式。主要流程基本是一致的。

1)首先调用MockClusterInvoker.invoke方法,判断是调用Mock功能还是具体的集群策略类,具体逻辑见《消费端调用》部分。后续调用具体集群策略类的invoke方法。

2)调用Directory.list获取Invoker列表;

 3)调用Router.route进行路由选择;

4)LoadBalance进行负载均衡选择;

5)最后获取Invoker对象;

1 集群

一、服务的集群


上图是集群服务的Invoker类的封装顺序。其中,FailoverClusterInovker是默认的集群策略类。

 

二、注册中心的集群

       对于注册中心的Invoker代理的创建,在ReferenceConfig.createProxy方法中处理。

       若在消费端配置一个注册地址的,则直接由代理工厂Protocol$Adpative根据注册地址URL中的协议选择RegistryProtocol类,然后调用该类的refer ()方法创建Invoker代理对象并封装成MockClusterInvoker对象返回;

       若在消费端配置多个注册地址的,则执行以下逻辑:

1、以每个注册地址URL为参数调用RegistryProtocol. refer ()方法创建Invoker代理对象并封装成MockClusterInvoker对象,生成了Invoker代理列表;

2、选择注册地址列表中最后一个注册地址作为创建最外层MockClusterInvoker对象的URL地址,大致逻辑是:

 2.1)在该URL地址中增加cluster参数以及值“available”,表示在存在多个注册地址的情况下只能使用AvailableCluster集群策略;

 2.2)使用StaticDirectory

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值