陶翠 胡玉波 張方杰



摘 ?要:在基于通信的列車運行控制CBTC系統中,列車自動監控子系統用以在線指揮和監督列車的運行,其對提高列車的運行效率至關重要。應用服務器是ATS子系統的大腦,可保證ATS系統的穩定運行,因此其可用性和可靠性尤為重要。通過引入集群,可大幅提高應用服務器的可用性和可靠性,截至目前,應用服務器集群已在長沙地鐵四號線安全運營兩年。
關鍵詞:列車自動監控;應用服務器;集群
中圖分類號:TP315;U284 ? ? ?文獻標識碼:A 文章編號:2096-4706(2021)06-0022-03
Application of Cluster Technology in ATS System
TAO Cui1,HU Yubo1,ZHANG Fangjie2
(1.Beijing Branch,Hunan CRRC Times Signal & Communication Co.,Ltd.,Beijing 100071,China;
2.China Nuclear Control System Engineering Co.,Ltd.,Beijing ?102401,China)
Abstract:In the Communication Based Train Control(CBTC) system,the automatic train supervision(ATS)subsystem is used to command and supervise the train operation online,which is very important to improve the efficiency of train operation. Application server is the brain of ATS subsystem,which can ensure the stable operation of ATS system,so its availability and reliability are particularly important. Through the introduction of cluster,the availability and reliability of application server can be greatly improved. Up to now,application server cluster has been applied in Changsha Metro Line 4 and has been in safe operation for two years.
Keywords:ATS;application server;cluster
0 ?引 ?言
列車自動監控(ATS)系統是基于現代數據通信和計算機網絡的分布式實時計算機控制系統,通過與列車自動防護ATP系統和列車自動運行ATO系統的協調配合,完成對城市高密度軌道交通信號系統的自動化管理和全自動行車調度指揮控制[1]。ATS系統屬于分布式網絡系統,由中心應用服務器子系統(CATS)、車站服務器子系統、工作站子系統、通信服務器子系統、運行圖工作站子系統組成。CATS是ATS系統的大腦,其穩定性和可靠性是ATS系統設計的核心[2]。
在長沙地鐵四號線的設計中,CATS采用三重冗余的設計方法。為保證冗余框架下數據的一致性、穩定性以及CATS主機的可用性,在CATS的設計中引入了ZooKeeper集群,用以實現運行數據的存儲同步以及保證CATS主機的唯一性。在正式應用前,對集群方案進行了充分測試,驗證了ZooKeeper集群在CATS選主及數據存儲方面的正確性及可行性。
1 ?ZooKeeper介紹
ZooKeeper是一個分布式協調服務的開源框架,主要用來解決分布式集群中應用系統的一致性問題[3]。
ZooKeeper本質上是一個分布式的小文件存儲系統,提供類似于文件系統的目錄樹方式的數據存儲,并且可以對樹中的節點進行有效管理,從而用來維護和監控所存儲數據的狀態變化。通過監控數據狀態的變化,可以實現基于數據的集群管理。例如統一命名服務、分布式配置管理、分布式消息隊列、分布式鎖、分布式協調等功能的實現。
ZooKeeper集群角色有三種:
(1)Leader:ZooKeeper集群工作的核心。事務請求(寫操作)的唯一調度和處理者,保證集群事務處理的順序性;集群內部各個服務器的調度者。
(2)Follower:處理客戶端非事務(讀操作)請求,轉發事務請求給Leader;參與集群Leader選舉投票。
(3)Observer:觀察者角色。觀察ZooKeeper集群的最新狀態變化并將這些狀態同步過來,對于非事務請求,其可以獨立處理,對于事務請求,則會轉發給Leader服務器進行處理。其不會參與任何形式的投票,只提供非事務服務,通常用于在不影響集群事務處理能力的前提下提升集群的非事務處理能力[4]。
2 ?集群數據存儲及同步
長沙地鐵四號線選用ZooKeeper來搭建集群,利用雙網兩套平臺集群(A網集群和B網集群),對部分關鍵的內存數據、配置文件、數據庫數據進行實時冗余存儲。保證數據源數據(即內存數據、配置文件、數據庫數據)、A網平臺集群數據、B網平臺集群數據這三種數據的一致性。數據存儲及同步的流程圖如圖1所示。
在長沙地鐵四號線的設計中,集群需要同步的數據包括當天計劃、派班計劃、車次窗更新、用戶信息、路徑信息、列車識別號等,這些信息均不涉及安全相關功能[5]。
CATS主機首先會同時向兩套集群寫入要存儲的數據(數據流1、數據流2),當發現兩套集群數據不一致時,可對兩套集群數據進行同步(數據流3、數據流4)。當CATS主備發生切換時,應用服務器若發現自己是主機,則需要去集群上獲取當前數據。其優先從A網集群讀取數據,如若A網集群不可用,才去B網集群讀取數據。
3 ?CATS集群選主
CATS集群選主是利用雙網兩套集群,根據CATS在兩套集群上的注冊信息,選舉出由哪個CATS做主機。其核心目標是實現在雙網環境下,只要有一個網可用,有一個平臺集群正常,CATS就能夠正常提供服務。
假設三臺CATS的節點名稱分別為S1、S2、S3,使S1、S2和S3同時在A網集群和B網集群上注冊節點,注冊內容包括是否為主機、是否在線兩項。注冊完成后,A網集群和B網集群之間會進行數據同步。A網集群和B網集群分別進行選舉,最后優先采納A網集群上的選舉數據,同時在A網集群、B網集群之間同步選舉數據。S1、S2和S3各自監聽和維護集群上的選舉數據,當S1、S2和S3發現自己維護的選舉數據發生變化時,再啟動一次新的選舉。
3.1 ?基本選舉策略
用戶要求,正常情況下S1和S2互為主備,S3固定位備機,不可手動倒機升主。僅當S1和S2都不可用的情況下,S3才可升為主機。依據此需求,設計選舉策略如下:
(1)優先選舉S1和S2(同等權重),只有當S1和S2與平臺集群A和B均失去聯系時才選舉S3。
(2)算法保證S1和S2以同等概率獲得選舉機會。
綜上可知,S3被選為主機的唯一條件就是S1與S2均與集群失去聯系,故S3的選舉不再詳細討論。
3.2 ?S1和S2的選舉策略
由于S1和S2具有同等權重,為保證每次選舉結果僅有一個主機,設計選舉策略如下:
(1)在A網集群平臺沒有選出主機而B網集群平臺選出了主機時,以B網集群平臺選舉結果為準。
(2)A網集群平臺和B網集群平臺同時選出了主機且選舉結果一致時,選舉成功。
(3)A網集群平臺和B網集群平臺同時選出了主機且選舉結果不一致時,以A網集群平臺的選舉結果為準。
(4)A網集群平臺和B網集群平臺同時離線時,主機保持不變。
4 ?CATS集群環境部署及配置
在長沙地鐵四號線中,中心機房為CATS主備配置(S1和S2),聯鎖區8設置了備用CATS(S3)。所有終端均為雙網配置。兩套集群中,每套分別部署5個集群節點。由于聯鎖區的車站服務器都采用了雙機冗余配置,故A網的5個集群節點部署在A機,B網的5個集群節點部署在B機。在該配置方案下,一套集群中至少有3個集群節點正常聯網,該集群才可使用,如果是2個及2個以下節點聯網,那么該集群不可用。部署示意圖如圖2所示。
由于引入了集群,故CATS的配置文件中需添加集群節點IP的配置,配置為:
[ZK]
AddrA = 10.28.1.10:2181,10.28.1.61:2181,10.28.1.211:2181,10.28.2.101:2181,10.28.2.201:2181
AddrB = 10.28.5.8:2181,10.28.5.62:2181,10.28.5.212:2181,10.28.6.102:2181,10.28.6.202:2181
TimeOutA = 2000
TimeOutB = 2000
bCreateLog = N
本案例中每套集群設置了5個集群節點,集群服務部署在C盤,數據存儲放在D盤。D盤ZooKeeper中,myid的值依據下面的節點列表進行相關配置。每套集群zoo.cfg的配置為:
#A網服務器列表
server.1 = 10.28.1.10:2888:3888
server.2 = 10.28.1.61:2888:3888
server.3 = 10.28.1.211:2888:3888
server.4 = 10.28.1.101:2888:3888
server.5 = 10.28.2.201:2888:3888
#B網服務器列表
server.1 = 10.28.5.8:2888:3888
server.2 = 10.28.5.62:2888:3888
server.3 = 10.28.5.212:2888:3888
server.4 = 10.28.6.102:2888:3888
server.5 = 10.28.6.202:2888:3888
5 ?CATS集群的測試
依據圖2的集群部署圖及配置文件搭建測試環境,對集群的數據同步及選主功能進行測試。測試場景及結果如表1所示。
6 ?結 ?論
經過測試,引入集群后可實現CATS的三重冗余,保證某一時刻只有一個CATS作為主機工作,且CATS倒機過程中不會出現數據丟失,在很大程度上提高了CATS的可用性和可靠性,有效保證了對長沙地鐵四號線列車的監視和控制,提高了運營的可靠性。
參考文獻:
[1] 中國城市軌道交通協會技術裝備專業委員會.城市軌道交通CBTC信號系統—ATS子系統規范:CZJS/T 0030—2015 [S]. 2015:27.
[2] 李芝宏.城市軌道交通ATS系統監控子系統研究 [D].蘭州:蘭州交通大學,2015.
[3] 唐海東,武延軍.分布式同步系統ZooKeeper的優化 [J].計算機工程,2014(4):53-56.
[4] 劉芬,王芳,田昊.基于ZooKeeper的分布式鎖服務及性能優化 [J].計算機研究與發展,2014(S1):229-234.
[5] 李澤軍,李銳,婁智,等.城市軌道交通運營與信號 [M].合肥:中國科學技術大學出版社,2014.
作者簡介:陶翠(1985—),女,漢族,山東聊城人,測試工程師,中級工程師,碩士,研究方向:模式識別與智能控制;胡玉波(1982—),男,漢族,江蘇淮安人,開發工程師,中級工程師,碩士,研究方向:模式識別與智能控制;張方杰(1981—),男,漢族,湖北潛江人,系統工程師,高級工程師,碩士,研究方向:模式識別與智能控制。