在一个典型的高并发、大用户量的Web互联网系统的架构设计中,HTTP集群的负载均衡设计是高性能系统优化方案中必不可少的部分。HTTP负载均衡的本质是对Web用户流量进行均衡和解压,因此在互联网大流量项目中其重要性不言而喻。常用的平衡算法有哪些?主要的平衡算法有:1)轮询策略;2)加载策略;3)应对策略;4)哈希策略。1、轮询策略轮询策略其实很容易理解,就是当有用户请求到来时,“负载均衡器”依次将请求转发给不同的后端业务服务器。这种策略在DNS解决方案中被广泛使用。它不需要关注后端服务的状态。只要有请求,就会依次转发给后台。它非常简单实用。在实际应用中,轮询的方式有很多种,包括顺序轮询、随机轮询和按权重轮询。前两个很容易理解,第三个按权重轮询是指为每个后端服务设置一个权重值。例如,高性能的服务器具有较高的权重,而低性能的服务器具有较低的权重。如果设置了,在分配流量的时候,多给高权重的流量,可以充分发挥后端机器的性能。2.负载策略负载策略是指“负载均衡器”在向后端转发流量时,会先评估各个后端服务器的负载压力,压力相对较高的后端服务器转发的请求会比较少,对于后端服务器压力小,可以转发更多的请求给它。这种方式充分结合后端服务器的运行状态动态分配流量,比轮询的方式更加科学。但是这种方式也带来了一些弊端,因为需要动态评估后端服务器的负载压力。除了转发请求之外,这个“负载均衡器”还要做很多额外的工作,比如收集连接数和请求数。、CPU负载指标、IO负载指标等,通过对这些指标进行计算比较,可以判断出哪个后端服务器的负载压力更大。因此,这种方式在带来效果优势的同时,也增加了“负载均衡器”的实现难度和维护成本。3.响应策略响应策略是指当用户请求时,“负载均衡器”优先将请求转发给当前时刻响应最快的后端服务器。也就是说,不管后端服务器负载高不高,也不管配置如何,只要认为服务器在当前时刻能够最快响应用户的请求,那么请求将首先转发给它。这样的话,对于用户来说,体验也是最好的。“负载均衡器”如何知道当前时刻哪个后端服务的响应能力最好?这就需要“负载均衡器”不断统计每个后端服务器对请求的处理速度。比如每分钟统计一次,生成后台服务器处理速度排行榜。然后“负载均衡器”根据这个排行榜转发服务。那么这里的问题就是统计成本。不断地做这些统计计算会消耗一些性能,也会增加“负载均衡器”的实现难度和维护成本。4、Hash策略Hash策略也比较容易理解。就是对请求中的某个信息进行hash计算,然后根据后端服务器的个数取模得到一个值。具有相同值的请求被转发到服务器中的相同后端。一个常见的用法是在用户的IP或ID上实现这个策略,然后“负载均衡器”可以确保相同的IP源或相同的用户总是被发送到相同的后端服务器。一般用于处理缓存,对会话等功能特别有用。
