集群负载均衡算法原理

最近打算往互联网方向发展,研究了下集群的负载均衡。其实早就应该去了解学习了。如有理解不到位的地方,还望各大神指出。

负载均衡算法是集群在调度时,选择具体调度和分发方式的逻辑。

目前流行和常用的算法有:轮询算法,Hash算法,Session,最小连接数,最大空闲等。

1、轮询算法:

实现方式:把每一次的用户请求,按顺序循环分配给集群内部的一台服务器。优点是算法简洁,无状态。


2、权重轮询算法

由于服务器的处理能力不同,可以再给服务器加权。也就是权重轮询算法。


3、Hash算法

一般就是将请求中的某项数据做hash运算,然后根据集群的服务器总数n取模,根据取模后的值分配服务器。

一般可以根据请求时间,请求来源的ip等来做散列运算。

java中哈希值的算法:

String s = "hello";
int hash = s.hashCode();


4、一致性Hash算法

http://blog.csdn.net/cywosp/article/details/23397179/


5、Session算法

此算法是解决WEB集群会话问题最简单的方式。

与轮询算法类似,当用户发起请求时检查,若该请求的SessionID是首次发起的请求,则根据SessionID使用轮询算法选择服务器,当再次发起同一sessionID的请求时,直接转发给之前选择的服务器。使得服务器的缓存得到更好的利用。


6、最少连接数请求,最大空闲请求

如ftp,云服务等,若使用前面的几种算法,可能会由于客户端的连接时间不同,导致部分服务器连接数过多,压力过大。

最小连接数算法,根据服务器当前的连接情况,把请求转发给当前连接数少的服务器。

最大空闲请求,也是类似。可以根据服务器性能的不同做加权。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章