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