【转】负载均衡的基本算法
2016-04-11 18:24
197 查看
http://flychao88.iteye.com/blog/2159996原文如下:1、随机:负载均衡方法随机的把负载分配到各个可用的服务器上,通过随机数生成算法选取一个服务器,然后把连接发送给它。虽然许多均衡产品都支持该算法,但是它的有效性一直受到质疑,除非把服务器的可运行时间看的很重。 2、轮询:轮询算法按顺序把每个新的连接请求分配给下一个服务器,最终把所有请求平分给所有的服务器。轮询算法在大多数情况下都工作的不错,但是如果负载均衡的设备在处理速度、连接速度和内存等方面不是完全均等,那么效果会更好。 3、加权轮询:该算法中,每个机器接受的连接数量是按权重比例分配的。这是对普通轮询算法的改进,比如你可以设定:第三台机器的处理能力是第一台机器的两倍,那么负载均衡器会把两倍的连接数量分配给第3台机器。 4、动态轮询:类似于加权轮询,但是,权重值基于对各个服务器的持续监控,并且不断更新。这是一个动态负载均衡算法,基于服务器的实时性能分析分配连接,比如每个节点的当前连接数或者节点的最快响应时间等。 5、最快算法:最快算法基于所有服务器中的最快响应时间分配连接。该算法在服务器跨不同网络的环境中特别有用。 6、最少连接:系统把新连接分配给当前连接数目最少的服务器。该算法在各个服务器运算能力基本相似的环境中非常有效。 7、观察算法:该算法同时利用最小连接算法和最快算法来实施负载均衡。服务器根据当前的连接数和响应时间得到一个分数,分数较高代表性能较好,会得到更多的连接。 8、预判算法:该算法使用观察算法来计算分数,但是预判算法会分析分数的变化趋势来判断某台服务器的性能正在改善还是降低。具有改善趋势的服务器会得到更多的连接。该算法适用于大多数环境。*****************************原文结束******************************************文章列举出常用算法,背景还是用户多了,单节点承受 不了大量请求,采用集群,所以才有负载均衡的产生。上面列举的算法对于非持续行算法介绍较多,还有一种持续性算法,也是之前学习笔记文章提到的一致性hash。比如基于请求的IP进行分配。优点就是简单高效,缺点就是不易于动态更新:比如某IP访问量突然大涨,导致对应节点容易成为热点。
算法只是一块,还是应该根据集群的特点进行选择,相关知识点就是nginx。
算法只是一块,还是应该根据集群的特点进行选择,相关知识点就是nginx。
相关文章推荐
- java学习-【转】什么是Reactor模式,或者叫反应器模式
- Python变量与数据类型
- 关于ListView的getItemViewType()这个方法的踩坑叙述
- 笔试题21 . LeetCode OJ (8)
- 京东VS猫宁,运费或将成为压垮京东的最后一根稻草
- SQL Server 用户名sa登陆出错
- git常用命令
- java学习-【转】【经验总结】NIO常见的陷阱解析
- java学习-【转】32位jvm还是64位jvm?
- java学习-【转】JAVA 线程池源码分析
- java学习-【转】如何用Java编写一段代码引发内存泄露
- java学习-【转】SharedHashMap是更低延迟无GC暂停的Map实现
- java并发:AbstractQueuedSynchronizer的介绍和原理分析
- java学习-【转】java UncaughtExceptionHandler 处理线程意外中止
- 【转】细数JDK里的设计模式
- java学习-【转】JAVA并发类名图
- 缓存学习-【转】缓存淘汰算法--LRU算法
- 缓存学习-[转]缓存淘汰算法--LFU算法
- java学习-[转]HashMap实现原理分析
- java学习-浅淡JAVA异常机制如何设计