栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Dubbo负载均衡的总流程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Dubbo负载均衡的总流程

在整个集群容错的流程中,首先经过Directory获取所有的Invoker列表,然后经过Router根据路由规则过滤Invoker,最后幸存下来的Invoker还需要经过负载均衡这一关,选出最终要调用的Invoker

包装的负载均衡

负载均衡获取可用的服务实际是调用了AbstractClusterInvoker中定义的Invoker select方法,而不是直接使用LoadBalance方法。因为抽象父类在LoadBalance的基础上又封装了一些新特性

  1. 粘滞连接 Dubbo中有一种特性叫粘滞连接

粘滞连接用于有状态服务,尽可能让客户端总是向同一提供者发起调用,除非这个服务欧提供者挂了,在连接另一台

2.可用检测

Dubbo调用URL中,如果含有cluster.availablecheck=false,则不会检测远程服务是否可用,直接调用。如果不设置,则默认会开启检查,对所有的服务都做是否可用的检查,如果不可用,则再次做负载均衡

  1. 避免重复调用

对于已经调用过的远程服务,避免重复选择,每次都是用同一个节点,这种特性避免了在并发场景下,某个节点瞬间被大量请求。

整个逻辑过程大致可分为4步:
(1) 检查URL中是否有配置粘滞连接,如果有则使用粘滞连接的Invoker。如果没有配置粘滞连接,或者重复调用检测不通过,可用检测不通过,进入第二步
(2)通过ExtensionLoader获取负载均衡的具体实现,并通过负载均衡做节点的选择。对选择出来的节点做重复调用、可用性检测、通过则直接返回,否则进入第三步
(3)进行节点的重新选择。如果需要做可用性检测,则会遍历Directory中得到的所有节点,过滤不可用和已经调用过的节点,在剩余的节点中重新做负载均衡;如果不需要做可用性检测,那么也会遍历Directory中得到的所有节点,但只过滤已经用过的,在剩余的节点中重新做负载均衡。这里存在一种情况,就是在过滤不可用或已经调用过的节点时,节点全部被过滤,没有剩下任何节点,此时进入第四步
(4)遍历所有已经调用的节点,选出可用节点,通过负载均衡选出一个节点并返回,如果还找不到可调用节点,返回null

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676147.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号