探究负载均衡算法

(整期优先)网络出版时间:2018-12-22
/ 2

探究负载均衡算法

张琳琳

苏州市苏大附中江苏苏州215000?

摘要:随着互联网的飞速发展,互联网应用可以被网络世界中的所有人访问,那么请求量对服务器的压力就是一个比较大的问题。本文介绍了常见的互联网负载均衡算法,讲解了每种负载均衡算法的优点和缺点以及各自适应的系统规模和类型。学习负载均衡算法能够帮助我们学会互联网世界中“分流”,“分压”等思想,这对学习其他互联网技术的学习很有帮助。

关键词:互联网应用;负载均衡算法;轮询法;最快相应法

1.互联网访问模式介绍

随着计算机技术的飞速发展,计算机世界已从软件时代过渡到互联网时代。那么什么是软件时代?什么又是互联网时代呢?两者有何区别?在软件时代,我们的计算机安装的大多数软件为单机软件,也就是一次安装,可以永久使用并且不需要连接互联网的软件。比如一些财务统计软件,办公软件,人员管理软件等等。这些软件的操作员一般都比较少,并且软件都不是太复杂,所以出现问题的概率都较低。即使出现问题,也可以联系软件厂商,进行维护和修复。但是互联网模式下,我们的计算机中安装的大多数是互联网应用的客户端,不需要在我们的计算机上安装整个应用的全部数据。当我们使用应用的时候,是通过客户端访问运营商的服务器端,获取属于我们自己的数据或是查看一些公共的数据。一但服务端出现了任何问题,客户端就无法访问数据和使用应用,所以市场对互联网应用质量的要求就很高。

2.负载均衡的意义

当互联网应用做大后,用户量会急剧增长,比如目前的“微信”,“淘宝”等应用。这些应用除了要考虑数据的正确性和安全性之外,还需要考虑并发访问问题。比如在同一秒,全世界可能有成百上千人在使用微信。在“双十一”购物狂欢节中,每秒的成交量可能更多。那么在这些时刻,服务器承受着很大的压力,很容易发生崩溃的可能。

一台服务器肯定抵挡不住这样的压力,于是架构设计者采取使用多台服务器共同承受压力,这样可以减少单台服务器的压力,降低服务器崩溃的可能【1】。既然有了服务器“集群”,就需要有一个“管理者”角色对它们进行任务分配。不能使这个集群中的某些服务器太闲,也不能使某些服务器太忙。这个充当“管理者”角色的组件就是负载均衡器。

3.负载均衡算法介绍

负载均衡算法就是管理和分配访问任务的算法,目的是将访问尽量均衡的分发到不同的服务器上【2】。但是由于现实中的服务器性能,业务需求等因素,目前存在多种多样的负载均衡算法。

常见的负载均衡算法有以下几种:

(1)轮询法:

轮询法的名字很好的解释了该算法的核心思想,就是将访问请求循环的分发给不同的服务器。比如一共有5台服务器,编号为1至5。那么采用轮询法的负载均衡服务器会将第一个请求分发给服务器1,将第二个请求分发给服务器2,将第六个请求再次分发给服务器1,以此类推。

轮询法的思路和实现方法都非常简单,甚至不了解计算机和互联网的人都能很快地理解甚至实现轮询负载均衡算法。但是轮询法存在一些比较明显问题,那就是现实生活中未必每一台服务器的性能都是一样的。比如五台服务器中,服务器1,3,5的性能较高,而服务器2,4的性能较低。那么在轮询分发请求后,服务器2,4就有可能出现崩溃的情况。除此之外,所有请求的工作量都不可能是一样的,即使服务器的性能一样,但是在轮询分发时,有些大的任务恰好比较多的分配给了某台服务器,那这台服务器就也有可能面临崩溃的可能性。

所以轮询法虽然思路和实现简单,但是在实际的生产中,一般是不被采用的,因为现实往往比理论更加复杂,遇到的特殊情况更多,所以需要多考虑一些综合因素。

(2)加权轮询法

加权轮询法和轮询法很相似,主要的方式还是轮询分发,但是它加入了一个权重的思想【3】。权重的思想在计算机世界中十分常见却又十分重要,他能够表现事物的一些特征和情况。比如在加权轮询负载均衡算法中,权重就可以用来表示服务器集群中每台服务器的性能,性能越高,权重就越大。负载均衡器使用加权轮询算法后,每台服务器接收到请求的数量之比基本等于服务器的权重之比。例如服务器1的权重为5,服务器2的权重为3,服务器3的权重为1,服务器4的权重为1。那么如果在一段时间内有10个请求发往该服务器集群,那么4台服务器接收到的请求量可能为5、3、1、1。

加权轮询法与轮询法相比较为先进,因为它考虑了服务器的性能问题,可以让性能较好的服务器多承担一些压力,性能较差的服务器少承担一些压力甚至不进行处理工作。我们可以认为轮询法是一种特殊的加权轮询法,当所有服务器的权值都相同时,加权轮询法就变成了轮询法。

但是轮询法也存在一些问题,比如当集群中的某个高性能服务器接收了太多的任务而负载过重,不堪其重时,负载均衡器可能依然会向他分发大量的请求任务。虽然高性能服务器性能较高,但是依然存在面临崩溃的可能性。

(3)最快响应法

考虑到上述问题,我们需要了解到当前服务器是否正常工作。最快响应法就是在分配请求时,由负载均衡器向集群中的所有服务器发送一个简单的请求,记录每个服务器返回正常消息的响应时间【4】。选取响应时间最少的一台服务器进行分发。

为什么要选取响应时间最少的服务器进行分发呢?这其实很好理解,首先能够返回消息的服务器说明服务器目前还是正常工作的。其次,响应时间少可以说明负载均衡器能够在最短的时间内将请求发送到该服务器上。最后,响应时间少可以说明该服务器目前没有承担特别大的处理任务,否则响应时间不会特别快。

使用最快响应法能够比较科学的动态选取服务器进行任务分发,即使有的服务器已经崩溃,系统依然能够较为高效的运作。但是最快响应法也存在一个较大的问题,那就是负载均衡器需要向服务器集群发送试探请求,这本身就是一种消耗资源和消耗时间的过程。所以使用该算法时需要结合现实情况谨慎使用。

4.负载均衡算法对比

上文描述了常见的几种负载均衡算法,每种负载均衡算法都有其适合应用的情况。以下是对上述负载均衡算法的对比总结:

轮询法:轮询法较其他负载均衡算法更为简单,学习和使用成本都较低。在一些小型的应用系统中完全可以较好地完成负载均衡任务。在一些小型的应用系统中,甚至随机法都能够满足需求。但是轮询法没有考虑服务器的性能问题和实时负载问题,所以在一些大中型的系统中是不适用。

加权轮询法:加权轮询法也是一种简单的轮询法,和轮询法相比,加权轮询法只是增加了权重的思想,其他的思想是相似的。但是它考虑了服务器的性能问题,这样可以使性能较好的服务器承担更多的任务,性能较低的服务器完成一些简单的任务,能够保证服务器集群保持一个稳定的状态,加权轮询负载均衡算法可以用于大中型架构系统。

最快响应法:最快响应法是一种比较合理的负载均衡算法,它既考虑了服务器的性能问题,也综合考虑了服务器当前的一个压力情况和请求响应的时间。最快响应算法比较适用于大中型系统,可以应对比较复杂的请求。但是需要额外消耗一些资源。

十三、参考文献

[1]王云岚,李增智,薛军,等.基于DNS的负载均衡算法研究[J].计算机工程与应用,2002,38(4):11-13.

[2]刘健,徐磊,张维明.基于动态反馈的负载均衡算法[J].计算机工程与科学,2003,25(5):65-68.

[3]谢晓燕,张静雯.一种基于Linux集群技术的负载均衡方法[J].西安邮电大学学报,2014(3):64-68.

[4]张婷婷,汪峰坤,葛静,等.一种基于轮询机制的SDN-WLAN负载均衡算法[J].佳木斯大学学报(自然科学版),2016,34(3):420-422.