郭秀才, 張悅, 賀耀宜
(1.西安科技大學(xué) 電氣與控制工程學(xué)院, 陜西 西安 710054;2.中煤科工集團(tuán)常州研究院有限公司, 江蘇 常州 213015;3.天地(常州)自動(dòng)化股份有限公司, 江蘇 常州 213015)
近年來,隨著智慧礦山建設(shè)逐步發(fā)展,煤礦安全水平得到了極大提升,但智慧礦山系統(tǒng)中的海量數(shù)據(jù)處理問題隨之而來。據(jù)統(tǒng)計(jì),目前每座礦山建有30~50個(gè)監(jiān)控子系統(tǒng)[1-2],包括安全監(jiān)控系統(tǒng)、帶式輸送機(jī)控制系統(tǒng)、通風(fēng)機(jī)控制系統(tǒng)、變電所監(jiān)控系統(tǒng)等,且每個(gè)監(jiān)控子系統(tǒng)有1 000~2 000個(gè)測(cè)點(diǎn),導(dǎo)致智慧礦山系統(tǒng)數(shù)據(jù)量大、種類繁雜[3-5]。目前,智慧礦山均基于云計(jì)算架構(gòu),軟件平臺(tái)運(yùn)行在云端,不同礦山之間的數(shù)據(jù)將產(chǎn)生關(guān)聯(lián),且子系統(tǒng)、測(cè)點(diǎn)、用戶數(shù)量會(huì)越來越多。單一服務(wù)器無法支撐當(dāng)前海量數(shù)據(jù)處理請(qǐng)求,不能滿足實(shí)際生產(chǎn)管理需求,因此需要多臺(tái)服務(wù)器同時(shí)處理并發(fā)的數(shù)據(jù)存取及用戶訪問請(qǐng)求,通過負(fù)載均衡算法[6-7]將相關(guān)請(qǐng)求合理分配給每臺(tái)服務(wù)器。
負(fù)載均衡算法包括靜態(tài)、動(dòng)態(tài)兩種。靜態(tài)負(fù)載均衡算法按照固定比例分配任務(wù),如輪詢算法、加權(quán)輪詢算法;動(dòng)態(tài)負(fù)載均衡算法根據(jù)當(dāng)前服務(wù)器狀態(tài)分配任務(wù),如最小連接數(shù)(Least Connection,LC)算法、加權(quán)最小連接數(shù)(Weighted Least Connection,WLC)算法[8-9]。其中WLC算法是目前最常用的動(dòng)態(tài)負(fù)載均衡算法。由于煤礦行業(yè)的特殊性和智慧礦山系統(tǒng)數(shù)據(jù)類型的復(fù)雜性,現(xiàn)有負(fù)載均衡算法在處理智慧礦山系統(tǒng)數(shù)據(jù)時(shí),存在處理速度慢、無法合理利用現(xiàn)有資源完成任務(wù)調(diào)度等問題。針對(duì)該問題,本文提出了一種基于布谷鳥搜索(Cuckoo Search,CS)[10]的WLC(CS-WLC)算法,并將其部署在智慧礦山軟件平臺(tái),通過試驗(yàn)驗(yàn)證了其具有較好的負(fù)載均衡效果。
(1)
式中HSk為服務(wù)器Sk權(quán)值。
WLC算法中各服務(wù)器用相應(yīng)權(quán)值表示其性能,在分配新的連接請(qǐng)求時(shí),盡可能使服務(wù)器權(quán)值與該服務(wù)器性能呈正比。但WLC算法僅使用連接數(shù)作為性能指標(biāo),任務(wù)分配的準(zhǔn)確度不高,因此需要進(jìn)一步引入服務(wù)器類別、CPU利用率等指標(biāo)進(jìn)行綜合考量[7]。
CS算法是由布谷鳥尋窩方式演變而來。在自然界中,布谷鳥通過隨機(jī)方式尋找合適的鳥窩:布谷鳥在飛行過程中發(fā)現(xiàn)候選鳥窩進(jìn)行保留并不斷更新,最終找到最優(yōu)鳥窩。鳥窩位置更新公式為[10]
xu(t+1)=xu(t)+α?L
(2)
式中:xu(t)為第u個(gè)鳥窩在第t代的位置;α為步長(zhǎng);L為隨機(jī)搜索路徑。
當(dāng)鳥窩位置更新后,取[0,1]內(nèi)服從均勻分布的隨機(jī)數(shù)r與被宿主發(fā)現(xiàn)的概率P比較,若r>P,則更新xu(t+1),反之保留當(dāng)前的鳥窩位置。
本文在傳統(tǒng)WLC算法基礎(chǔ)上引入CS算法,基本思想:針對(duì)智慧礦山系統(tǒng)服務(wù)器,先通過CS算法選取較優(yōu)解集,再運(yùn)行WLC算法,在較優(yōu)解集內(nèi)選取當(dāng)前連接數(shù)最小的服務(wù)器,完成負(fù)載匹配任務(wù)。
智慧礦山軟件平臺(tái)各業(yè)務(wù)模塊根據(jù)數(shù)據(jù)存取和訪問請(qǐng)求的不同分布在多臺(tái)后端服務(wù)器上。當(dāng)煤礦各類監(jiān)控子系統(tǒng)向智慧礦山軟件平臺(tái)發(fā)送數(shù)據(jù)時(shí),由于后端服務(wù)器長(zhǎng)時(shí)間運(yùn)行,負(fù)載均衡服務(wù)器上記錄的負(fù)載量不能實(shí)時(shí)準(zhǔn)確地反映各后端服務(wù)器負(fù)載情況,所以需要周期性采集各后端服務(wù)器的負(fù)載信息,即每隔一定時(shí)間T,各后端服務(wù)器向負(fù)載均衡服務(wù)器反饋?zhàn)陨鞢PU利用率、內(nèi)存利用率、磁盤訪問率、網(wǎng)絡(luò)帶寬占用率、進(jìn)程數(shù)量占用率,從而保證負(fù)載均衡服務(wù)器記錄數(shù)據(jù)的準(zhǔn)確性。
智慧礦山軟件平臺(tái)整體部署如圖1所示。各后端服務(wù)器承載數(shù)據(jù)存取及用戶訪問業(yè)務(wù)功能。前端負(fù)載均衡服務(wù)器內(nèi)置負(fù)載均衡管理模塊和Nginx反向代理模塊,前者用于判別后端服務(wù)器運(yùn)行情況,后者根據(jù)前者判別結(jié)果將實(shí)時(shí)數(shù)據(jù)存取和用戶訪問請(qǐng)求分配給當(dāng)前負(fù)載較輕的后端服務(wù)器。
圖1 智慧礦山軟件平臺(tái)整體部署
基于CS-WLC算法的負(fù)載均衡過程如下。
(1) 計(jì)算各后端服務(wù)器最大處理能力。假設(shè)第i臺(tái)后端服務(wù)器Si的CPU數(shù)量為bi,最大處理速率、內(nèi)存容量、磁盤IO速率、網(wǎng)絡(luò)吞吐量、進(jìn)程數(shù)分別為Ei,Mi,Di,Ni,fi,其最大處理能力為
Wi=K1biEi+K2Mi+K3Di+K4Ni+K5fi
(3)
(4)
當(dāng)前后端服務(wù)器利用率為
(5)
(3) 設(shè)置m個(gè)參考值A(chǔ)1,A2,…,Am,并與GSi比較。當(dāng)GSi≤A1時(shí),將GSi放入集合gse1;當(dāng)A1 (4) 采用CS算法對(duì)gse1,gse2,…,gsem進(jìn)行全局尋優(yōu),得到一組較優(yōu)解,其中每個(gè)元素均為各集合中的最優(yōu)值。 (5) 采用WLC算法選取最終后端服務(wù)器。在周期T內(nèi),單一的連接數(shù)無法準(zhǔn)確反映當(dāng)前后端服務(wù)器的負(fù)載接收能力,因此為各后端服務(wù)器賦予新的權(quán)值,該權(quán)值與后端服務(wù)器連接數(shù)及使用頻率呈正比。當(dāng)新的請(qǐng)求到來時(shí),采用WLC算法在較優(yōu)解中選取當(dāng)前最優(yōu)解,并將請(qǐng)求分配給該后端服務(wù)器。 假設(shè)第j(j=1,2,…,m)臺(tái)后端服務(wù)器Sj權(quán)值為HSj,其連接數(shù)為CSj,則總的連接數(shù)為 (6) 當(dāng)?shù)趆(h=1,2,…,m,h≠j)臺(tái)后端服務(wù)器Sh的連接數(shù)CSh滿足式(7)時(shí),將新的請(qǐng)求分配給它。 (7) 式中HSh為后端服務(wù)器Sh權(quán)值。 (8) 利用某企業(yè)“監(jiān)控類軟件平臺(tái)、框架研究及示范項(xiàng)目”研究成果建立分布式融合性監(jiān)控系統(tǒng)軟件平臺(tái),設(shè)置1臺(tái)負(fù)載均衡服務(wù)器、5臺(tái)后端服務(wù)器,后端服務(wù)器運(yùn)行數(shù)據(jù)存取及訪問服務(wù)功能模塊。采用煤礦井下實(shí)際數(shù)據(jù)(瓦斯?jié)舛?、CO含量、風(fēng)速、溫度等),對(duì)CS-WLC算法負(fù)載均衡效果進(jìn)行驗(yàn)證。試驗(yàn)設(shè)備見表1。利用Nginx搭建Web服務(wù)器集群[11-13],采用Apache測(cè)試工具ApacheBench[14-15]測(cè)試軟件平臺(tái)分別采用WLC算法和CS-WLC算法時(shí)的應(yīng)答時(shí)延和響應(yīng)連接數(shù)。設(shè)置CS-WLC算法中被宿主發(fā)現(xiàn)的概率P=0.25,后端服務(wù)器處理速率、內(nèi)存容量、磁盤IO速率、網(wǎng)絡(luò)吞吐量、進(jìn)程數(shù)對(duì)應(yīng)權(quán)值{K1,K2,K3,K4,K5}={0.3,0.2,0.2,0.2,0.1},各后端服務(wù)器權(quán)值為{0.3,0.2,0.3,0.1,0.1}。 表1 試驗(yàn)設(shè)備 試驗(yàn)結(jié)果如圖2所示??煽闯鲈谌诤闲员O(jiān)控系統(tǒng)數(shù)據(jù)量不斷增加的情況下,CS-WLC算法在數(shù)據(jù)匹配方面有明顯優(yōu)勢(shì):在連接數(shù)為1 000時(shí),采用CS-WLC算法時(shí)系統(tǒng)應(yīng)答時(shí)延比采用WLC算法時(shí)降低了12.997%,響應(yīng)連接數(shù)提高了5.61%;在連接數(shù)為1 500時(shí),采用CS-WLS算法時(shí)系統(tǒng)應(yīng)答時(shí)延比采用WLS算法時(shí)降低了13.829%,響應(yīng)連接數(shù)提高了9.15%。 CS-WLC算法用于智慧礦山軟件平臺(tái)解決負(fù)載均衡問題時(shí),先采用CS算法對(duì)后端服務(wù)器進(jìn)行全局尋優(yōu),得到一組較優(yōu)解集合,再采用WLC算法從該集合中選取負(fù)載較輕的后端服務(wù)器來處理數(shù)據(jù)存取及用戶訪問請(qǐng)求,從而減少了最優(yōu)后端服務(wù)器選取時(shí)間,有利于智慧礦山軟件平臺(tái)高效運(yùn)行。在相同條件下分別將該算法及WLC算法運(yùn)行在分布式融合性監(jiān)控系統(tǒng)軟件平臺(tái),測(cè)試2種算法的應(yīng)答時(shí)延及響應(yīng)連接數(shù),結(jié)果表明CS-WLC算法的應(yīng)答時(shí)延較小、響應(yīng)連接數(shù)較多,從而驗(yàn)證了該算法具有更好的負(fù)載均衡效果,可有效提高智慧礦山軟件平臺(tái)的數(shù)據(jù)處理效率。 (a) 應(yīng)答時(shí)延 (b) 響應(yīng)連接數(shù)3 試驗(yàn)驗(yàn)證
4 結(jié)語