最近打算往互联网方向发展,研究了下集群的负载均衡。其实早就应该去了解学习了。如有理解不到位的地方,还望各大神指出。
负载均衡算法是集群在调度时,选择具体调度和分发方式的逻辑。
目前流行和常用的算法有:轮询算法,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,云服务等,若使用前面的几种算法,可能会由于客户端的连接时间不同,导致部分服务器连接数过多,压力过大。
最小连接数算法,根据服务器当前的连接情况,把请求转发给当前连接数少的服务器。
最大空闲请求,也是类似。可以根据服务器性能的不同做加权。
时间: 2024-12-06 11:52:36