负载均衡的几种算法

  • 轮询
  • 加权轮询
  • 随机
  • 加权随机
  • IP Hash
  • URL Hash
  • 一致性Hash
    • 特点
  • 其他: 最小连接 最小时延等
  • Nginx支持

轮询

每次的请求到达时,对每个服务器都轮询访问,保证每个服务器命中概率相同,实现简单但无法解决不同服务器之间性能差异问题

加权轮询

权重高的服务器请求命中的概率更高,根据不同服务器的性能调整权重比可以降低服务器性能差异带来的问题
算法实现上可以将所有的服务器连接对象放到一个list中,按权重比例放不同数量的连接对象到list,比如有三台服务器权重比是,1:2:3,list中的连接对象数量数可以是1,2,3,轮询访问这个list即可

随机

所有服务器随机访问,实现简单,服务器的命中概率取决于随机算法,无法解决不同服务器之前性能差异问题

加权随机

实现上可以参照加权轮询,生成的随机数作为list列表的索引值,也可以降低服务器性能差异带来的问题

IP Hash

对请求的ip地址用hash算法映射到服务器上,保证一个客户端的所有请求都命中到一台服务器上,适合服务端保存客户端的状态,开启session会话的情况,但是不能跨服务器会话,如果服务器有新上线,下线,重启等导致服务器序号发生改变时会导致此种策略异常

URL Hash

对url请求使用hash映射到指定服务器,可以配合缓存使用,在各服务器不共享缓存的情况下,对需要缓存的请求都打到一台服务器上避免其他服务器重复缓存

一致性Hash

一致性hash最初是用来解决分布式缓存中节点查找问题,由于缓存是多节点部署的,这些节点都存储了
不同的数据(每个节点可以是主备部署,实时同步),那我们在取数据的时候怎么取,通过hash算法可以定位到一个缓存节点,但是,当一个节点挂掉或者新增一个几点,节点的位置序号发生变动时,普通hash算法的定位就不准确了
于是一致性hash算法营运而生
将主机(ip或者主机名等唯一标识)按一致性hash算法分布在0 — 223-1的闭环圆圈上,当我们取某个值的时候,将这个数据的key用相同的hash算法映射到0 — 223-1上,从这个位置顺时针找到的第一个缓存节点,就是这个数据存储位置

特点

数据容错性和可扩展性 :当我们删除或新增其中一个节点,影响的只是这个节点之前的数据,其他节点并未受影响
数据倾斜问题解决:几个缓存节点在圆上的分布可能并不是对称的,但我们可以增加虚拟的对称节点来解决

其他: 最小连接 最小时延等

最小连接和最小时延都是要统计服务器一段时间的客户端连接数和请求响应平均耗时,来确定下一次请求到来时选择当前最小连接数的服务器或者响应最快的服务器
连接数和响应时长需要动态调整,比较复杂

Nginx支持

nginx可以支持轮询(默认),加权轮询,IP_Hash算法,像最小连接 最小时延这种智能的fair方式以及URL_Hash方式都需要第三方插件支持

负载均衡的常见几种算法相关推荐

  1. 负载均衡方案的三种实现策略

    早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求.随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就 ...

  2. 五分钟让你搞懂Nginx负载均衡原理及四种负载均衡算法

    前言 今天这篇文章介绍了负载均衡的原理以及对应的四种负载均衡算法,当然还有对应的指令及实战,欢迎品尝.有不同意见的朋友可以评论区留言! 负载均衡 所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游 ...

  3. LVS:三种负载均衡方式与八种均衡算法

    1.什么是LVS? 首先简单介绍一下LVS (Linux Virtual Server)到底是什么东西,其实它是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术.调度器具有很 ...

  4. 负载均衡实现的几种方式

    负载均衡,英文名Load Balance,作用是将操作分摊到多个执行单元上执行.随着如今网络流量的不断增大,服务的负载均衡是必须的,这里就来讲一讲负载均衡的结构.        说到负载均衡,同学最容 ...

  5. 细谈负载均衡,什么是负载均衡以及负载均衡的常见方法

    一.负载均衡概述 负载均衡是由多台服务器以对称的方式是组成的服务器集群,每台服务器具有等价的地位,都可以单独对位提供服务而无需借助其他服务器的辅助.通过某种负载分担技术,将请求均匀的分配到对称结构的某 ...

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

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

  7. 总结2021面试中的常见14种算法套路

    ‍‍‍ 点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源丨机器学习爱好者社区 编辑丨极市平台 导读 曾在 Fac ...

  8. nginx负载均衡配置的几种策略

    nginx的upstream目前支持4种方式的分配 1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除. 2.weight 指定轮询几率,weight ...

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

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

最新文章

  1. 序列化:ProtoBuf与JSON的比较
  2. “计算机艺术之父”、现代计算机技术先驱查理斯·苏黎去世,享年99岁
  3. JXLS导出Excel(模板导出)
  4. Webkit Flex伸缩盒模型属性备忘
  5. AI:2020年6月23日北京智源大会演讲分享之机器学习专题论坛——09:45-10:25邢波教授《A Blueprint of Standardized and Composable ML》
  6. linux-history历史命令-光标的移动操作-命令行上的字符删除操作
  7. 阿里的程序员们如何解决复杂数据的查询优化问题?| 技术头条
  8. LTE学习:LTE系统中RB、RBG、CCE、REG分别是如何定义的
  9. 光驱是DVD,而系统却显示为CD驱动器的原因
  10. python3中报错No module named 'numpy'
  11. FFmpeg 解码 H264 格式的视频
  12. Verilog语法概述(一)
  13. 【语音信号处理课程设计】基于MATLAB的隐马尔可夫和矢量量化的语音识别研究
  14. B站热榜 RSS 订阅 - 基于 RSSHub
  15. JavaScript统计图表插件 Echarts
  16. 用python定义一个员工类_Python与类一起工作
  17. PR值计算公式带来的思考
  18. C#生成word压缩下载
  19. 蒜头君的藏书(STL—map)
  20. axios库读不到cookie_Vue axios 跨域请求无法带上cookie的解决

热门文章

  1. 采用命令行控制有什么优势呢?
  2. c语言转义字符详解,c语言转义字符(c语言常用转义字符表)
  3. 捷波朗更新固件_如何更新AirPods的固件
  4. 图片朦胧效果-------《一见钟情》
  5. Fatfs文件系统二次f_open返回值为FR_DISK_ERR的问题
  6. 写一个哄女朋友的python小程序
  7. KindEditor编辑器字体保存失败
  8. libGDX游戏开发之字体样式(七)
  9. 基础篇--Web容器学习路径
  10. 最新发布!北京市机器人产业创新发展行动方案(2019-2022) “5432”推动北京机器人产业高质量发展...