郭秀才, 张悦, 贺耀宜
(1.西安科技大学 电气与控制工程学院, 陕西 西安 710054;2.中煤科工集团常州研究院有限公司, 江苏 常州 213015;3.天地(常州)自动化股份有限公司, 江苏 常州 213015)
近年来,随着智慧矿山建设逐步发展,煤矿安全水平得到了极大提升,但智慧矿山系统中的海量数据处理问题随之而来。据统计,目前每座矿山建有30~50个监控子系统[1-2],包括安全监控系统、带式输送机控制系统、通风机控制系统、变电所监控系统等,且每个监控子系统有1 000~2 000个测点,导致智慧矿山系统数据量大、种类繁杂[3-5]。目前,智慧矿山均基于云计算架构,软件平台运行在云端,不同矿山之间的数据将产生关联,且子系统、测点、用户数量会越来越多。单一服务器无法支撑当前海量数据处理请求,不能满足实际生产管理需求,因此需要多台服务器同时处理并发的数据存取及用户访问请求,通过负载均衡算法[6-7]将相关请求合理分配给每台服务器。
负载均衡算法包括静态、动态两种。静态负载均衡算法按照固定比例分配任务,如轮询算法、加权轮询算法;动态负载均衡算法根据当前服务器状态分配任务,如最小连接数(Least Connection,LC)算法、加权最小连接数(Weighted Least Connection,WLC)算法[8-9]。其中WLC算法是目前最常用的动态负载均衡算法。由于煤矿行业的特殊性和智慧矿山系统数据类型的复杂性,现有负载均衡算法在处理智慧矿山系统数据时,存在处理速度慢、无法合理利用现有资源完成任务调度等问题。针对该问题,本文提出了一种基于布谷鸟搜索(Cuckoo Search,CS)[10]的WLC(CS-WLC)算法,并将其部署在智慧矿山软件平台,通过试验验证了其具有较好的负载均衡效果。
(1)
式中HSk为服务器Sk权值。
WLC算法中各服务器用相应权值表示其性能,在分配新的连接请求时,尽可能使服务器权值与该服务器性能呈正比。但WLC算法仅使用连接数作为性能指标,任务分配的准确度不高,因此需要进一步引入服务器类别、CPU利用率等指标进行综合考量[7]。
CS算法是由布谷鸟寻窝方式演变而来。在自然界中,布谷鸟通过随机方式寻找合适的鸟窝:布谷鸟在飞行过程中发现候选鸟窝进行保留并不断更新,最终找到最优鸟窝。鸟窝位置更新公式为[10]
xu(t+1)=xu(t)+α⊗L
(2)
式中:xu(t)为第u个鸟窝在第t代的位置;α为步长;L为随机搜索路径。
当鸟窝位置更新后,取[0,1]内服从均匀分布的随机数r与被宿主发现的概率P比较,若r>P,则更新xu(t+1),反之保留当前的鸟窝位置。
本文在传统WLC算法基础上引入CS算法,基本思想:针对智慧矿山系统服务器,先通过CS算法选取较优解集,再运行WLC算法,在较优解集内选取当前连接数最小的服务器,完成负载匹配任务。
智慧矿山软件平台各业务模块根据数据存取和访问请求的不同分布在多台后端服务器上。当煤矿各类监控子系统向智慧矿山软件平台发送数据时,由于后端服务器长时间运行,负载均衡服务器上记录的负载量不能实时准确地反映各后端服务器负载情况,所以需要周期性采集各后端服务器的负载信息,即每隔一定时间T,各后端服务器向负载均衡服务器反馈自身CPU利用率、内存利用率、磁盘访问率、网络带宽占用率、进程数量占用率,从而保证负载均衡服务器记录数据的准确性。
智慧矿山软件平台整体部署如图1所示。各后端服务器承载数据存取及用户访问业务功能。前端负载均衡服务器内置负载均衡管理模块和Nginx反向代理模块,前者用于判别后端服务器运行情况,后者根据前者判别结果将实时数据存取和用户访问请求分配给当前负载较轻的后端服务器。
图1 智慧矿山软件平台整体部署
基于CS-WLC算法的负载均衡过程如下。
(1) 计算各后端服务器最大处理能力。假设第i台后端服务器Si的CPU数量为bi,最大处理速率、内存容量、磁盘IO速率、网络吞吐量、进程数分别为Ei,Mi,Di,Ni,fi,其最大处理能力为
Wi=K1biEi+K2Mi+K3Di+K4Ni+K5fi
(3)
(4)
当前后端服务器利用率为
(5)
(3) 设置m个参考值A1,A2,…,Am,并与GSi比较。当GSi≤A1时,将GSi放入集合gse1;当A1 (4) 采用CS算法对gse1,gse2,…,gsem进行全局寻优,得到一组较优解,其中每个元素均为各集合中的最优值。 (5) 采用WLC算法选取最终后端服务器。在周期T内,单一的连接数无法准确反映当前后端服务器的负载接收能力,因此为各后端服务器赋予新的权值,该权值与后端服务器连接数及使用频率呈正比。当新的请求到来时,采用WLC算法在较优解中选取当前最优解,并将请求分配给该后端服务器。 假设第j(j=1,2,…,m)台后端服务器Sj权值为HSj,其连接数为CSj,则总的连接数为 (6) 当第h(h=1,2,…,m,h≠j)台后端服务器Sh的连接数CSh满足式(7)时,将新的请求分配给它。 (7) 式中HSh为后端服务器Sh权值。 (8) 利用某企业“监控类软件平台、框架研究及示范项目”研究成果建立分布式融合性监控系统软件平台,设置1台负载均衡服务器、5台后端服务器,后端服务器运行数据存取及访问服务功能模块。采用煤矿井下实际数据(瓦斯浓度、CO含量、风速、温度等),对CS-WLC算法负载均衡效果进行验证。试验设备见表1。利用Nginx搭建Web服务器集群[11-13],采用Apache测试工具ApacheBench[14-15]测试软件平台分别采用WLC算法和CS-WLC算法时的应答时延和响应连接数。设置CS-WLC算法中被宿主发现的概率P=0.25,后端服务器处理速率、内存容量、磁盘IO速率、网络吞吐量、进程数对应权值{K1,K2,K3,K4,K5}={0.3,0.2,0.2,0.2,0.1},各后端服务器权值为{0.3,0.2,0.3,0.1,0.1}。 表1 试验设备 试验结果如图2所示。可看出在融合性监控系统数据量不断增加的情况下,CS-WLC算法在数据匹配方面有明显优势:在连接数为1 000时,采用CS-WLC算法时系统应答时延比采用WLC算法时降低了12.997%,响应连接数提高了5.61%;在连接数为1 500时,采用CS-WLS算法时系统应答时延比采用WLS算法时降低了13.829%,响应连接数提高了9.15%。 CS-WLC算法用于智慧矿山软件平台解决负载均衡问题时,先采用CS算法对后端服务器进行全局寻优,得到一组较优解集合,再采用WLC算法从该集合中选取负载较轻的后端服务器来处理数据存取及用户访问请求,从而减少了最优后端服务器选取时间,有利于智慧矿山软件平台高效运行。在相同条件下分别将该算法及WLC算法运行在分布式融合性监控系统软件平台,测试2种算法的应答时延及响应连接数,结果表明CS-WLC算法的应答时延较小、响应连接数较多,从而验证了该算法具有更好的负载均衡效果,可有效提高智慧矿山软件平台的数据处理效率。 (a) 应答时延 (b) 响应连接数3 试验验证
4 结语