理解分布式系统常用的负载均衡算法
分布式系统常用的负载均衡算法 最近在做的系统上使用ES比较多,出于对ES的学习,在了解了ES的负载均衡算法之后,也相应的了解了其它的负载均衡算法,在这里做一个分享。 1:轮询法: 轮询很容易实现,将请求按顺序轮流分配到后台服务器上,均衡的对待每一台服务器,而不关心服务器实际的连接数和当前的系统负载。使用轮询策略的目的是,希望做到请求转移的绝对均衡,但付出的性能代价也是相当大的。为了保证pos变量的并发互斥,引入了重量级悲观锁synchronized,将会导致该轮询代码的并发吞吐量明显下降。 2:随机法: 通过系统随机函数,根据后台服务器列表的大小值来随机选取其中一台进行访问。由概率统计理论得知,随着调用量的增大,其实际效果越来越仅仅与平均分配流量到后台的每一台服务器,也就是轮询法的效果。 3:随机轮询法: 随机轮询,就是将随机法和轮询法结合起来,在轮询节点时,随机选择一个节点作为开始位置的index,此后每次选择下一个节点来处理请求,即(index+1)%size。 这种方式只是在选择第一个节点使用了随机方法,其他与轮询法无异,缺点和轮询一样。 4:源地址哈希法: 源地址哈希的思想是根据服务消费者请求客户端的IP地址,通过哈希函数计算得到一个哈希值,将此哈希值和服务器列表的大小进行取模运算,得到的结果便是要访问的服务器地址的序号。采用源地址哈希法进行负载均衡,相同的ip客户端