负载均衡篇-负载均衡算法

上一篇 负载均衡篇-问题是什么 提到,负载均衡的核心点之一就是分配规则的制定,即压力的分配算法是什么?

网络上该类文章很多,在此就不细致描述了。本篇主要对算法归类汇总,并从算法如何决策这一方面进行学习。

本篇只是起到承上启下的作用,更进一步的研究在后续的文章中涉及。

规则分类

常见的算法可以分为以下几类:

  • 轮询类(包括加权轮询)
  • 动态感知类
    • 负载均衡端为主的感知,如最小连接数
    • 服务器为主的感知,如负载最低,性能最优
  • hash类:将相同hash值的请求转发到同一台服务器上

其中,轮询类算法仅仅是轮流转发请求,或者根据权重比例来转发请求,实现起来比较简单。

动态感知类需要感知后端服务器的实际情况,从而去动态调整,难点在于如何感知。

hash类利用可以利用源地址IP或者一些业务标识来进行hash,关键在于应用场景。

如何进行健康检查

  • 定时ping请求;或者定时发送HTTP请求;
  • TCP连接出现n次问题或者HTTP 状态码异常;

如何决策

动态感知类

负载均衡端为主的感知,主要是将信息记录在负载均衡端,从而根据信息情况进行转发请求。比如记录和后端服务器建立的连接数来转发请求。

服务端为主的感知,实际上是负载均衡根据请求的相关信息来决定如何转发,比如根据每个请求的响应时间来进行性能是否最优的判断,响应时间的难点在于如何确定任务采集间隔。

动态感知类集中了很多有意思的算法,比如 The Power of Two Random Choices 算法等。

hash类

hash类负载均衡难点在于,既然需要使用hash分发请求,必然引入了状态的存储,所以一般比较偏向于缓存系统或者需要实现类似 session 概念的系统。

该类中有意思的点在于 hash 算法的实现,值得深入研究的是 一致性hash 算法。

本篇提到的算法如下:

  • The Power of Two Random Choices
  • 一致性hash算法

这些算法会在后续进行研究,下一章节我们从负载均衡器的分类入手,从中选择 lvs 负载均衡来研究。

发布了39 篇原创文章 · 获赞 74 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/zhou307/article/details/97287062