负载均衡的常见几种算法

轮询

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

加权轮询

权重高的服务器请求命中的概率更高,根据不同服务器的性能调整权重比可以降低服务器性能差异带来的问题
算法实现上可以将所有的服务器连接对象放到一个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方式都需要第三方插件支持

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值