微服务07-负载均衡
一.什么是负载均衡
在实际项目中,一个服务基本都是集群模式的,也就是多个功能相同的项目在运行,这样才能承受更高的并发
这时一个请求到这个服务,就需要确定访问哪一个服务器
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-负载均衡相关推荐
- Spring Cloud Alibaba - 08 Ribbon 两种方式实现细粒度自定义配置控制微服务的负载均衡策略
文章目录 需求 工程 java代码实现细粒度配置 (不推荐) 配置实现细粒度配置 (推荐) 源码 需求 假设我们有个场景: Order-Center 需要采用随机算法调用产品中心 , 而采用轮询算法调 ...
- .net core grpc consul 实现服务注册 服务发现 负载均衡(二)
在上一篇 .net core grpc 实现通信(一) 中,我们实现的grpc通信在.net core中的可行性,但要在微服务中真正使用,还缺少 服务注册,服务发现及负载均衡等,本篇我们将在 .net ...
- 客户端负载均衡与服务端负载均衡对比
客户端 服务端 开发团队灵活修改 运维人员把控修改 运维成本低,开发人员直接可以修改 运维成本高 强依赖注册中心 不依赖注册中心 微服务框架 tomcat等传统应用 服务端负载均衡 负载均衡是我们处理 ...
- LVS实现web服务的负载均衡
本节索引 Ipvsadm工具介绍 Web服务的负载均衡 实现http与https的同时调度 1 ipvsadm工具 我们知道LVS项目已提供了一个实现可伸缩网络服务的Linux Virtual Ser ...
- 服务端负载均衡和客户端负载均衡
服务端负载均衡 用户在App访问通过80端口请求nginx,ngin来实现负载均衡,分发请求 客户端负载均衡 Eureka Server注册中心集群部署,goods_services服务提供者启动后向 ...
- NGINX配置基于Node.js服务的负载均衡服务器
NGINX配置基于Node.js服务的负载均衡服务器 本部署指南说明了如何使用NGINX开源和NGINX Plus在Node.js应用程序服务器池之间平衡HTTP和HTTPS通信.本指南中的详细说明适 ...
- 客户端负载均衡与服务端负载均衡
原文:https://segmentfault.com/a/1190000011081111 通过Nginx负载均衡服务器发送到不同的上游服务器去处理,这种负载均衡就是一种典型的服务端负载均衡,那么客 ...
- 直追亚马逊,谷歌微软云服务添负载均衡功能
谷歌近日推出了其公共云服务的负载均衡功能,让客户能够自动缩放和关闭的虚拟机,以适应突发的高峰需求. 就在短短的几个月之前,微软已为其Azure公共云服务添加了新的自动缩放功能.现在,这两家公司都有效地 ...
- 如何为 Django 服务配置负载均衡
现在的 Web 服务有一个很重要的性能指标叫 QPS,QPS 的全称是 Queries Per Second 意思是"每秒查询率",是一台服务器每秒能够相应的查询次数,是对一个特定 ...
- 客户端负载均衡?? 服务端负载均衡??
我们用一张图来描述一下这两者的区别 这篇文章里面不会去解释nginx,如果不知道是什么的话,可以先忽略, 先看看这张图 服务端的负载均衡是一个url先经过一个代理服务器(这里是nginx),然后通过这 ...
最新文章
- C# 温故而知新:Stream篇(二)
- iOS代码编程规范 根据项目经验汇总
- 计算机操作系统:处理机的调度
- 无限网络无限连接掉网的解决
- react打包后图片丢失_React中型项目的优化实践
- N皇后问题的解(洛谷P1219题题解,Java语言描述)
- 第27课 老狼老狼几点钟 《小学生C++趣味编程》
- Oracle 11.2.0.3 [INS-41112] Specified network interface doesnt maintain connectivity across cluster
- 5、扩展骨架文件内容
- centos7和centos6 开机 运行级别详解和设置
- 暴风集团被强制退市 暴风影音APP还在更新:0.99元VIP上线
- Nginx 404 500
- 戴尔计算机软件的安装,戴尔笔记本电脑安装软件没反应怎么办
- 船用雷达x波段和s波段简介
- 远程控制你的智能电视,按键|输入|安装App等都已实现,已开源!
- 【面向对象】第三单元规格化设计总结——JML
- Java经验者的面经
- xxl-job集群原理
- win系统装机及磁盘分区、清理
- 【回眸】Lunix内核 网络编程
热门文章
- JAVA项目:收费视频播放系统,可以用于各类教学及视频在线展播
- 早慧与天才神童是有差异的
- 印章智能管控方案,帮助企业全维度管控印章
- 继电器rc吸收电路取值_固态继电器rc吸收电路的原理是什么
- python彩票预测与分析_297期四叔福彩3D预测奖号:奇偶、大小分析
- DP/HDMI/DVI显示器接口详解
- 4_常用类_集合_泛型
- AC6(CLANG)下变量 绝对定位的方法
- 并且, ||或 , 的用法 ,区别
- windows XP系统输入法不见了怎么办?