分布式负载均衡

1.随机

采用随机算法进行负载均衡,通常在对等集群组网中,随机路由算法消息分发还是比较均匀的,但是存在两个主要缺点:

在一个截面上碰撞的概率较高

非对等集群组网,或者硬件配置差异较大,会导致各节点负载不均匀

2.轮询

轮询,按公约后的权重设置轮询比率,到达边界之后,继续绕接。他的主要缺点是存在慢的提供者累积请求问题。比如第二台机器很慢,但是没挂,当请求调到第二台时就卡在那,久而久之,所以请求都卡在调到第二台上。

轮询算法是最简单的一种负载均衡算法。它的原理是把来自用户的请求轮流分配给内部的服务器:从服务器1开始,直到服务器N,然后重新开始循环。

加权轮询策略的实现非常简单,他的原理就是按照权重,顺序循环遍历服务提供者列表,到达上限后重新归零,继续顺序循环。

3.服务调用时延

消费者缓存所有服务提供者的服务调用时延,周期性的计算服务调用平均时延,然后计算每个服务提供者服务调用时延与平均时延的差值,根据差值的大小动态调整权重,保证服务时延大的服务提供者接收更少的消息,防止消息堆积。 该策略的特点就是要保证处理能力强的服务提供者接收到更多的消息,通过动态自动调整权重消除服务调用时延的震荡范围,使所有服务提供者服务调用时延接近平均值,实现负载均衡。

4.一致性哈希

相同参数的请求总是发送到同一个服务提供者,当某一台服务提供者宕机时,原本发往该提供者的请求,基于虚拟节点,平摊到其他提供者,不会引起剧烈变动。平台提供默认的虚拟节点数,可以通过配置参数进行修改。

5.粘滞连接

粘滞连接用于有状态服务,尽可能让客户端总是向统一提供者发起服务调用,除非该提供者宕机,再连接另一台。由于服务通常被强烈建议设计成无状态的,因此,粘滞连接在实际项目中很少使用。

粘滞连接的实现比较简单,客户端首次跟服务端创建链路时,将该链路标记为粘滞连接,每次路由时,直接选择粘滞连接,不执行负载均衡路由接口。当链路中断时,更新粘滞连接为不可用,重新寻找下一个可用的连接,将其标记为粘滞连接。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分布式爬虫负载均衡算法的实现需要考虑以下几个方面: 1. 数据分片:将待爬取的网站按照一定的规则分成多个任务,每个任务由一个爬虫节点负责爬取。这样可以避免单个节点负载过重,提高整个系统的效率。 2. 任务分配:当一个爬虫节点完成了当前任务后,需要从任务队列中获取新的任务。这个过程需要一个任务调度中心,它根据每个爬虫节点的负载情况和系统的整体负载情况,将新的任务分配给最合适的节点。 3. 动态调整:当系统的负载发生变化时,需要动态调整任务分配策略。例如,当一个节点出现故障或网络延迟时,需要将它的任务重新分配给其他节点。当系统的负载下降时,可以适当增加每个节点的任务量,提高整个系统的效率。 下面是一个简单的分布式爬虫负载均衡算法的实现: 1. 数据分片:将待爬取的网站按照域名、主题或其他规则分成多个任务,每个任务由一个爬虫节点负责爬取。 2. 任务调度中心:任务调度中心维护一个任务队列,每个节点从任务队列中获取任务。任务调度中心根据每个节点的负载情况和系统的整体负载情况,将新的任务分配给最合适的节点。例如,对于一个空闲的节点,可以将多个任务分配给它;对于一个繁忙的节点,可以将少量任务分配给它。 3. 节点负载监控:每个节点需要定期向任务调度中心汇报自己的负载情况,包括已经爬取的网页数量、网络延迟、CPU、内存等指标。任务调度中心根据这些指标来判断每个节点的负载情况,并进行任务分配。 4. 动态调整:当系统的负载发生变化时,任务调度中心会根据节点负载情况和整体负载情况来动态调整任务分配策略。例如,当一个节点出现故障时,任务调度中心会将它的任务重新分配给其他节点;当系统的负载下降时,任务调度中心可以适当增加每个节点的任务量,提高整个系统的效率。 这是一个简单的分布式爬虫负载均衡算法的实现,实际应用中需要根据具体情况进行优化和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值