负载均衡算法整理

本文属于li3huo原创,转载的兄弟们请标明出处,谢谢哈!

负载均衡是一种计算机网络技术,它把负载分发到多台计算机、集群服务器或计算中心、存储中心等其他资源。目的是使资源得到最优利用,获得更大的吞吐、更小的延时及避免过载。在设计中采取多组件加负载均衡的策略优于单组件,能够通过冗余增加可靠性。负载均衡服务可以通过软件或硬件来实现。

在集群服务系统中,为了获得更佳的可靠性和更好的性能,我们要根据业务特性挑选合适的负载均衡算法。要做到这个的前提就是,对常见的相关算法要有基本了解。

1. 算法分类

常见的负载均衡分类大致有以下几种:

2. 算法简介

2.1. Round Robin-轮询

定义:

代价:低

适用场景:

2.2. Ratio/Priority-加权或优先,轮询的变种

定义:

加权轮询:

优先轮询:

代价:低

适用场景:

2.3. HASH/Consistent Hashing-哈希和一致性哈希

这里不做展开,这个算法是对输入信息做一个摘要,保证一样的输入能够产生一致的结果,但不一定可逆。这个结果可以和要分发的服务器建立一种对应关系。 实现代价:低 使用场景:

2.4. Least Connection-最少连接

定义:

适用场景:

2.5. Fastest Response-快速响应

定义:

代价:

适用场景:

2.6. Persistent-实现持续性算法的几种算法

从一个特定的客户端发出的请求都被分配到同一台服务器上进行处理。为了达到这个目的,必须要获得识别客户端的标识,一般可能有IP地址、Http头部中包含的会话ID、其他自定义标识等。

2.6.1. Persistent IP-相同IP的请求对应相同服务器

2.6.2. Hash Header-基于用户请求报中HTTP报头来选择服务器

2.6.3. 其他自定义标示

3. Reference


CategoryAlgorithm

MainWiki: Load_Balance_Algorithm (last edited 2011-12-30 16:01:22 by twotwo)