凌 波
中國電信MSS集中運營江蘇支撐中心
中國電信集中MSS系統(tǒng)涵蓋了財務、人力資源、采購、物流、計劃建設、運維成本、審計、SAP等多個專業(yè)子系統(tǒng)。該系統(tǒng)的建設實現(xiàn)了管理模式統(tǒng)一、業(yè)務流程統(tǒng)一、管理數(shù)據(jù)統(tǒng)一、系統(tǒng)運營統(tǒng)一,加強了集團公司的管控能力,能及時準確地掌握企業(yè)經(jīng)營管理情況,迅速有效地進行資源調配,降低企業(yè)運營成本,提升管理的信息化水平。
隨著集中MSS系統(tǒng)功能的不斷擴充和完善,系統(tǒng)中的各項后臺任務也越來越多,例如財務專業(yè)的報表集成、計劃建設專業(yè)的用戶日志上報、OMC監(jiān)控上報、用戶的統(tǒng)計數(shù)據(jù)下載等任務。每個MSS系統(tǒng)中的子專業(yè)系統(tǒng)都有定時任務的需求,如果都在自身子專業(yè)系統(tǒng)中調度,一方面增加業(yè)務系統(tǒng)的復雜度,另一方面也不方便管理,局部的任務過于繁忙,會導致整個系統(tǒng)的穩(wěn)定性降低,從而降低前臺用戶的使用感知。
基于目前的情況,需要建立一個跨各個子系統(tǒng)的分布式任務調度平臺,對集中MSS系統(tǒng)中的后臺任務進行統(tǒng)一管理、統(tǒng)一調度,分散主機資源占用,從而提升系統(tǒng)的穩(wěn)定性和靈活性。
(1)后臺任務服務由“獨占”服務進階為“分布式”服務。任務執(zhí)行由原來的單個子系統(tǒng)獨自管理,變?yōu)橛煞植际饺蝿照{度平臺進行統(tǒng)籌管理。
(2)解決單點故障問題,保證系統(tǒng)高可用。后臺任務的執(zhí)行由于主機繁忙易導致任務失敗,而分布式任務調度平臺可以根據(jù)主機的忙閑情況,合理分配主機。
(3)解決任務調度水平動態(tài)擴展問題。當各系統(tǒng)出現(xiàn)大量后臺任務時,可以隨時對執(zhí)行主機進行水平擴展,提升后臺任務執(zhí)行效率。
(4)支持任務調度的監(jiān)控。通過分布式任務調度平臺的前臺頁面,能實時監(jiān)控到目前整個MSS系統(tǒng)中后臺任務的分布情況,并根據(jù)任務的執(zhí)行情況采取對應的運營手段。
分布式任務調度平臺的技術架構可以分為三大部分:Zookeeper組(Zookeeper Cluster)、任務調度組(Scheduler Cluster)、任務執(zhí)行組(Worker Cluster)。
Zookeeper組(Zookeeper Cluster):實現(xiàn)任務的分布式配置及各服務間的交互通信,Zookeeper以TreeNode類型進行存儲,支持Cluster形式部署且保證最終數(shù)據(jù)一致性。
任務調度組(Scheduler Cluster):任務調度機向控制臺中心注冊后,共享調度任務,且同一調度任務僅有一臺調度機執(zhí)行調度,當前調度機異常宕機后,其余的調度機會接上。任務調度組負責管理調度信息,按照調度配置發(fā)出調度請求,自身不承擔業(yè)務代碼。調度系統(tǒng)與任務解耦,提高了系統(tǒng)可用性和穩(wěn)定性,同時調度系統(tǒng)性能不再受限于任務模塊。支持可視化、簡單且動態(tài)的管理調度信息,包括任務新建、更新、刪除、GLUE開發(fā)和任務報警等。所有上述操作都會實時生效,同時支持監(jiān)控調度結果以及執(zhí)行日志。
任務執(zhí)行組(Worker Cluster):任務執(zhí)行組負責接收調度請求并執(zhí)行任務邏輯。任務模塊專注于任務的執(zhí)行等操作,開發(fā)和維護更加簡單和高效。任務執(zhí)行機向控制臺中心注冊后,根據(jù)配置執(zhí)行線程數(shù)量(單線程或多線程)執(zhí)行任務,可單機執(zhí)行或多機并行執(zhí)行,當前執(zhí)行機異常宕機后,調度機會新調度一臺執(zhí)行機接管執(zhí)行。
根據(jù)分布式任務調度的技術架構,對集中MSS系統(tǒng)的分布式任務調度部署分為三大部分:Zookeeper集群資源控制臺、任務調度平臺控制臺、任務執(zhí)行層。實施部署方案如圖1所示。
圖1 實施部署方案
Zookeeper集群資源控制臺,建議新增服務器資源。為了保證控制臺的運行穩(wěn)定,可以采用“一主二從”的部署方式??刂婆_主要用于部署ZooKeeper的集群服務。
任務調度平臺控制臺,建議新增服務器資源,由三臺應用集群和兩臺主從數(shù)據(jù)庫組成。用于統(tǒng)一作業(yè)平臺對調度策略、任務項進行維護,對任務執(zhí)行情況、日志情況進行管理。
任務執(zhí)行層,利用集中MSS系統(tǒng)的現(xiàn)有資源,對應用服務器集群進行重新設計、部署,任務執(zhí)行工作仍然由各個業(yè)務系統(tǒng)完成,但統(tǒng)一由任務調度平臺進行管控。
(1)動態(tài)彈性擴容縮容??刂品栈驁?zhí)行服務可以通過ZK的服務注冊和服務下線接口,完成服務的動態(tài)伸縮。對當前任務無感知,對后續(xù)接入的新任務生效。
(2)任務失效轉移。在彈性擴容縮容或部分服務失聯(lián)的時候,本服務正在執(zhí)行的任務會被調度到其他正??蓤?zhí)行的服務繼續(xù)執(zhí)行,直到完成為止。
(3)大任務分片。將一個大型任務拆分為n個獨立的小任務項,然后由分布式的服務器分別執(zhí)行某一個或幾個分片項,達到分散壓力,提高執(zhí)行效率的目標。
(4)多線程作業(yè)。對于一些高吞吐的業(yè)務處理模式,可以開啟足夠多的線程快速處理。
(5)保證數(shù)據(jù)一致性。基于Paxos算法,通過投票對寫操作進行全局編碼,同時刻只有一個寫操作被批準,不會出現(xiàn)重復執(zhí)行的情況,保證了企業(yè)數(shù)據(jù)一致性。
(6)資源集約管控。M域各專業(yè)分散的任務作業(yè)服務,本專業(yè)內分散在各個節(jié)點、各個省份的任務作業(yè)服務,由分布式任務調度平臺進行統(tǒng)一管理和分配,解決了資源忙閑程度不均的問題,進一步提升了企業(yè)資源利用率。
(7)任務實時監(jiān)管。系統(tǒng)的任務作業(yè)狀態(tài)由原來的不可預知、無法監(jiān)控到現(xiàn)在可對服務狀態(tài)、失敗次數(shù)、運行時間等指標進行實時掌握。
本文所介紹的分布式任務調度技術在中國電信集中MSS系統(tǒng)中進行了部署和推廣應用。中國電信集中MSS系統(tǒng)涵蓋了人力資源、采購、物流、計劃建設、運維成本、審計、SAP等多個專業(yè)子系統(tǒng)。在沒有部署分布式任務調度平臺前,各個子系統(tǒng)的后臺任務只能在各自系統(tǒng)的后臺任務執(zhí)行機中執(zhí)行,業(yè)務繁忙期間,例如月初的采購備貨、月中的集中項目審計、月底的財務月結等,用戶有大量的報表統(tǒng)計、數(shù)據(jù)導入導出、操作日志上報等操作,在獨立后臺執(zhí)行機的情況下,后臺任務只能依次排隊執(zhí)行,排隊等待時間長,并且由于任務超時容易導致任務執(zhí)行失敗,整體的后臺任務執(zhí)行成功率只有83%左右。上線分布式任務調度平臺后,所有子系統(tǒng)的執(zhí)行機在任務調度平臺的統(tǒng)一指揮下,為所有的系統(tǒng)服務,哪臺執(zhí)行機器空閑,就分發(fā)任務至該臺機器執(zhí)行,后臺任務執(zhí)行的成功率提升至99%,整體任務執(zhí)行的時間也縮減至原來的四分之一,用戶使用更便捷,系統(tǒng)響應更快,用戶感知提升明顯。該平臺獲得2019年中國電信集團公司個人崗位創(chuàng)新二等獎。