谈谈负载均衡算法的实现思路

轮询(Round-Robin)

思路很简单,维护一个循环队列即可.

加权轮询

根据配置文件中设置的权重进行分配。
相比轮询,比较更能充分调度不同性能的服务器之间的负载

实现思路:
轮盘赌的思想。通过将权重累加,然后运用之后只需要通过随机数摇号即可。
假设已经设置了权重如下:
A: 10, B: 1, C = 2

那么我们可以这样累计分值:

A(10), B(10 + 1), C(10 + 1 + 2), 即 A(10), B(11), C(12)

后面,只需要生成一个介于0~12的随机数,然后逐个对比即可。好比如,当前随机数9,9 ≤ \le 10, 那么我们将请求分发到服务节点A。
当然这个比对的过程,也可以使用二分查找优化或者红黑树

最少连接数优先

在服务节点性能相当的情况下,还不如选择轮询来得简单高效

最短响应时间优先

实现思路:
通过发送一个简单的请求到所有服务节点,最先响应的服务节点将被分配请求。

响应时间快的服务节点,当前负载理理所当然是最低的。但是** 每一次都发送包到所有节点?性能的损耗 ? **

根据IP地址进行哈希

类似于SO_REUSEPORT,通过对客户端IP地址进行哈希,根据哈希结果分配到不同的服务节点。

涉及长连接和短连接的情况下,这种策略并不能很好地实现负载均衡,而且选择一个哈希算法也比较困难。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值