Java基础知识总结:常见的负载均衡算法

单机压力过大促使架构向集群模式转变,那么对于请求必定需要一个分发器进行任务分配和流量权衡,业界一般习惯于叫“负载均衡器”,但其实它的作用不仅仅在于平衡机器间的压力,还在于如何更智能的选择任务分发策略,并在一定时候提供降级等保护措施,总之对负载均衡器的理解不能局限在表面意思上。

本文谈谈常见的负载均衡算法,也是初级程序员面试中大概率出现的问题。

轮询

意思很简单,对台机器组成的集群,前置的负载均衡器就将进入的流量按照次序依次发往各台机器,并不关心每台机器的实际压力情况如何,算法较为简单粗暴

权重轮询

相比于直来直去的轮询,权重轮询或者叫加权轮询即在选择分发的时候考虑机器的压力情况,压力小的多分发点流量,压力大的少分配一些,最终使集群达到稳定的状态。

这里的权重既可以根据服务器的硬件配置高低来进行初始化配置,也可以采用动态的方式在服务器运行期间,根据监控数据来实时调整,后者显然更契合复杂的场景,但同时实现难度也会更高。

贪心最优

有的时候,我们纯粹可以将客户端的流量发往目前延时最低、或者压力最小、或者配置最高的机器已达到短期内提升服务质量的目的,但显然长期生产环境中这不是个好方法,但不失为一个补充措施。为了实现这种算法,需要负载均衡器能收集集群机器的监控数据、响应时长等信息来进行分析。

哈希

哈希是常见的分发、散列算法,好的哈希算法可以很好地平摊流量,常见的可以根据 ip 哈希或者请求 ID 哈希等。ip 哈希可将同一个 ip 地址的请求分配给同一个服务器进行处理,可以解决 session 粘滞问题。ID 哈希中的 ID 一般是临时性数据的 ID(如 session id、token 等)。例如,网站登录用 session id hash 同样可以实现同一个会话期间,用户每次都是访问到同一台服务器的目的。

License

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值