Dubbo负载均衡

1.什么是负载均衡?

负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动)的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源的过载。使用具有负载平衡而不是单个组件的多个组件可以通过冗余提高可靠性和可用性。负载平衡通常涉及专用软件或硬件。

在实际项目中,一个服务基本都是集群模式的,也就是多个功能相同的项目在运行,这样才能承受更高的并发

这时一个请求到这个服务,就需要确定访问哪一个服务器

Dubbo框架内部支持负载均衡算法,能够尽可能的让请求在相对空闲的服务器上运行

在不同的项目中,可能选用不同的负载均衡策略,以达到最好效果

Loadbalance:就是负载均衡的意思

2.Dubbo内置负载均衡策略算法

Dubbo内置4种负载均衡算法

  • random loadbalance:随机分配策略(默认)
  • round Robin Loadbalance:权重平均分配
  • leastactive Loadbalance:活跃度自动感知分配
  • consistanthash Loadbalance:一致性hash算法分配

实际运行过程中,每个服务器性能不同

在负载均衡时,都会有性能权重,这些策略算法都考虑权重问题

1.随机分配策略

假设我们当前3台服务器,经过测试它们的性能权重比值为5:3:1

下面可以生成一个权重模型

随机生成随机数

在哪个范围内让哪个服务器运行

优点:

算法简单,效率高,长时间运行下,任务分配比例准确

缺点:

偶然性高,如果连续的几个随机请求发送到性能弱的服务器,会导致异常甚至宕机

2.权重平滑分配

如果几个服务器权重一致,那么就是依次运行

但是服务器的性能权重一致的可能性很小

所以我们需要权重平滑分配

一个优秀的权重分配算法,应该是让每个服务器都有机会运行的

如果一个集群服务器性能比为5:3:1

1>A 2>A 3>A 4>A 5>A 6>B 7>B 8>B 9>C

10>A

上面的安排中,连续请求一个服务器肯定是不好的,我们希望所有的服务器都能够穿插在一起运行

Dubbo2.7之后更新了这个算法使用"平滑加权算法"优化权重平均分配策略

优点:

能够尽可能的在权重要求的情况下,实现请求的穿插运行(交替运行),不会发生随机策略中的偶发情况

缺点:

服务器较多时,可能需要减权和复权的计算,需要消耗系统资源

3.活跃度自动感知

记录每个服务器处理一次请求的时间

按照时间比例来分配任务数,运行一次需要时间多的分配的请求数较少

4.一致性Hash算法

根据请求的参数进行hash运算

以后每次相同参数的请求都会访问固定服务器

因为根据参数选择服务器,不能平均分配到每台服务器上

使用的也不多

Dubbo 负载均衡(4种策略算法)相关推荐

  1. 负载均衡—几种常见算法

    什么是负载均衡? 当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能.那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务 ...

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

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

  3. dubbo调用失败策略_面试官:dubbo负载均衡策略,集群容错策略,动态代理策略有哪些...

    面试官心理分析 继续深问吧,这些都是用 dubbo 必须知道的一些东西,你得知道基本原理,知道序列化是什么协议,还得知道具体用 dubbo 的时候,如何负载均衡,如何高可用,如何动态代理. 说白了,就 ...

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

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

  5. dubbo负载均衡策略配置

    前言 在生产环境中,服务的集群部署是常有的事,从消费端来说,本身并不关注所需要的服务是由哪台机器提供,但是为了应用的健壮性和高可用性,从消费端来说,可以配置一定的负载均衡策略,确保消费端的应用能够及时 ...

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

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

  7. dubbo负载均衡策略解析

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

  8. dubbo负载均衡策略和集群容错策略

    dubbo负载均衡策略 random loadbalance 默认情况下,dubbo是random load balance随机调用实现负载均衡,可以对provider不同实例设置不同的权重,会按照权 ...

  9. Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些?

    Dubbo面试 - dubbo 负载均衡策略和集群容错策略都有哪些? 面试题 dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢? 面试官心理分析 继续深问吧,这些都是用 dubbo 必须 ...

最新文章

  1. 麻省理工研究:深度图像分类器,居然还会过度解读
  2. 你必须非常努力,才可以看起来毫不费力。
  3. 润乾报表JSF FORM 标签中使用填报表解决方案
  4. “安卓之父”的新公司倒了:拿到腾讯投资,成为硅谷独角兽,五年只出了一款手机...
  5. Django学习笔记之模板渲染、模板语言、simple_tag、母版子版、静态配置文件
  6. 从SQL Server 2000/2005到SQL Server 2008的升级测试
  7. 【面试题】使用 HashMap 还是 TreeMap
  8. easyui js解析字符串_js相关:详解Jquery Easyui的验证扩展
  9. 统计dataframe中所有列的null数量与填充null注意事项
  10. 【软件周刊】微软发布 Mac 版 Visual Studio,SQL Server 2016 SP1 紧跟节奏
  11. Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4) 构造
  12. springboot项目不加端口号也可以访问项目的方法
  13. [轉]C# 中的委托和事件
  14. Eclipse 答疑:如何使用 Eclipse 进行断点(Breakpoints)调试?
  15. 信息学奥赛C++语言:换钱
  16. xcode 4.2下怎么添加framework?
  17. maven添加外部jar,以及springboot打包
  18. 线程池和任务工厂实现多线程异步运行
  19. mysql odbc 没有_如何解决mysql odbc安装丢失的问题
  20. 修改t3报表服务器,用友T3软件财务报表修改之后,下次打开又需要重新打开,保存到电脑里比较麻烦,如何将修改好的报表保存到软件里面-用友T3...

热门文章

  1. ウクアージ / 小黑
  2. 拼多多发展量子计算机,IBM首次接入三方共建量子生态系统,量子计算或将决定未来的科技走向!...
  3. 给Linux中的cp和mv命令中添加进度条的高级拷贝
  4. 营业执照识别易语言代码
  5. 循序渐进学习 Java 锁机制
  6. java jackson jobject_Scala JObject类代码示例
  7. TOM企业邮箱如何登录?
  8. mysql数据库教学
  9. 资源不足的情况怎么设置sparkrdd并行度_弃考率超30%,2020国考职位达不到开考比例怎么办?...
  10. 侦壳工具Peid 0.95 使用详解与下载