北京廣利核系統(tǒng)工程有限公司 彭立,胡俊,李寧
核電站專用儀控系統(tǒng)是以核電站KDO、KME、EPP等系統(tǒng)需求為基礎(chǔ),開發(fā)出的用于核電站小規(guī)模專用儀控系統(tǒng)的產(chǎn)品系統(tǒng)平臺(tái),該平臺(tái)具有高速、高精度等系統(tǒng)特性,主要用于核電站對(duì)采樣速度、采樣精度、長(zhǎng)期穩(wěn)定性等方面有特殊要求的相關(guān)系統(tǒng)中。
本文將會(huì)論述核電專用儀控系統(tǒng)中服務(wù)器如何實(shí)現(xiàn)分布式部署,以及如何解決服務(wù)器不利于擴(kuò)展和性能降低的問題。
通過服務(wù)器的分布式部署研究,可使核電專用儀控系統(tǒng)具有更加良好的擴(kuò)展能力以及更好的服務(wù)性能。
目前核電專用儀控系統(tǒng)整體上采用單網(wǎng)運(yùn)行的方式實(shí)現(xiàn)服務(wù)器以及控制站的通訊,服務(wù)器只有兩個(gè),所有的服務(wù)程序都需要分布在每個(gè)服務(wù)器上,如圖1所示。隨著應(yīng)用的逐步擴(kuò)展,首先單個(gè)服務(wù)器運(yùn)行所有服務(wù)程序的性能越來越不能滿足用戶的要求,而且控制站上傳數(shù)據(jù)也只能分別發(fā)送給兩個(gè)服務(wù)器,數(shù)據(jù)量的增加會(huì)導(dǎo)致服務(wù)程序性能的降低,因此系統(tǒng)最多只能支持3個(gè)控制站。同樣操作員站的訪問請(qǐng)求增加也會(huì)導(dǎo)致服務(wù)程序性能的降低,因此操作站只能支持3個(gè)。這對(duì)系統(tǒng)的發(fā)展造成了很大的局限性。
同時(shí)服務(wù)器軟件在實(shí)現(xiàn)上采用了共享磁盤等方式,該方式在應(yīng)用初期是滿足各項(xiàng)目需求的,隨著應(yīng)用的拓展,越來越多的項(xiàng)目需要采用分布式的部署方式,服務(wù)器軟件內(nèi)部由于使用共享磁盤導(dǎo)致各個(gè)軟件任務(wù)之間只能通過共享內(nèi)存、消息隊(duì)列等方式進(jìn)行通訊,因此必須部署在一臺(tái)機(jī)器上,不利于擴(kuò)展;同時(shí),如果想增加新的應(yīng)用,則需要對(duì)這些共享內(nèi)存、消息隊(duì)列進(jìn)行初始化等操作,比較煩瑣,不利于維護(hù)。
圖1 核電儀控系統(tǒng)當(dāng)前結(jié)構(gòu)
核電專用儀控系統(tǒng)處于分布式部署的考慮,需要在服務(wù)器性能上有所突破。而服務(wù)器性能上要進(jìn)行突破,最大的障礙在于服務(wù)任務(wù)都部署在同一臺(tái)機(jī)器上,如果能實(shí)現(xiàn)服務(wù)器的分布式部署,則能夠用更多的服務(wù)器來平攤系統(tǒng)負(fù)荷,達(dá)到擴(kuò)大系統(tǒng)規(guī)模的目的。
為了達(dá)到服務(wù)器分布式部署的目標(biāo),在系統(tǒng)軟件總體設(shè)計(jì)上則需要進(jìn)行模塊化設(shè)計(jì),當(dāng)服務(wù)器的所有模塊都作為組件融入到系統(tǒng)中時(shí),使用不同的服務(wù)器來加載這些組件就能實(shí)現(xiàn)系統(tǒng)功能,同時(shí)系統(tǒng)的擴(kuò)展性也得到了體現(xiàn)。
針對(duì)這種分布式部署的設(shè)計(jì)目標(biāo),服務(wù)器進(jìn)行了基于管理網(wǎng)協(xié)議的模塊化設(shè)計(jì),將管理網(wǎng)協(xié)議設(shè)計(jì)為網(wǎng)絡(luò)中間件通信平臺(tái),服務(wù)器上各個(gè)模塊可以獨(dú)立設(shè)計(jì),通過網(wǎng)絡(luò)中間件交互信息,同時(shí)提供獨(dú)立的網(wǎng)絡(luò)中間件服務(wù)接口。擴(kuò)展的服務(wù)器模塊,可以通過網(wǎng)絡(luò)中間件接口進(jìn)行新的專用功能設(shè)計(jì)。
同時(shí)為了增強(qiáng)系統(tǒng)的可靠性,需對(duì)網(wǎng)絡(luò)進(jìn)行冗余設(shè)計(jì),網(wǎng)絡(luò)中間件還需要實(shí)現(xiàn)網(wǎng)絡(luò)診斷及選擇網(wǎng)絡(luò)自動(dòng)選擇的功能,如圖2所示。
圖2 核電專用儀控系統(tǒng)設(shè)計(jì)架構(gòu)
服務(wù)器基于網(wǎng)絡(luò)中間件的方式來實(shí)現(xiàn)分布式部署。其主要功能通過監(jiān)控網(wǎng)協(xié)議來實(shí)現(xiàn),并且為了滿足核電專用儀控系統(tǒng)的冗余要求,服務(wù)器還需要進(jìn)行服務(wù)任務(wù)雙網(wǎng)和雙任務(wù)的冗余研究。
網(wǎng)絡(luò)通訊中間件的設(shè)計(jì)目標(biāo)是滿足服務(wù)器軟件各任務(wù)之間的高性能數(shù)據(jù)通訊。任務(wù)之間的通訊網(wǎng)絡(luò)采用雙網(wǎng)冗余配置。服務(wù)器任務(wù)也采用雙任務(wù)冗余配置,分別部署在兩個(gè)冗余的服務(wù)器上。每個(gè)服務(wù)任務(wù)通過接口函數(shù)來對(duì)外提供服務(wù)。
網(wǎng)絡(luò)通訊中間件要求能支持冗余雙網(wǎng)絡(luò),即在一個(gè)網(wǎng)絡(luò)通訊發(fā)生故障時(shí),能快速平滑的切換到另一個(gè)正常的冗余網(wǎng)絡(luò),此切換對(duì)請(qǐng)求任務(wù)應(yīng)該是透明的。
服務(wù)器任務(wù)采用冗余配置。單任務(wù)運(yùn)行時(shí),其狀態(tài)為主,雙任務(wù)運(yùn)行時(shí),狀態(tài)為一主一從,只有主任務(wù)對(duì)外提供服務(wù)。冗余的任務(wù)之間應(yīng)該能保持?jǐn)?shù)據(jù)一致性。網(wǎng)絡(luò)通訊中間件能自動(dòng)診斷任務(wù)的主從狀態(tài),并能在任務(wù)故障時(shí),自動(dòng)進(jìn)行狀態(tài)和網(wǎng)絡(luò)切換。
《教師法》的制定和實(shí)施在社會(huì)上強(qiáng)調(diào)的教師的作用和地位,規(guī)范的教師與學(xué)生之間的關(guān)系,在全社會(huì)形成尊重教師尊重教育的風(fēng)氣。教育是民族振興和社會(huì)進(jìn)步的基礎(chǔ)。《教師法》的貫徹執(zhí)行重視是重視教育的表現(xiàn),促進(jìn)了教育事業(yè)的發(fā)展。
網(wǎng)絡(luò)通訊中間件通過周期診斷對(duì)方狀態(tài),作為判斷主從以及是否進(jìn)行主從切換的依據(jù)。診斷的狀態(tài)信息還包括是否存在、如果存在當(dāng)前狀態(tài)是主還是從等額外的信息。
應(yīng)用程序通過調(diào)用服務(wù)端提供的接口函數(shù)向服務(wù)軟件發(fā)送請(qǐng)求。網(wǎng)絡(luò)通訊中間件客戶端將應(yīng)用程序的請(qǐng)求數(shù)據(jù),按選定的通訊網(wǎng)絡(luò)發(fā)送給指定的服務(wù)軟件,并等待返回?cái)?shù)據(jù)。
網(wǎng)絡(luò)通訊中間件服務(wù)端收到請(qǐng)求數(shù)據(jù),調(diào)用服務(wù)任務(wù)的服務(wù)處理函數(shù),執(zhí)行服務(wù)處理。
服務(wù)軟件將服務(wù)處理結(jié)果返回網(wǎng)絡(luò)通訊中間件服務(wù)端。網(wǎng)絡(luò)通訊中間件服務(wù)端將處理結(jié)果返回客戶端。
網(wǎng)絡(luò)通訊中間件客戶端收到返回結(jié)果,并返回給發(fā)起請(qǐng)求的應(yīng)用程序。
整個(gè)實(shí)現(xiàn)方式如圖3所示。
圖3 網(wǎng)絡(luò)通訊中間件實(shí)現(xiàn)方式
基于上述的通訊方式,服務(wù)器軟件可以部署不同的服務(wù)端,同時(shí)其它依賴這些服務(wù)的程序作為客戶端使用,服務(wù)端所具有的服務(wù)功能可以根據(jù)整個(gè)核電專用儀控系統(tǒng)的設(shè)計(jì)來決定,將相類似的功能放在一個(gè)服務(wù)端,服務(wù)端之間的通訊只需要在同一網(wǎng)段即可進(jìn)行,這樣不僅能將功能作為組件進(jìn)行部署,還能基于性能的考慮對(duì)服務(wù)端進(jìn)行拆分,更好地滿足系統(tǒng)的總體要求。
網(wǎng)絡(luò)通訊中間件以DLL形式,加載到其它服務(wù)模塊進(jìn)程中。服務(wù)模塊通過繼承網(wǎng)絡(luò)通訊接口,保留基本功能的同時(shí),對(duì)它進(jìn)行擴(kuò)展來二次開發(fā)。
網(wǎng)絡(luò)通訊中間件根據(jù)其功能需求,被分為如下4個(gè)模塊來進(jìn)行實(shí)現(xiàn):數(shù)據(jù)發(fā)送模塊、數(shù)據(jù)接收模塊、主從診斷模塊和網(wǎng)絡(luò)診斷模塊。其工作方式如圖4所示。
圖4 網(wǎng)絡(luò)通訊任務(wù)內(nèi)部模塊設(shè)計(jì)
數(shù)據(jù)發(fā)送模塊主要實(shí)現(xiàn)進(jìn)程間和主機(jī)間的數(shù)據(jù)交換。在實(shí)現(xiàn)上通過網(wǎng)絡(luò)診斷模塊進(jìn)行選網(wǎng),這樣可以獲得能進(jìn)行正常通信的網(wǎng)絡(luò),如果選網(wǎng)失敗,則返回應(yīng)用層此次請(qǐng)求失敗??蛻舳税l(fā)送數(shù)據(jù)之后開始等待服務(wù)端的應(yīng)答,如果接收到說明服務(wù)器端已收到數(shù)據(jù),那么可以繼續(xù)等待數(shù)據(jù)。如果等待應(yīng)答時(shí)返回超時(shí)則需要重復(fù)發(fā)送,超時(shí)時(shí)間根據(jù)發(fā)送的數(shù)據(jù)量來自行設(shè)定,如果超過超時(shí)時(shí)間還未接收到應(yīng)答則定義此次請(qǐng)求失敗,返回給客戶端。如果發(fā)生超時(shí),則最多重發(fā)兩次后定義此操作失敗。在獲得服務(wù)端應(yīng)答后,準(zhǔn)備開始接收服務(wù)端返回的實(shí)際數(shù)據(jù)。同時(shí)根據(jù)應(yīng)用層定義的超時(shí)時(shí)間進(jìn)行判斷,如果在超時(shí)時(shí)間內(nèi)數(shù)據(jù)還沒有接收完畢,也定義此次請(qǐng)求失敗。接收完畢后向服務(wù)端發(fā)送確認(rèn)應(yīng)答,令服務(wù)端主動(dòng)退出服務(wù)。這樣就能將數(shù)據(jù)發(fā)送出去。
數(shù)據(jù)接收模塊主要進(jìn)行數(shù)據(jù)的接收,在實(shí)現(xiàn)上首先根據(jù)網(wǎng)絡(luò)參數(shù)的設(shè)置,來監(jiān)聽指定的網(wǎng)絡(luò)端口,接收到數(shù)據(jù)后,將數(shù)據(jù)傳遞給進(jìn)程進(jìn)行處理。服務(wù)器應(yīng)用程序通過配置文件來注冊(cè)服務(wù)端。配置好的端口可以交給網(wǎng)絡(luò)通訊中間件的接收數(shù)據(jù)模塊進(jìn)行處理。當(dāng)端口有數(shù)據(jù)到達(dá)時(shí),網(wǎng)絡(luò)通訊中間件將接收到的數(shù)據(jù)交給數(shù)據(jù)接收線程池中的線程去處理。數(shù)據(jù)接收線程將數(shù)據(jù)重組并且接收到所有的數(shù)據(jù)后,將數(shù)據(jù)交給服務(wù)端處理。這樣就能實(shí)現(xiàn)數(shù)據(jù)的接收。數(shù)據(jù)接收模塊主要進(jìn)行的是數(shù)據(jù)的重組和拼包操作,同時(shí)在數(shù)據(jù)接收模塊中還需要進(jìn)行線程池的分配工作以滿足并發(fā)的客戶端請(qǐng)求。
主從診斷模塊通過主從診斷規(guī)則,獲得和設(shè)置當(dāng)前服務(wù)器的主從狀態(tài)。主從診斷僅對(duì)服務(wù)端而言,客戶端不會(huì)進(jìn)行主從的任何操作。只有主服務(wù)任務(wù)才向其它任務(wù)提供服務(wù)。具體實(shí)現(xiàn)上服務(wù)任務(wù)處理程序可以通過重載網(wǎng)絡(luò)中間件提供的接口,來繼承主從診斷功能。服務(wù)任務(wù)之間的主從數(shù)據(jù)對(duì)齊由服務(wù)任務(wù)自己實(shí)現(xiàn),網(wǎng)絡(luò)中間件只是提供主從狀態(tài)的獲取。每個(gè)服務(wù)任務(wù),通過檢測(cè)本機(jī)網(wǎng)絡(luò)故障情況以及檢測(cè)對(duì)方任務(wù)的狀態(tài),來決定自己的主從。因此,主從診斷依賴于對(duì)本機(jī)網(wǎng)絡(luò)故障的檢測(cè)以及任務(wù)之間的數(shù)據(jù)通信。在設(shè)計(jì)上應(yīng)該在一定時(shí)間間隔內(nèi)周期進(jìn)行診斷,以便在需要進(jìn)行主從切換時(shí)能迅速進(jìn)行主從屬性切換,而又不會(huì)影響計(jì)算機(jī)CPU的瞬時(shí)負(fù)荷。對(duì)于主從模塊的診斷,屬于是冗余設(shè)計(jì)的一部分,實(shí)現(xiàn)其自動(dòng)和快速的主從切換是研究的重點(diǎn)。
雙網(wǎng)冗余模塊在一個(gè)網(wǎng)絡(luò)出現(xiàn)故障時(shí)以不影響數(shù)據(jù)傳輸為前提將數(shù)據(jù)從備用網(wǎng)發(fā)送出去。在研究中如果應(yīng)用層的客戶端選擇具體的網(wǎng)絡(luò),則可以根據(jù)其客戶端的選擇直接進(jìn)行數(shù)據(jù)的發(fā)送。同時(shí)提供任意網(wǎng)絡(luò)發(fā)送的功能,任意網(wǎng)絡(luò)發(fā)送時(shí)網(wǎng)絡(luò)中間件可以隨機(jī)選擇一個(gè)進(jìn)行診斷,如果診斷成功,則使用此網(wǎng)絡(luò)進(jìn)行發(fā)送,并且記錄下此網(wǎng)絡(luò)屬性,在以后的請(qǐng)求中繼續(xù)使用此網(wǎng)絡(luò),如果診斷失敗,則需要切換到另外一個(gè)進(jìn)行發(fā)送,同時(shí)也記錄下此網(wǎng)絡(luò)的屬性,在以后的請(qǐng)求中使用此網(wǎng)絡(luò)。通過這樣的手段可以達(dá)到網(wǎng)絡(luò)診斷的目的。對(duì)于網(wǎng)絡(luò)診斷而言,其自動(dòng)的網(wǎng)絡(luò)切換和數(shù)據(jù)的選網(wǎng)發(fā)送是研究的重點(diǎn)。
核電專用儀控系統(tǒng)服務(wù)器軟件分布式部署的研究成功,為核電專用儀控系統(tǒng)的維護(hù)和擴(kuò)展提供了良好的平臺(tái),在不斷新建的核電站中,核電專用儀控系統(tǒng)作為核電站運(yùn)行過程中的關(guān)鍵系統(tǒng),能滿足核電站多種多樣以及不斷擴(kuò)展的新需求,不僅能為實(shí)現(xiàn)系統(tǒng)易用性提供擴(kuò)展的基礎(chǔ),同時(shí)也能為核電站提供更多的安全保障。
[1]高陽, 鄒樹梁. 論我國(guó)核電產(chǎn)業(yè)的自主化新征程[J]. 北京: 中國(guó)投資, 2009.5.
[2]劉俊明. 數(shù)字控制系統(tǒng)原理: 分析與設(shè)計(jì)[M]. 北京: 國(guó)防科技大學(xué)出版社1990.7.
[3]何克忠, 郝忠恕. 計(jì)算機(jī)控制系統(tǒng)分析與設(shè)計(jì)[M]. 北京: 清華大學(xué), 1989.
[4]趙仁愷.中國(guó)核電的可持續(xù)發(fā)展[J].北京:中國(guó)工程科學(xué),2000.6.
[5]顧興元. 計(jì)算機(jī)控制系統(tǒng)[M]. 北京: 冶金工業(yè)出版社, 1981.
[6]Martin J. Principles of Data Base Management[M].1976.
[7]Fry James P,Sibley Edgor H. Evolution of Data Base Management Systems[M]. ACM Computing Surveys. 1986.
[8]Deen S M. Fundamentals of Data Base System [J].1977.
[9]Matin J. Computer Data Base Organization[M]. 1997.
[10]Cardenas A F. Data Base Architecture[M]. 1979.