一.什么是负载均衡

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

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

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

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

Loadbalance:就是负载均衡的意思

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

1.负载均衡算法

Dubbo内置4种负载均衡算法

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

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

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

2.随机分配策略

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

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

5:3:1

随机生成随机数

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

优点:

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

缺点:

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

3.权重平滑分配

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

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

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

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

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

1>A 2>A 3>A 4>A 5>A

6>B 7>B 8>B

9>C

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

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

上图运算过程:

我们假设各服务器原始权重比为

服务器A=5

服务器B=3

服务器C=1

请求1:

左侧:服务器A=5,权重比最大运行

服务器B=3

服务器C=1

右侧:服务器A=5-(5+3+1)=5-9=-4,其余服务器B,C不变

请求2:

左侧:各服务器权重=各服务器原始权重比+上一请求个服务器右侧权重比

服务器A=5+(-4)=1

服务器B=3+3=6,权重比最大运行

服务器C=1+1=2

右侧:服务器B=6-(5+3+1)=6-9=-3,其余服务器A,C不变

请求3-请求9运算过程相同,请求9后请求1-9重新开启循环

优点:

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

缺点

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

4.活跃度自动感知

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

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

5.一致性Hash算法

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

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

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

使用的也不多

微服务07-负载均衡相关推荐

  1. Spring Cloud Alibaba - 08 Ribbon 两种方式实现细粒度自定义配置控制微服务的负载均衡策略

    文章目录 需求 工程 java代码实现细粒度配置 (不推荐) 配置实现细粒度配置 (推荐) 源码 需求 假设我们有个场景: Order-Center 需要采用随机算法调用产品中心 , 而采用轮询算法调 ...

  2. .net core grpc consul 实现服务注册 服务发现 负载均衡(二)

    在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...

  3. 客户端负载均衡与服务端负载均衡对比

    客户端 服务端 开发团队灵活修改 运维人员把控修改 运维成本低,开发人员直接可以修改 运维成本高 强依赖注册中心 不依赖注册中心 微服务框架 tomcat等传统应用 服务端负载均衡 负载均衡是我们处理 ...

  4. LVS实现web服务的负载均衡

    本节索引 Ipvsadm工具介绍 Web服务的负载均衡 实现http与https的同时调度 1 ipvsadm工具 我们知道LVS项目已提供了一个实现可伸缩网络服务的Linux Virtual Ser ...

  5. 服务端负载均衡和客户端负载均衡

    服务端负载均衡 用户在App访问通过80端口请求nginx,ngin来实现负载均衡,分发请求 客户端负载均衡 Eureka Server注册中心集群部署,goods_services服务提供者启动后向 ...

  6. NGINX配置基于Node.js服务的负载均衡服务器

    NGINX配置基于Node.js服务的负载均衡服务器 本部署指南说明了如何使用NGINX开源和NGINX Plus在Node.js应用程序服务器池之间平衡HTTP和HTTPS通信.本指南中的详细说明适 ...

  7. 客户端负载均衡与服务端负载均衡

    原文:https://segmentfault.com/a/1190000011081111 通过Nginx负载均衡服务器发送到不同的上游服务器去处理,这种负载均衡就是一种典型的服务端负载均衡,那么客 ...

  8. 直追亚马逊,谷歌微软云服务添负载均衡功能

    谷歌近日推出了其公共云服务的负载均衡功能,让客户能够自动缩放和关闭的虚拟机,以适应突发的高峰需求. 就在短短的几个月之前,微软已为其Azure公共云服务添加了新的自动缩放功能.现在,这两家公司都有效地 ...

  9. 如何为 Django 服务配置负载均衡

    现在的 Web 服务有一个很重要的性能指标叫 QPS,QPS 的全称是 Queries Per Second 意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定 ...

  10. 客户端负载均衡?? 服务端负载均衡??

    我们用一张图来描述一下这两者的区别 这篇文章里面不会去解释nginx,如果不知道是什么的话,可以先忽略, 先看看这张图 服务端的负载均衡是一个url先经过一个代理服务器(这里是nginx),然后通过这 ...

最新文章

  1. C# 温故而知新:Stream篇(二)
  2. iOS代码编程规范 根据项目经验汇总
  3. 计算机操作系统:处理机的调度
  4. 无限网络无限连接掉网的解决
  5. react打包后图片丢失_React中型项目的优化实践
  6. N皇后问题的解(洛谷P1219题题解,Java语言描述)
  7. 第27课 老狼老狼几点钟 《小学生C++趣味编程》
  8. Oracle 11.2.0.3 [INS-41112] Specified network interface doesnt maintain connectivity across cluster
  9. 5、扩展骨架文件内容
  10. centos7和centos6 开机 运行级别详解和设置
  11. 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
  12. Nginx 404 500
  13. 戴尔计算机软件的安装,戴尔笔记本电脑安装软件没反应怎么办
  14. 船用雷达x波段和s波段简介
  15. 远程控制你的智能电视,按键|输入|安装App等都已实现,已开源!
  16. 【面向对象】第三单元规格化设计总结——JML
  17. Java经验者的面经
  18. xxl-job集群原理
  19. win系统装机及磁盘分区、清理
  20. 【回眸】Lunix内核 网络编程

热门文章

  1. JAVA项目:收费视频播放系统,可以用于各类教学及视频在线展播
  2. 早慧与天才神童是有差异的
  3. 印章智能管控方案,帮助企业全维度管控印章
  4. 继电器rc吸收电路取值_固态继电器rc吸收电路的原理是什么
  5. python彩票预测与分析_297期四叔福彩3D预测奖号:奇偶、大小分析
  6. DP/HDMI/DVI显示器接口详解
  7. 4_常用类_集合_泛型
  8. AC6(CLANG)下变量 绝对定位的方法
  9. 并且, ||或 , 的用法 ,区别
  10. windows XP系统输入法不见了怎么办?