凌 波
中國(guó)電信MSS集中運(yùn)營(yíng)江蘇支撐中心
中國(guó)電信集中MSS系統(tǒng)涵蓋了財(cái)務(wù)、人力資源、采購(gòu)、物流、計(jì)劃建設(shè)、運(yùn)維成本、審計(jì)、SAP等多個(gè)專業(yè)子系統(tǒng)。該系統(tǒng)的建設(shè)實(shí)現(xiàn)了管理模式統(tǒng)一、業(yè)務(wù)流程統(tǒng)一、管理數(shù)據(jù)統(tǒng)一、系統(tǒng)運(yùn)營(yíng)統(tǒng)一,加強(qiáng)了集團(tuán)公司的管控能力,能及時(shí)準(zhǔn)確地掌握企業(yè)經(jīng)營(yíng)管理情況,迅速有效地進(jìn)行資源調(diào)配,降低企業(yè)運(yùn)營(yíng)成本,提升管理的信息化水平。
隨著集中MSS系統(tǒng)功能的不斷擴(kuò)充和完善,系統(tǒng)中的各項(xiàng)后臺(tái)任務(wù)也越來(lái)越多,例如財(cái)務(wù)專業(yè)的報(bào)表集成、計(jì)劃建設(shè)專業(yè)的用戶日志上報(bào)、OMC監(jiān)控上報(bào)、用戶的統(tǒng)計(jì)數(shù)據(jù)下載等任務(wù)。每個(gè)MSS系統(tǒng)中的子專業(yè)系統(tǒng)都有定時(shí)任務(wù)的需求,如果都在自身子專業(yè)系統(tǒng)中調(diào)度,一方面增加業(yè)務(wù)系統(tǒng)的復(fù)雜度,另一方面也不方便管理,局部的任務(wù)過(guò)于繁忙,會(huì)導(dǎo)致整個(gè)系統(tǒng)的穩(wěn)定性降低,從而降低前臺(tái)用戶的使用感知。
基于目前的情況,需要建立一個(gè)跨各個(gè)子系統(tǒng)的分布式任務(wù)調(diào)度平臺(tái),對(duì)集中MSS系統(tǒng)中的后臺(tái)任務(wù)進(jìn)行統(tǒng)一管理、統(tǒng)一調(diào)度,分散主機(jī)資源占用,從而提升系統(tǒng)的穩(wěn)定性和靈活性。
(1)后臺(tái)任務(wù)服務(wù)由“獨(dú)占”服務(wù)進(jìn)階為“分布式”服務(wù)。任務(wù)執(zhí)行由原來(lái)的單個(gè)子系統(tǒng)獨(dú)自管理,變?yōu)橛煞植际饺蝿?wù)調(diào)度平臺(tái)進(jìn)行統(tǒng)籌管理。
(2)解決單點(diǎn)故障問(wèn)題,保證系統(tǒng)高可用。后臺(tái)任務(wù)的執(zhí)行由于主機(jī)繁忙易導(dǎo)致任務(wù)失敗,而分布式任務(wù)調(diào)度平臺(tái)可以根據(jù)主機(jī)的忙閑情況,合理分配主機(jī)。
(3)解決任務(wù)調(diào)度水平動(dòng)態(tài)擴(kuò)展問(wèn)題。當(dāng)各系統(tǒng)出現(xiàn)大量后臺(tái)任務(wù)時(shí),可以隨時(shí)對(duì)執(zhí)行主機(jī)進(jìn)行水平擴(kuò)展,提升后臺(tái)任務(wù)執(zhí)行效率。
(4)支持任務(wù)調(diào)度的監(jiān)控。通過(guò)分布式任務(wù)調(diào)度平臺(tái)的前臺(tái)頁(yè)面,能實(shí)時(shí)監(jiān)控到目前整個(gè)MSS系統(tǒng)中后臺(tái)任務(wù)的分布情況,并根據(jù)任務(wù)的執(zhí)行情況采取對(duì)應(yīng)的運(yùn)營(yíng)手段。
分布式任務(wù)調(diào)度平臺(tái)的技術(shù)架構(gòu)可以分為三大部分:Zookeeper組(Zookeeper Cluster)、任務(wù)調(diào)度組(Scheduler Cluster)、任務(wù)執(zhí)行組(Worker Cluster)。
Zookeeper組(Zookeeper Cluster):實(shí)現(xiàn)任務(wù)的分布式配置及各服務(wù)間的交互通信,Zookeeper以TreeNode類型進(jìn)行存儲(chǔ),支持Cluster形式部署且保證最終數(shù)據(jù)一致性。
任務(wù)調(diào)度組(Scheduler Cluster):任務(wù)調(diào)度機(jī)向控制臺(tái)中心注冊(cè)后,共享調(diào)度任務(wù),且同一調(diào)度任務(wù)僅有一臺(tái)調(diào)度機(jī)執(zhí)行調(diào)度,當(dāng)前調(diào)度機(jī)異常宕機(jī)后,其余的調(diào)度機(jī)會(huì)接上。任務(wù)調(diào)度組負(fù)責(zé)管理調(diào)度信息,按照調(diào)度配置發(fā)出調(diào)度請(qǐng)求,自身不承擔(dān)業(yè)務(wù)代碼。調(diào)度系統(tǒng)與任務(wù)解耦,提高了系統(tǒng)可用性和穩(wěn)定性,同時(shí)調(diào)度系統(tǒng)性能不再受限于任務(wù)模塊。支持可視化、簡(jiǎn)單且動(dòng)態(tài)的管理調(diào)度信息,包括任務(wù)新建、更新、刪除、GLUE開(kāi)發(fā)和任務(wù)報(bào)警等。所有上述操作都會(huì)實(shí)時(shí)生效,同時(shí)支持監(jiān)控調(diào)度結(jié)果以及執(zhí)行日志。
任務(wù)執(zhí)行組(Worker Cluster):任務(wù)執(zhí)行組負(fù)責(zé)接收調(diào)度請(qǐng)求并執(zhí)行任務(wù)邏輯。任務(wù)模塊專注于任務(wù)的執(zhí)行等操作,開(kāi)發(fā)和維護(hù)更加簡(jiǎn)單和高效。任務(wù)執(zhí)行機(jī)向控制臺(tái)中心注冊(cè)后,根據(jù)配置執(zhí)行線程數(shù)量(單線程或多線程)執(zhí)行任務(wù),可單機(jī)執(zhí)行或多機(jī)并行執(zhí)行,當(dāng)前執(zhí)行機(jī)異常宕機(jī)后,調(diào)度機(jī)會(huì)新調(diào)度一臺(tái)執(zhí)行機(jī)接管執(zhí)行。
根據(jù)分布式任務(wù)調(diào)度的技術(shù)架構(gòu),對(duì)集中MSS系統(tǒng)的分布式任務(wù)調(diào)度部署分為三大部分:Zookeeper集群資源控制臺(tái)、任務(wù)調(diào)度平臺(tái)控制臺(tái)、任務(wù)執(zhí)行層。實(shí)施部署方案如圖1所示。

圖1 實(shí)施部署方案
Zookeeper集群資源控制臺(tái),建議新增服務(wù)器資源。為了保證控制臺(tái)的運(yùn)行穩(wěn)定,可以采用“一主二從”的部署方式。控制臺(tái)主要用于部署ZooKeeper的集群服務(wù)。
任務(wù)調(diào)度平臺(tái)控制臺(tái),建議新增服務(wù)器資源,由三臺(tái)應(yīng)用集群和兩臺(tái)主從數(shù)據(jù)庫(kù)組成。用于統(tǒng)一作業(yè)平臺(tái)對(duì)調(diào)度策略、任務(wù)項(xiàng)進(jìn)行維護(hù),對(duì)任務(wù)執(zhí)行情況、日志情況進(jìn)行管理。
任務(wù)執(zhí)行層,利用集中MSS系統(tǒng)的現(xiàn)有資源,對(duì)應(yīng)用服務(wù)器集群進(jìn)行重新設(shè)計(jì)、部署,任務(wù)執(zhí)行工作仍然由各個(gè)業(yè)務(wù)系統(tǒng)完成,但統(tǒng)一由任務(wù)調(diào)度平臺(tái)進(jìn)行管控。
(1)動(dòng)態(tài)彈性擴(kuò)容縮容。控制服務(wù)或執(zhí)行服務(wù)可以通過(guò)ZK的服務(wù)注冊(cè)和服務(wù)下線接口,完成服務(wù)的動(dòng)態(tài)伸縮。對(duì)當(dāng)前任務(wù)無(wú)感知,對(duì)后續(xù)接入的新任務(wù)生效。
(2)任務(wù)失效轉(zhuǎn)移。在彈性擴(kuò)容縮容或部分服務(wù)失聯(lián)的時(shí)候,本服務(wù)正在執(zhí)行的任務(wù)會(huì)被調(diào)度到其他正常可執(zhí)行的服務(wù)繼續(xù)執(zhí)行,直到完成為止。
(3)大任務(wù)分片。將一個(gè)大型任務(wù)拆分為n個(gè)獨(dú)立的小任務(wù)項(xiàng),然后由分布式的服務(wù)器分別執(zhí)行某一個(gè)或幾個(gè)分片項(xiàng),達(dá)到分散壓力,提高執(zhí)行效率的目標(biāo)。
(4)多線程作業(yè)。對(duì)于一些高吞吐的業(yè)務(wù)處理模式,可以開(kāi)啟足夠多的線程快速處理。
(5)保證數(shù)據(jù)一致性。基于Paxos算法,通過(guò)投票對(duì)寫(xiě)操作進(jìn)行全局編碼,同時(shí)刻只有一個(gè)寫(xiě)操作被批準(zhǔn),不會(huì)出現(xiàn)重復(fù)執(zhí)行的情況,保證了企業(yè)數(shù)據(jù)一致性。
(6)資源集約管控。M域各專業(yè)分散的任務(wù)作業(yè)服務(wù),本專業(yè)內(nèi)分散在各個(gè)節(jié)點(diǎn)、各個(gè)省份的任務(wù)作業(yè)服務(wù),由分布式任務(wù)調(diào)度平臺(tái)進(jìn)行統(tǒng)一管理和分配,解決了資源忙閑程度不均的問(wèn)題,進(jìn)一步提升了企業(yè)資源利用率。
(7)任務(wù)實(shí)時(shí)監(jiān)管。系統(tǒng)的任務(wù)作業(yè)狀態(tài)由原來(lái)的不可預(yù)知、無(wú)法監(jiān)控到現(xiàn)在可對(duì)服務(wù)狀態(tài)、失敗次數(shù)、運(yùn)行時(shí)間等指標(biāo)進(jìn)行實(shí)時(shí)掌握。
本文所介紹的分布式任務(wù)調(diào)度技術(shù)在中國(guó)電信集中MSS系統(tǒng)中進(jìn)行了部署和推廣應(yīng)用。中國(guó)電信集中MSS系統(tǒng)涵蓋了人力資源、采購(gòu)、物流、計(jì)劃建設(shè)、運(yùn)維成本、審計(jì)、SAP等多個(gè)專業(yè)子系統(tǒng)。在沒(méi)有部署分布式任務(wù)調(diào)度平臺(tái)前,各個(gè)子系統(tǒng)的后臺(tái)任務(wù)只能在各自系統(tǒng)的后臺(tái)任務(wù)執(zhí)行機(jī)中執(zhí)行,業(yè)務(wù)繁忙期間,例如月初的采購(gòu)備貨、月中的集中項(xiàng)目審計(jì)、月底的財(cái)務(wù)月結(jié)等,用戶有大量的報(bào)表統(tǒng)計(jì)、數(shù)據(jù)導(dǎo)入導(dǎo)出、操作日志上報(bào)等操作,在獨(dú)立后臺(tái)執(zhí)行機(jī)的情況下,后臺(tái)任務(wù)只能依次排隊(duì)執(zhí)行,排隊(duì)等待時(shí)間長(zhǎng),并且由于任務(wù)超時(shí)容易導(dǎo)致任務(wù)執(zhí)行失敗,整體的后臺(tái)任務(wù)執(zhí)行成功率只有83%左右。上線分布式任務(wù)調(diào)度平臺(tái)后,所有子系統(tǒng)的執(zhí)行機(jī)在任務(wù)調(diào)度平臺(tái)的統(tǒng)一指揮下,為所有的系統(tǒng)服務(wù),哪臺(tái)執(zhí)行機(jī)器空閑,就分發(fā)任務(wù)至該臺(tái)機(jī)器執(zhí)行,后臺(tái)任務(wù)執(zhí)行的成功率提升至99%,整體任務(wù)執(zhí)行的時(shí)間也縮減至原來(lái)的四分之一,用戶使用更便捷,系統(tǒng)響應(yīng)更快,用戶感知提升明顯。該平臺(tái)獲得2019年中國(guó)電信集團(tuán)公司個(gè)人崗位創(chuàng)新二等獎(jiǎng)。