陶翠 胡玉波 張方杰
摘 ?要:在基于通信的列車運(yùn)行控制CBTC系統(tǒng)中,列車自動(dòng)監(jiān)控子系統(tǒng)用以在線指揮和監(jiān)督列車的運(yùn)行,其對(duì)提高列車的運(yùn)行效率至關(guān)重要。應(yīng)用服務(wù)器是ATS子系統(tǒng)的大腦,可保證ATS系統(tǒng)的穩(wěn)定運(yùn)行,因此其可用性和可靠性尤為重要。通過引入集群,可大幅提高應(yīng)用服務(wù)器的可用性和可靠性,截至目前,應(yīng)用服務(wù)器集群已在長(zhǎng)沙地鐵四號(hào)線安全運(yùn)營(yíng)兩年。
關(guān)鍵詞:列車自動(dòng)監(jiān)控;應(yīng)用服務(wù)器;集群
中圖分類號(hào):TP315;U284 ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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 ?引 ?言
列車自動(dòng)監(jiān)控(ATS)系統(tǒng)是基于現(xiàn)代數(shù)據(jù)通信和計(jì)算機(jī)網(wǎng)絡(luò)的分布式實(shí)時(shí)計(jì)算機(jī)控制系統(tǒng),通過與列車自動(dòng)防護(hù)ATP系統(tǒng)和列車自動(dòng)運(yùn)行ATO系統(tǒng)的協(xié)調(diào)配合,完成對(duì)城市高密度軌道交通信號(hào)系統(tǒng)的自動(dòng)化管理和全自動(dòng)行車調(diào)度指揮控制[1]。ATS系統(tǒng)屬于分布式網(wǎng)絡(luò)系統(tǒng),由中心應(yīng)用服務(wù)器子系統(tǒng)(CATS)、車站服務(wù)器子系統(tǒng)、工作站子系統(tǒng)、通信服務(wù)器子系統(tǒng)、運(yùn)行圖工作站子系統(tǒng)組成。CATS是ATS系統(tǒng)的大腦,其穩(wěn)定性和可靠性是ATS系統(tǒng)設(shè)計(jì)的核心[2]。
在長(zhǎng)沙地鐵四號(hào)線的設(shè)計(jì)中,CATS采用三重冗余的設(shè)計(jì)方法。為保證冗余框架下數(shù)據(jù)的一致性、穩(wěn)定性以及CATS主機(jī)的可用性,在CATS的設(shè)計(jì)中引入了ZooKeeper集群,用以實(shí)現(xiàn)運(yùn)行數(shù)據(jù)的存儲(chǔ)同步以及保證CATS主機(jī)的唯一性。在正式應(yīng)用前,對(duì)集群方案進(jìn)行了充分測(cè)試,驗(yàn)證了ZooKeeper集群在CATS選主及數(shù)據(jù)存儲(chǔ)方面的正確性及可行性。
1 ?ZooKeeper介紹
ZooKeeper是一個(gè)分布式協(xié)調(diào)服務(wù)的開源框架,主要用來解決分布式集群中應(yīng)用系統(tǒng)的一致性問題[3]。
ZooKeeper本質(zhì)上是一個(gè)分布式的小文件存儲(chǔ)系統(tǒng),提供類似于文件系統(tǒng)的目錄樹方式的數(shù)據(jù)存儲(chǔ),并且可以對(duì)樹中的節(jié)點(diǎn)進(jìn)行有效管理,從而用來維護(hù)和監(jiān)控所存儲(chǔ)數(shù)據(jù)的狀態(tài)變化。通過監(jiān)控?cái)?shù)據(jù)狀態(tài)的變化,可以實(shí)現(xiàn)基于數(shù)據(jù)的集群管理。例如統(tǒng)一命名服務(wù)、分布式配置管理、分布式消息隊(duì)列、分布式鎖、分布式協(xié)調(diào)等功能的實(shí)現(xiàn)。
ZooKeeper集群角色有三種:
(1)Leader:ZooKeeper集群工作的核心。事務(wù)請(qǐng)求(寫操作)的唯一調(diào)度和處理者,保證集群事務(wù)處理的順序性;集群內(nèi)部各個(gè)服務(wù)器的調(diào)度者。
(2)Follower:處理客戶端非事務(wù)(讀操作)請(qǐng)求,轉(zhuǎn)發(fā)事務(wù)請(qǐng)求給Leader;參與集群Leader選舉投票。
(3)Observer:觀察者角色。觀察ZooKeeper集群的最新狀態(tài)變化并將這些狀態(tài)同步過來,對(duì)于非事務(wù)請(qǐng)求,其可以獨(dú)立處理,對(duì)于事務(wù)請(qǐng)求,則會(huì)轉(zhuǎn)發(fā)給Leader服務(wù)器進(jìn)行處理。其不會(huì)參與任何形式的投票,只提供非事務(wù)服務(wù),通常用于在不影響集群事務(wù)處理能力的前提下提升集群的非事務(wù)處理能力[4]。
2 ?集群數(shù)據(jù)存儲(chǔ)及同步
長(zhǎng)沙地鐵四號(hào)線選用ZooKeeper來搭建集群,利用雙網(wǎng)兩套平臺(tái)集群(A網(wǎng)集群和B網(wǎng)集群),對(duì)部分關(guān)鍵的內(nèi)存數(shù)據(jù)、配置文件、數(shù)據(jù)庫數(shù)據(jù)進(jìn)行實(shí)時(shí)冗余存儲(chǔ)。保證數(shù)據(jù)源數(shù)據(jù)(即內(nèi)存數(shù)據(jù)、配置文件、數(shù)據(jù)庫數(shù)據(jù))、A網(wǎng)平臺(tái)集群數(shù)據(jù)、B網(wǎng)平臺(tái)集群數(shù)據(jù)這三種數(shù)據(jù)的一致性。數(shù)據(jù)存儲(chǔ)及同步的流程圖如圖1所示。
在長(zhǎng)沙地鐵四號(hào)線的設(shè)計(jì)中,集群需要同步的數(shù)據(jù)包括當(dāng)天計(jì)劃、派班計(jì)劃、車次窗更新、用戶信息、路徑信息、列車識(shí)別號(hào)等,這些信息均不涉及安全相關(guān)功能[5]。
CATS主機(jī)首先會(huì)同時(shí)向兩套集群寫入要存儲(chǔ)的數(shù)據(jù)(數(shù)據(jù)流1、數(shù)據(jù)流2),當(dāng)發(fā)現(xiàn)兩套集群數(shù)據(jù)不一致時(shí),可對(duì)兩套集群數(shù)據(jù)進(jìn)行同步(數(shù)據(jù)流3、數(shù)據(jù)流4)。當(dāng)CATS主備發(fā)生切換時(shí),應(yīng)用服務(wù)器若發(fā)現(xiàn)自己是主機(jī),則需要去集群上獲取當(dāng)前數(shù)據(jù)。其優(yōu)先從A網(wǎng)集群讀取數(shù)據(jù),如若A網(wǎng)集群不可用,才去B網(wǎng)集群讀取數(shù)據(jù)。
3 ?CATS集群選主
CATS集群選主是利用雙網(wǎng)兩套集群,根據(jù)CATS在兩套集群上的注冊(cè)信息,選舉出由哪個(gè)CATS做主機(jī)。其核心目標(biāo)是實(shí)現(xiàn)在雙網(wǎng)環(huán)境下,只要有一個(gè)網(wǎng)可用,有一個(gè)平臺(tái)集群正常,CATS就能夠正常提供服務(wù)。
假設(shè)三臺(tái)CATS的節(jié)點(diǎn)名稱分別為S1、S2、S3,使S1、S2和S3同時(shí)在A網(wǎng)集群和B網(wǎng)集群上注冊(cè)節(jié)點(diǎn),注冊(cè)內(nèi)容包括是否為主機(jī)、是否在線兩項(xiàng)。注冊(cè)完成后,A網(wǎng)集群和B網(wǎng)集群之間會(huì)進(jìn)行數(shù)據(jù)同步。A網(wǎng)集群和B網(wǎng)集群分別進(jìn)行選舉,最后優(yōu)先采納A網(wǎng)集群上的選舉數(shù)據(jù),同時(shí)在A網(wǎng)集群、B網(wǎng)集群之間同步選舉數(shù)據(jù)。S1、S2和S3各自監(jiān)聽和維護(hù)集群上的選舉數(shù)據(jù),當(dāng)S1、S2和S3發(fā)現(xiàn)自己維護(hù)的選舉數(shù)據(jù)發(fā)生變化時(shí),再啟動(dòng)一次新的選舉。
3.1 ?基本選舉策略
用戶要求,正常情況下S1和S2互為主備,S3固定位備機(jī),不可手動(dòng)倒機(jī)升主。僅當(dāng)S1和S2都不可用的情況下,S3才可升為主機(jī)。依據(jù)此需求,設(shè)計(jì)選舉策略如下:
(1)優(yōu)先選舉S1和S2(同等權(quán)重),只有當(dāng)S1和S2與平臺(tái)集群A和B均失去聯(lián)系時(shí)才選舉S3。
(2)算法保證S1和S2以同等概率獲得選舉機(jī)會(huì)。
綜上可知,S3被選為主機(jī)的唯一條件就是S1與S2均與集群失去聯(lián)系,故S3的選舉不再詳細(xì)討論。
3.2 ?S1和S2的選舉策略
由于S1和S2具有同等權(quán)重,為保證每次選舉結(jié)果僅有一個(gè)主機(jī),設(shè)計(jì)選舉策略如下:
(1)在A網(wǎng)集群平臺(tái)沒有選出主機(jī)而B網(wǎng)集群平臺(tái)選出了主機(jī)時(shí),以B網(wǎng)集群平臺(tái)選舉結(jié)果為準(zhǔn)。
(2)A網(wǎng)集群平臺(tái)和B網(wǎng)集群平臺(tái)同時(shí)選出了主機(jī)且選舉結(jié)果一致時(shí),選舉成功。
(3)A網(wǎng)集群平臺(tái)和B網(wǎng)集群平臺(tái)同時(shí)選出了主機(jī)且選舉結(jié)果不一致時(shí),以A網(wǎng)集群平臺(tái)的選舉結(jié)果為準(zhǔn)。
(4)A網(wǎng)集群平臺(tái)和B網(wǎng)集群平臺(tái)同時(shí)離線時(shí),主機(jī)保持不變。
4 ?CATS集群環(huán)境部署及配置
在長(zhǎng)沙地鐵四號(hào)線中,中心機(jī)房為CATS主備配置(S1和S2),聯(lián)鎖區(qū)8設(shè)置了備用CATS(S3)。所有終端均為雙網(wǎng)配置。兩套集群中,每套分別部署5個(gè)集群節(jié)點(diǎn)。由于聯(lián)鎖區(qū)的車站服務(wù)器都采用了雙機(jī)冗余配置,故A網(wǎng)的5個(gè)集群節(jié)點(diǎn)部署在A機(jī),B網(wǎng)的5個(gè)集群節(jié)點(diǎn)部署在B機(jī)。在該配置方案下,一套集群中至少有3個(gè)集群節(jié)點(diǎn)正常聯(lián)網(wǎng),該集群才可使用,如果是2個(gè)及2個(gè)以下節(jié)點(diǎn)聯(lián)網(wǎng),那么該集群不可用。部署示意圖如圖2所示。
由于引入了集群,故CATS的配置文件中需添加集群節(jié)點(diǎn)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
本案例中每套集群設(shè)置了5個(gè)集群節(jié)點(diǎn),集群服務(wù)部署在C盤,數(shù)據(jù)存儲(chǔ)放在D盤。D盤ZooKeeper中,myid的值依據(jù)下面的節(jié)點(diǎn)列表進(jìn)行相關(guān)配置。每套集群zoo.cfg的配置為:
#A網(wǎng)服務(wù)器列表
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網(wǎng)服務(wù)器列表
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集群的測(cè)試
依據(jù)圖2的集群部署圖及配置文件搭建測(cè)試環(huán)境,對(duì)集群的數(shù)據(jù)同步及選主功能進(jìn)行測(cè)試。測(cè)試場(chǎng)景及結(jié)果如表1所示。
6 ?結(jié) ?論
經(jīng)過測(cè)試,引入集群后可實(shí)現(xiàn)CATS的三重冗余,保證某一時(shí)刻只有一個(gè)CATS作為主機(jī)工作,且CATS倒機(jī)過程中不會(huì)出現(xiàn)數(shù)據(jù)丟失,在很大程度上提高了CATS的可用性和可靠性,有效保證了對(duì)長(zhǎng)沙地鐵四號(hào)線列車的監(jiān)視和控制,提高了運(yùn)營(yíng)的可靠性。
參考文獻(xiàn):
[1] 中國(guó)城市軌道交通協(xié)會(huì)技術(shù)裝備專業(yè)委員會(huì).城市軌道交通CBTC信號(hào)系統(tǒng)—ATS子系統(tǒng)規(guī)范:CZJS/T 0030—2015 [S]. 2015:27.
[2] 李芝宏.城市軌道交通ATS系統(tǒng)監(jiān)控子系統(tǒng)研究 [D].蘭州:蘭州交通大學(xué),2015.
[3] 唐海東,武延軍.分布式同步系統(tǒng)ZooKeeper的優(yōu)化 [J].計(jì)算機(jī)工程,2014(4):53-56.
[4] 劉芬,王芳,田昊.基于ZooKeeper的分布式鎖服務(wù)及性能優(yōu)化 [J].計(jì)算機(jī)研究與發(fā)展,2014(S1):229-234.
[5] 李澤軍,李銳,婁智,等.城市軌道交通運(yùn)營(yíng)與信號(hào) [M].合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,2014.
作者簡(jiǎn)介:陶翠(1985—),女,漢族,山東聊城人,測(cè)試工程師,中級(jí)工程師,碩士,研究方向:模式識(shí)別與智能控制;胡玉波(1982—),男,漢族,江蘇淮安人,開發(fā)工程師,中級(jí)工程師,碩士,研究方向:模式識(shí)別與智能控制;張方杰(1981—),男,漢族,湖北潛江人,系統(tǒng)工程師,高級(jí)工程師,碩士,研究方向:模式識(shí)別與智能控制。