武器裝備體系服務化功能集成_風聞
Science_北京-不惧过往,不畏将来!2019-07-12 11:08
**武器裝備體系功能集成的最主要目的是為了實現體系中各個平台、武器和系統的功能模塊靈活配置、動態調度的“即插即用”。****由於武器裝備體系中包含多領域多專業異構的功能模塊和實現方式,服務化的功能集成模式能夠有效地將異構的功能模塊進行“即插即用”的集成,使得武器裝備資源實現快速共享和調用,完成相應的作戰任務。****事實上,分佈在各個平台、武器和系統中的功能模塊調度,都是通過軟件接口或功能的形式實現。**面向服務體系結構(Service-Oriented-Architecture,SOA)是一種組織和利用分佈式軟件功能的範式,這些功能可能處於不同所有權、實現方式的領域中。
SOA架構中各個功能模塊以構件的方式存在,它要求提供統一方式來發布、發現和使用應用構件的功能,它將應用構件發佈的功能定義為“服務”,服務具有自描述性和可見性,更易於被發現、理解和使用。服務之間通過良好的接口和契約連接起來,接口採用中立的、通用的方式描述和實現,使得服務可以在不同硬件平台、操作系統以及實現方式下進行交互,實現應用功能互操作性,服務的松耦合也使得應用系統擁有更好的靈活性和擴展性。
目前在商業領域中,基於請求/應答方式的Web Services是最典型的SOA實現方案,它擁有相對完善的服務描述、服務註冊和服務訂閲發佈機制,能夠較好地實現外部服務對接、異構中間件通信等需求。然而對於武器裝備體系成員中的各個功能來説,首先需要滿足調用的實時性、可信性和可用性等作戰實施對體系集成的需求,其次要能夠與信息集成的DDS相融合,並且能夠為武器裝備體系的過程集成提供基礎支持。在此主要探討面向武器裝備體系分佈式實時的服務化功能集成框架和機制。
一、服務化功能集成框架
面向武器裝備體系的服務化功能集成要求在統一框架下實現。在服務化功能集成框架下,武器裝備體系集成過程中不僅需要確保各個成員的服務能夠被及時可信地調度,並保障服務之間的互操作,同時還要確保服務之間實時高效可信的信息通信。SOA服務框架通常包含註冊中心,並制定了註冊中心、服務提供者、服務消費者之間的交互規範,使得服務提供者能夠註冊和發佈服務,服務消費者能夠發現並綁定到服務端,通過請求/應答方式實現服務互操作。DDS信息集成規範屏蔽了操作系統和網絡的差異,提供了統一多對多、低時延、高吞吐量的信息通信機制。因此,為了實現武器裝備體系集成的要求,將DDS與SOA相結合,形成能夠融合信息集成、支持過程集成的服務化功能集成框架模型。
SOA架構下的服務特性總結歸納起來有以下幾點:
**1)軟件實體。**服務作為軟件實體,對特定的業務邏輯進行了封裝,提供有意義的功能。該軟件實體應該是長期穩定的,可以版本化的。
**2)具有合約。**合約規定了服務提供者和服務消費者的職責,其中含有接口描述、綁定信息(如所在節點等)、功能説明、服務策略以及相關的約束等等。合約通常是自包含的且抽象於對服務的實現。
**3)可互操作的。**服務可跨平台、跨系統調用,通常基於消息進行通信。
**4)可組裝的。**從已有的服務通過組裝可以構造成新的服務,組裝後的服務向用户隱藏內部細節,只向外提供封裝了一定業務邏輯的合約。
**5)可複用的。**服務可以在多個應用場景中使用,也可以用於組裝多個其他服務。
**6)可發佈與可發現的。**服務提供者可以通過服務註冊中心發佈服務合約,以供服務消費者動態地發現和使用,從而使得二者的關係是松耦合的。
綜上所述,服務是具有合約的、對外提供特定功能的軟件實體,是自包含的、可複用的、可互操作的、可發佈的和可發現的,通常基於消息與外部應用或其他服務進行交互。在設計武器裝備服務化功能集成框架時,需要遵循SOA參考模型中的服務特性。服務化功能集成框架的整體架構如圖1所示。
圖1 服務化功能集成框架整體架構
服務化功能集成框架整體架構主要包括註冊中心、監控中心、容器、應用服務接口等服務環境設施,同時也提供從應用業務功能服務描述、開發和管理服務的方法。服務化功能集成框架支持服務的訂閲/發佈機制,使得服務消費者能夠訂閲、發現和調用所需的服務。服務化功能集成框架提供服務倉庫存儲註冊的服務,同時支持服務的自動部署、激活和運行時監控,配合有效的服務管理機制以提升任務系統的運維水平。
服務化功能集成框架的關鍵部件是應用服務接口、服務註冊中心以及服務容器。
應用服務接口(Application Service Interface,ASI)提供應用功能服務化所需的各類接口,如服務發佈、服務訂閲、運行狀態管理等等,應用和服務通過ASI與註冊中心和監控中間進行服務信息的交互。
服務註冊中心(Service Registry Center,SRC)是服務化功能集成框架的核心,主要提供了服務註冊、服務查詢、服務監控等功能,並且作為服務提供者、服務消費者、服務容器三者信息交互的媒介,在服務發佈和使用過程中至關重要。
服務容器(Service Container,SC)作為服務化功能集成框架分散在各個平台、武器和系統節點的服務代理,承擔了各節點部署的服務信息、服務進程的管理任務。
面向武器裝備體系的服務化功能集成,需要將應用功能以服務的方式向服務註冊中心進行註冊,然後根據作戰任務要求,在進行服務集成過程中,將所需服務的名字發送給註冊中心,服務註冊中心的進行服務匹配後,回覆服務綁定信息(如IP+端口號),通過服務綁定信息來綁定服務端並實現服務的調用,完成作戰任務流程的構建。服務化功能集成框架下應用功能服務使用過程如圖2所示。
圖2 服務化功能使用流程
如圖2所示,服務化功能集成框架中服務發佈與使用的流程具體如下:
1)應用功能通過服務化集成框架發佈/訂閲方式對外提供信息發佈/訂閲接口,或者通過服務化集成框架請求/應答方式對外提供Interface接口;為應用功能編寫服務描述文件,並在服務註冊中心註冊服務。
2)服務註冊中心管理員審核新註冊的服務,包括服務接口、IDL定義是否規範等。
3)服務註冊中心將服務映射或部署到指定節點容器上。
4)在構建作戰流程過程中,在服務註冊中心查找所需的服務,下載服務描述文件,通過服務接口獲取服務綁定信息,編寫作戰流程邏輯。
5)服務客户端和服務端通過服務調用流程完成服務調用。
在武器裝備體系集成過程中,要求將完成各項作戰功能的服務組裝成能夠完成特定作戰任務的服務集合和作戰實施流程。在此過程中需要具備相應的服務引用機制的支持。服務引用機制過程如圖3所示。
圖3 服務引用機制工作流程
服務引用機制作流程詳細説明如下:
1)服務客户端(體系集成者)向服務註冊中心發送服務ID即{命名空間+服務名+版本號},訂閲自己所需的服務;
2)服務註冊中心收到服務客户端的服務訂閲信息,在註冊信息中查看是否存在該服務,若不存在則返回空的綁定信息,若存在繼續後續判斷;在監控信息裏面查詢該服務是否處於運行狀態,如果服務正常運行中則直接跳轉至第5步,否則服務註冊中心會發送通知給該服務所在的容器,令其激活服務;
3)服務容器收到服務註冊中心通知後,激活指定的服務,即啓動該服務的功能;
4)服務的相應功能開始運行,並向服務註冊中心發佈服務信息;
5)服務註冊中心在監控信息中查詢並選擇相應服務,將該服務的綁定信息返回給服務客户端;
6)服務客户端獲取到服務綁定信息,通過服務綁定信息完成服務綁定過程,獲取服務引用對象;
7)服務客户端通過服務引用對象開始訂閲服務數據或發送服務請求,完成服務調用。
服務化功能集成框架的服務引用機制統一了基於DDS和RPC over DDS通信的服務引用過程,實現了服務提供者和服務消費者之間的硬編碼地址解耦,提高了服務引用的可靠性。
二、服務管理模型
在武器裝備體系服務化功能集成框架中,服務註冊中心SRC是核心部分,它提供了服務註冊、服務查詢、服務監控等管理功能,是服務提供者、服務消費者、服務容器三者信息交互的中樞。它需求一套完整的服務管理模型來支撐,服務化功能集成框架的服務管理組成如圖4所示。
圖4 服務管理組成
服務註冊中心通過統一配置服務註冊信息,可以有效地優化應用服務發佈和使用的流程,通過服務運行監控提高系統運行的可靠性。服務化功能集成框架的服務管理由服務靜態管理、服務動態管理兩部分組成,服務靜態管理包括服務註冊、服務查找、服務更新、服務映射部署等四方面,服務動態管理包括服務激活、服務監控等兩方面。
1)服務靜態管理
服務化功能集成框架的服務靜態管理包括服務註冊、服務查找、服務更新、服務映射部署四個部分,通過服務靜態信息的合理配置和管理,有利於服務的註冊、查找和更新,並且可以優化服務引用的流程,從而提升服務集成的效率,為構建面向特定任務的作戰流程提供支持。
a)服務註冊
平台、武器和系統的功能可以作為用户向服務註冊中心完成服務註冊、查詢等功能。在服務註冊過程中首先提交服務信息,服務信息是指服務全名(名字空間、服務名、服務版本)和服務相關路徑(服務部署位置或服務地址映射等)。服務註冊中心解析並校驗服務信息,服務信息校驗通過之後,服務註冊中心將存儲所提交的相關服務信息。服務信息存儲成功後,服務註冊中心將服務描述信息存儲到數據庫中,並在其註冊目錄中增加一條服務註冊記錄,該記錄包含該服務的名稱、命名空間、版本號、部署映射地址等屬性信息,以提高服務查詢的速度。接着,註冊中心返回服務註冊結果給用户,提示註冊成功,或者註冊失敗並附原因。
b)服務查找
服務註冊中心提供服務查找功能,提供在集成過程中查找所需的服務信息。在服務查找過程中,服務註冊中心返回服務查找界面,可以瀏覽服務目錄,也可以通過輸入服務名或者輸入命名空間來查找所需要的服務信息。如果找到所需的服務,可以從服務註冊中心獲取到全部的服務信息,然後通過SIF pub/sub通信、SIF req/rep通信調用相關服務。
c) 服務更新
在武器裝備體系中,一些平台、武器和系統的功能需要進行更新迭代。在功能服務更新過程中,不僅使註冊中心能夠方便更新服務信息,同時需要一種服務更新推送機制,以便向服務使用者(集成和使用人員)能夠及時瞭解和使用更新的服務。在功能集成和使用過程中,註冊中心會記錄不同用户正在使用的服務,當正在使用的服務被更新或者有該服務的新版本註冊,服務註冊中心會在該用户推送更新的服務標記,使得用户能夠看到當前所使用服務的更新情況,從而能夠及時地更新自己的服務客户端。
d) 服務映射部署
武器裝備體系中,有些功能是固定在特定的平台、武器和系統上,而有些服務可以靈活動態部署在不同平台、武器和系統上。服務註冊之後,對於固定的服務,需要建立服務地址的映射信息;對於能夠靈活部署的服務,需要將服務部署到服務綁定節點的服務容器上。服務部署過程為:
(1)服務註冊中心對新註冊的服務進行審核,審核通過後再進行服務部署。在服務部署之前需要確保服務部署節點的服務容器已啓動,服務容器提供傳輸端口,運行過程中應持續監聽此端口;
(2)服務註冊中心進行服務部署,先與服務容器的傳輸端口建立連接,然後開始向服務容器傳輸服務的相關文件和信息;
(3)服務容器收到服務文件後進行校驗,並給服務註冊中心回覆服務部署結果。
(4)服務註冊中心綜合端口連接情況和服務容器部署結果,返回部署結果。
服務註冊中心允許將同一服務部署到多個節點之上,並實現多副本服務同時運行,在提高服務容錯性的同時,還能有效降低服務的請求壓力和響應時間。
2)服務動態管理
武器裝備體系集成過程中的任務實施中心需要實時監控服務動態管理的相關信息,以便確保作戰任務的順利實施。服務動態信息是指服務運行過程中發佈的狀態信息和以及實體(服務註冊中心、服務容器、服務等)之間的指令交互信息,動態管理包括服務的激活、掛起、恢復、撤銷以及服務生命週期內的監控。在武器裝備體系中,服務運行的可靠性和實時性十分重要,服務化功能集成框架提供了服務動態管理實現服務激活和服務監控。
a)服務激活
服務激活是指服務在作戰流程的調度下完成啓動,進入運行狀態。在採用Web Services或者REST實現的服務框架中,通常服務部署在Web應用容器中,服務包含在服務容器的進程中,服務對象由Spring管理,因此只要服務容器啓動運行就能開始提供服務。在服務化功能集成框架中,服務作為獨立功能實體運行,容器作為代理運行在各個節點上,通過容器可以實現服務實體的激活和去活。為了更好地提升服務的可用性,同時也減少不必要的性能負載,服務化功能集成框架提供管理員激活和服務消費激活兩種機制,如圖5所示。
圖5 服務激活機制示意
(1)管理員激活
註冊中心管理員可以在服務註冊中心遠程激活/關閉服務程序,服務註冊中心提供單服務激活和任務模式激活兩種人工激活方式。
單服務激活:管理員可以激活/關閉某個服務程序,如果服務是基礎或原子服務如時間同步服務等,可以選擇這種方式直接激活該服務並設置為常運行。
任務模式激活:藉助服務所具有的任務模式屬性,管理員可以批量激活/關閉某個任務模式下的服務,從而快速切換系統的任務模式。
(2)服務消費激活
武器裝備體系不同平台、武器和系統之間需要協同,才能完成相應的作戰任務。因此從功能服務的角度上看,不同的服務之間會產生依賴關係。依賴條件是指服務可能依賴其他的服務,即一個服務的正確運行需要其他服務的正確運行,如圖6(a)和6(b)所示如果服務A直接服務B和服務C,或者服務A直接依賴服務B並且間接依賴服務C,則當服務B或者服務C未能正確運行時,服務A可能會失效或出現異常。通過配置服務的依賴條件,方便激活服務A時激活其依賴的服務,有利於提升服務的可用性。
圖6 服務依賴
在服務註冊中心中,當有服務被調用時,如果該服務處於未激活狀態,則由服務註冊中心通知該服務所在的容器激活該服務;同時,為提高服務可用性,服務註冊中心檢查該服務的服務依賴信息,如果該服務依賴其他服務,註冊中心會一併激活這些服務。
b) 服務監控
服務在被服務容器激活後進入運行狀態,並開始不斷對外發布服務運行狀態,服務化功能集成框架制定了服務監控機制,規定了服務運行狀態和服務運行控制指令。服務運行過程中具有正常運行中(NormalRunning)、警告(Warning)、暫停(Paused)、終止中(ShuttingDown)四種運行狀態信息。服務運行控制指令有啓動服務(StartProcessing)、暫停服務(PauseProcessing)、恢復服務(ResumeProcessing)、停止服務(StopProcessing),以及激活服務指令(ActivateService)。服務運行狀態和服務運行控制指令的變遷如圖7所示。
圖7 服務狀態變遷
服務運行狀態和服務運行控制指令的變遷過程為:
(1)服務註冊中心通過服務激活指令通知服務容器激活服務,服務啓動並完成準備工作後,接收服務啓動指令進入正常運行狀態,開始對外發布狀態信息(服務標識、IP地址、運行狀態、負載信息、QPS等);
(2)通過暫停指令可以使得服務進入暫停狀態,從而暫停對外發布數據或者暫停請求應答服務,直到收到恢復指令回到正常運行狀態;
(3)當服務收到停止服務的指令後,不再對外接收服務請求,並將未處理的請求處理完,此時處於終止中狀態,直至服務關閉。正常情況下,服務註冊中心通過發送停止服務指令來關閉服務,在服務未能正常響應指令時才通知服務容器來關閉服務。
(4)在服務運行過程中,服務可以通過發佈警告狀態並附上原因,告知服務監控中心服務出現異常狀況,然後自行恢復到正常運行狀態中。如果出現嚴重錯誤服務將直接進入終止過程。
服務化功能集成框架的監控中心負責監聽各個服務狀態信息,通過服務發佈的運行狀態、負載情況、QPS等信息,監控中心能夠了解到服務所處的狀況,從而做出正確的調整決策,如服務註冊中心結合服務監控的QPS信息來實現多副本服務的負載均衡。同時,監控中心提供服務監控的信息,使得使用人員能夠更好地檢查任務執行狀態、錯誤發生原因等。
三、服務化功能集成的應用接口
服務化功能集成框架的一個重要部分是服務應用接口描述,這是功能作為服務的對外窗口,而服務接口與通信協議息息相關,服務化功能集成框架通常要先確定服務所採用的通信協議。服務化功能集成框架的服務基於Web Services或者自建的RPC協議實現服務交互接口,採用定製的服務描述方法來描述服務信息。服務是可發佈和可發現的,服務提供者(即服務端)發佈服務信息,服務消費者(即服務客户端)通過向服務註冊中心發送服務接口全名來匹配服務,獲取服務提供者的綁定信息,通過“IP地址+端口號+服務名”來綁定服務,最後以請求/應答的方式完成服務調用。
在武器裝備體系中,應用通常需要實現一對多的實時高效可靠信息交互,同時需要支持RPC通信來擴展應用功能的使用場景。為滿足武器裝備體系實時高效可靠信息通信需求,融合DDS的服務化功能集成模型如圖8所示。服務可基於DDS進行實時發佈/訂閲通信,也可基於RPC over DDS完成請求/應答通信。DDS提供了跨平台、跨語言的開發接口,擁有一套完整的接口定義語言(IDL)來定義接口,使得服務具備良好的互操作性。在服務化功能集成框架中,服務是一個對外提供一組信息發佈/訂閲接口或者暴露某個請求/應答接口的應用功能。當服務對外提供發佈/訂閲接口時,服務與一個或多個主題的發佈者/訂閲者綁定,服務之間通過信息域和主題名來進行區分(規定不同的服務不可以提供相同的發佈/訂閲主題);當服務對外提供請求/應答接口時,服務與一個 Interface綁定(規定Interface中可以定義多個功能接口),服務之間通過IP地址和服務名來進行區分。
圖8 服務化功能集成應用接口定義
服務消費者與服務通信前,首先需要完成服務綁定過程,獲取服務引用對象(Service Reference Object),服務引用對象包含了與服務Interface和發佈/訂閲Topic相對應的客户端通信實例,通信實例向服務消費者提供了調用具體服務接口的方法。
服務註冊中心存在各服務的註冊信息,能夠分辨服務的通信方式,不同方式的服務綁定信息是不一樣的。在服務化功能集成框架的服務引用機制中,規定了採用pub/sub和req/rep通信的服務綁定信息:對於pub/sub的服務,註冊中心返回的是服務的數據域ID,對於req/rep通信的服務,註冊中心返回的是IP地址。通過服務綁定信息,服務客户端能夠綁定到對應的服務端,獲取服務引用,完成服務調用過程。服務構建在DDS中間件之上,服務化功能集成框架的服務接口需要兼顧發佈/訂閲和請求/應答這兩種不同的交互接口。
作者:張宏軍 韋正現 黃百喬
※ ※ ※
創新體系工程基礎理論和方法
推動系統工程理論再發展