在整个集群容错的流程中,首先经过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

Dubbo负载均衡的总流程相关推荐

  1. Dubbo负载均衡的源码流程(2022.5.30)

    Dubbo负载均衡的源码流程 1.默认负载均衡策略:RandomLoadBalance(随机策略) 2.负载均衡策略存在以下五种: 2.1 RandomLoadBalance(随机) 2.2 Roun ...

  2. Dubbo 负载均衡的实现

    前言 负载均衡是指在集群中,将多个数据请求分散在不同单元上进行执行,主要为了提高系统容错能力和加强系统对数据的处理能力. 在 Dubbo 中,一次服务的调用就是对所有实体域 Invoker 的一次筛选 ...

  3. cstring只获取到第一个数_一文讲透 Dubbo 负载均衡之最小活跃数算法

    (给ImportNew加星标,提高Java技能) 作者:why技术(本文来自作者投稿) 本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版 ...

  4. 一文讲透Dubbo负载均衡之最小活跃数算法

    本文是对于Dubbo负载均衡策略之一的最小活跃数算法的详细分析.文中所示源码,没有特别标注的地方均为2.6.0版本. 为什么没有用截止目前的最新的版本号2.7.4.1呢?因为2.6.0这个版本里面有两 ...

  5. dubbo负载均衡代码分析1(leastactive策略)

    2019独角兽企业重金招聘Python工程师标准>>> 接上篇https://my.oschina.net/u/146130/blog/1569554 既然有集群容错,自然会有负载均 ...

  6. dubbo负载均衡-RandomLoadBalance

    dubbo负载均衡-RandomLoadBalance 发表于 2019-10-13 前言 之前在面试中被问及dubbo的负载均衡,当时没有系统的回答出来,今天查阅了一下官方文档,于是出现了这篇文章. ...

  7. 【RPC Dubbo】dubbo负载均衡策略

    文章目录 前言 1. 什么是负载均衡 1.1:负载均衡简介 1.2:简单解释 2. dubbo负载均衡策略 2.1 Random LoadBalance 2.2 RoundRobin LoadBala ...

  8. dubbo负载均衡。

    1.搭建zookeeper集群,搭建过程参考网上资料(地址为192.168.200.141:2182,192.168.200.141:2183,192.168.200.141:2184). 2.搭建d ...

  9. dubbo负载均衡策略解析

    dubbo负载均衡策略 前言:在上一篇博客中,介绍了zookeeper作为dubbo的注册中心是如何工作的,有一个很重要的点,我们的程序是分布式应用,服务部署在几个节点(服务器)上,当消费者调用服务时 ...

最新文章

  1. 网络分析概述之网络基础简介
  2. xDeepFM架构理解及实现
  3. 一元夺宝类项目的被拒
  4. C++ 设计员工类(Employee)
  5. 柯南变声器的算法实现原理
  6. kfold_机器学习gridsearchcv(网格搜索)和kfold validation(k折验证)
  7. 如何使用 Javascript/node.js 在 WebRTC 中构建音视频通话APP?
  8. 95-30-009-Channel-总述
  9. 20200217:下一个排列(leetcode31)
  10. 【数据结构和算法】广度优先BFS遍历图(树的层序遍历的拓展)
  11. 单日峰值2T发送量邮件营销平台实践经验
  12. 放弃VMware改投VirtualBox的五个理由
  13. 11个基于vue的UI框架
  14. 宁波诺丁汉计算机学院,宁波诺丁汉大学学子帝国理工计算机录取
  15. 一法通则百法通 佳能照片打印机连供改造
  16. vue-tree-chart 组织架构-树形图-流程图(含鼠标右击事件)
  17. linux下 redis如何清空缓存
  18. 关于股市行情与情绪指数的相关性
  19. 《Docker系列》Docker安装Hadoop
  20. 深度剖析ROC曲线以及AUC指标

热门文章

  1. js findIndex方法
  2. WebSocket心跳机制
  3. Oracle BBED 简单使用手册
  4. 计算机本科专业ASP项目
  5. 课后练习 第4章 递归
  6. 【C++】专项练习(2)(牛客)
  7. python求解多元一次方程
  8. Jenkins 核心概念:探索 Jenkins 魔法世界
  9. Python常用内建模块(内含实例)
  10. 如何阅读论文和阅读顺序?