Dubbo——服务治理

Dubbo服务治理包括集群部署、路由选择和负载均衡等容错机制。集群策略如Failover、Failfast等提供不同场景下的服务调用策略。路由选择通过ConditionRouter和ScriptRouter实现条件或脚本路由。负载均衡则有Random、RoundRobin、LeastActive和ConsistentHash策略。目录服务Directory用于获取Invoker列表,通过Router进行路由,LoadBalance执行负载均衡选择。
摘要由CSDN通过智能技术生成

服务治理


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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值