Load Balance

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hackerdotcn/article/details/78762471

负载均衡分为软件负载均衡和硬件负载均衡,软负载均衡的代表是阿里章文嵩博士研发的LVS,硬负载均衡有F5,价格高昂,互联网自然要追求低成本,所以软负载均衡收到青睐,大致有:

轮询法(round robin)

轮询调度算法的原理是每一次把来自用户的请求轮流分配给内部中的服务器,从1开始,直到N(内部服务器个数),然后重新开始循环。算法的优点是其简洁性,它无需记录当前所有连接的状态,所以它是一种无状态调度。
优缺点:

  • 优点在于:试图做到请求转移的绝对均衡。
  • 缺点在于:为了做到请求转移的绝对均衡,必须付出相当大的代价,因为为了保证pos变量修改的互斥性,需要引入重量级的悲观锁synchronized,这将会导致该段轮询代码的并发吞吐量发生明显的下降。

随机法(random)

通过系统随机函数,根据后端服务器列表的大小值来随机选择其中一台进行访问。由概率统计理论可以得知,随着调用量的增大,其实际效果越来越接近于平均分配流量到每一台后端服务器,也就是轮询的效果。
基于概率统计的理论,吞吐量越大,随机算法的效果越接近于轮询算法的效果。

源地址哈希法(Hash)

源地址哈希的思想是获取客户端访问的IP地址值,通过哈希函数计算得到一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是要访问的服务器的序号。
优缺点

  • 优点在于:保证了相同客户端IP地址将会被哈希到同一台后端服务器,直到后端服务器列表变更。根据此特性可以在服务消费者与服务提供者之间建立有状态的session会话。
  • 缺点在于:除非集群中服务器的非常稳定,基本不会上下线,否则一旦有服务器上线、下线,那么通过源地址哈希算法路由到的服务器是服务器上线、下线前路由到的服务器的概率非常低,如果是session则取不到session,如果是缓存则可能引发”雪崩”。

加权轮询法(Weight Round Robin)

不同的服务器可能机器配置和当前系统的负载并不相同,因此它们的抗压能力也不尽相同,给配置高、负载低的机器配置更高的权重,让其处理更多的请求,而低配置、高负载的机器,则给其分配较低的权重,降低其系统负载。加权轮询法可以很好地处理这一问题,并将请求顺序按照权重分配到后端。

加权随机法(Weight Random)

最小连接数法(Least Connections)

最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它正是根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前请求,尽可能地提高后端服务器的利用效率,将负载合理地分流到每一台机器。由于最小连接数涉及服务器连接数的汇总和感知,设计与实现较为繁琐。

Nginx负载均衡策略

参考资料:
https://www.cnblogs.com/xrq730/p/5154340.html
http://blog.csdn.net/zhangskd/article/details/50242241

猜你喜欢

转载自blog.csdn.net/hackerdotcn/article/details/78762471