999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ICE在分布式系統消息中間件中的應用*

2015-03-14 10:55:12李緒福雷明濤
艦船電子工程 2015年8期

李緒福 雷明濤

(中國電子科技集團公司第二十八研究所 南京 210007)

?

ICE在分布式系統消息中間件中的應用*

李緒福 雷明濤

(中國電子科技集團公司第二十八研究所 南京 210007)

消息中間件為分布式系統提供高效可靠的數據通信環境,能夠降低分布式應用開發和集成的難度。論文對ICE進行了深入研究,包括ICE的體系結構、系統組成和使用模式等。基于該研究,設計并實現了一種消息中間件系統,它為分布式系統中創建、發送和接收消息提供了一套可靠通用的方法。

網絡通信引擎; 消息中間件; 分布式系統

Class Number TN914

1 引言

在分布式應用系統中,中間件位于操作系統和應用軟件之間[1],屏蔽了硬件平臺的差異性、操作系統與網絡協議的異構性、以及編程語言的不同,減少程序設計的復雜性,為應用開發、部署和管理提供方便[2]。

中間件所包括的范圍比較廣泛,針對不同的應用需求涌現出多種各具特色的中間件產品。基于目的和實現機制的不同,大致分為以下幾類:遠程過程調用中間件(Remote Procedure Call)、對象請求代理中間件(Object Request Broker)、面向消息中間件(Message Oriented Middleware)、數據庫中間件(Database Middleware)以及事務處理監控中間件(Transaction Processing Monitor)[3]。當然,上述中間件的劃分并不是絕對的,各種中間件之間也并不是完全無關的。

本文所述是一個基于ICE的消息中間件[4]。因為ICE具有與硬件平臺、操作系統、網絡和開發語言無關的特點,而面向消息的中間件具有消息驅動、異步傳輸的特性,所以,本文綜合了ICE和面向消息中間件的優點,設計并實現了一種支持在異構平臺分布式對象間進行消息通信的消息中間件。

2 ICE概述

網絡通信引擎(Internet Communications Engine,ICE)是ZeroC公司提供的一款高性能、開放源碼、面向對象的中間件平臺,由一些對CORBA感到失望的“前CORBA專家”們開發,主要應用領域有電信、金融、國防、在線娛樂、制造和過程控制等。

從根本上說,ICE為面向對象的C/S應用程序提供工具、應用程序編程接口(Application Programming Interface,API)和庫支持[5~6]。ICE支持在異構環境中使用:客戶端和服務器的編程語言、操作系統、硬件平臺等都可以不同,甚至可以用多種網絡技術進行通信。

圖1 ICE體系結構圖

如圖1所示,是基于ICE的客戶端/服務端應用程序體系結構圖,它主要包括以下幾個主要部分:

1) 客戶端/服務器ICE核心

為客戶端與服務器遠程通信提供運行時支持。使網絡通訊、線程等細節對用戶應用程序完全透明。

2) 代理程序

代理程序是根據用戶定義的Slice對象文件,使用ICE提供的工具自動生成的框架代碼,與用戶定義的對象和數據類型相對應,為客戶端應用程序提供向下調用接口。例如,客戶端應用程序調用“代理程序”中的某個函數,ICE就向服務器發送一個RPC(遠程過程調用)消息,調用目標對象中的相應函數。

Slice是special language for ICE的簡稱,類似于CORBA中的IDL,是ICE自己定義的一種語言,用來定義應用中的接口、操作以及在客戶端和服務器端之間交互的數據類型。可以通過ICE提供的工具將應用程序定義的Slice文件翻譯成不同的語言實現,例如在C++中,通過slice2cpp.exe就可以將定義好的一個Slice文件編譯成一個頭文件和cpp文件。由于采用了這種通用的語言定義,使得ICE支持多種語言(包括C++、Java、C#、Python、Objective-C)。

3) ICE接口

ICE對應用程序提供的編程接口。

4) 骨架

與代理程序相同,骨架代碼也是通過Slice生成的,為服務器應用程序提供了一個向上調用的接口,允許ICE Run Time將控制線程轉交給服務器的應用代碼。

5) 對象適配器

服務器端使用對象適配器。對象適配器將客戶端的調用請求映射到服務器端對象上的某個特定方法,一個對象適配器與一個或多個傳輸端點關聯在一起,每個傳輸端點可使用不同的協議、地址和端口。

3 系統設計

基本設計目標如下:

1) 支持異構平臺分布式對象間的異步消息傳遞[7];

2) 支持基于內容的消息路由和轉發[8],即消息的發送者不需指定消息的接收者,由系統根據消息的內容查找路由并轉發給接收者;

3) 為應用程序提供簡單、易用的API接口,應用程序不必關心具體的消息轉發過程。

為滿足上述目標,基于ICE的消息中間件系統的體系結構如圖2所示。在整個系統環境中,設置一個中心服務器,在每個節點上,部署一個消息代理。其中,中心服務器為消息的發送端和接收端提供注冊、查詢、修改、刪除等服務,應用程序通過API與消息代理進行通信。消息代理在每個節點上以后臺服務的方式運行,接收應用程序的數據信息,通過注冊/查詢等操作與中心服務器進行交互,獲得消息轉發所需的接收端地址,在消息代理之間進行直接通信[9~10]。

圖2 系統體系結構

應用程序使用該系統的步驟為

1) 調用消息代理提供的API進行初始化操作,與消息代理建立連接,以便進行數據收發操作。

2) 調用消息代理提供的API通知消息代理所要發送或接收的數據類型,由消息代理調用中心服務器所提供的注冊方法進行消息注冊,在中心服務器上生成消息類型、發送者和接收者之間的對應關系,建立消息轉發關系表。

3) 調用消息代理提供的API進行數據收發操作。

如圖2所示,假定節點A上的應用程序A是消息發送端,節點B上的應用程序B是消息接收端,消息的收發過程如下:

1) 應用程序B調用消息代理API函數Init進行初始化操作,與節點A上的消息代理建立連接;然后,應用程序B調用消息代理API函數subscribe_message,訂閱需要的消息類型;消息代理調用中心服務器提供的注冊方法,向中心服務器進行消息注冊;

2) 應用程序B調用消息代理API函數Init進行初始化操作,與節點B上的消息代理建立連接;

3) 應用程序A調用消息代理API函數send_message發送消息,將消息類型和消息內容轉發給消息代理;

4) 應用程序A所在的消息代理收到應用程序A傳來的數據,向中心服務器查詢該消息類型對應的消息接收者信息;

5) 應用程序A所在的消息代理根據返回的接收者信息,將消息轉發給應用程序B所在的消息代理;

6) 應用程序B所在的消息代理收到消息之后,向應用程序B發送收到的消息。

至此,一個消息的發送和接收過程結束。

4 系統實現

系統中有兩類ICE對象,分別是中心服務器和消息代理,先用Slice定義接口,生成DirectoryService.ice和MessageAgent.ice兩個文件,然后用Slice編譯器進行編譯,在生成的源代碼文件中實現方法。由于篇幅所限,本文只列出了Slice接口,沒有寫出具體的實現代碼。

中心服務器的Slice接口如下:

module RegisterCenter {

interface DirectoryServer{

bool register( // 注冊操作

string name, // 對象名稱

sequence〈int〉 type_list); // 消息類型列表

sequence〈string〉 query( // 查詢操作

string agent_name, // 消息代理名稱

int msg_type); // 消息類型

bool modify( // 修改操作

string agent_name, // 消息代理名稱

int msg_type); // 消息類型

bool unregister(string agent_name); // 注銷操作

};

};

在上述DirectoryServer接口中,定義了注冊、查詢、修改和注銷四個操作。

1) 注冊操作:有兩個函數入參,分別表示調用注冊操作的對象的名稱(name)和其需要的消息類型列表(type_list)。處理過程是中心服務器根據參數中傳來的信息生成消息類型和接收者的映射表,該操作的返回值表示注冊操作是否成功。

2) 查詢操作:有兩個函數入參,分別表示消息代理的名稱(agent_name)和消息類型(msg_type)。處理過程是中心服務器查詢消息類型和接收者的映射表,并返回參數中的消息類型對應的接收者名稱列表。

3) 修改操作:有兩個函數入參,分別表示接收者所在節點機上的消息代理的名稱(agent_name)和消息類型(msg_type)。該方法對消息類型和接收者映射表中相應的表項進行修改,其返回值表示修改操作是否成功。

4) 注銷操作:有一個函數入參,表示要注銷的消息代理的名稱,該操作刪除消息類型和接收者映射表中的相應表項,其返回值表示注銷操作是否成功。

消息代理的Slice接口如下:

module RegisterAgent {

interface MessageAgent{

bool Init(string identifier); // 初始化操作

bool subscribe_message ( // 訂閱消息操作

int msg_type); // 訂閱的消息類型

bool send_message( // 發送消息操作

int msg_type, // 消息類型

string message); // 消息內容

bool recv_message( // 接收消息操作

int msg_type, // 消息類型

string message); // 消息內容

};

在上述接口中,有初始化(Init)、訂閱消息(subscribe_message)、發送消息(send_message)和接收消息(recv_message)四個操作,其返回值均表示操作是否成功。

1) 初始化操作:有一個函數入參,表示應用程序標識。處理過程是消息代理根據標識與應用程序建立連接。

2) 訂閱消息操作:有一個函數入參,表示應用程序訂閱的消息類型。處理過程是消息代理保存應用程序訂閱的消息類型,以便在接收到該類型的消息后發送給應用程序;另外,消息代理調用中心服務器的注冊操作,訂閱這種類型的消息。

3) 發送消息操作:有兩個函數入參,分別表示傳給發送端代理的消息類型和消息內容。處理過程是發送端代理暫時緩存消息,調用目錄服務器的查詢操作,得到這種消息類型所對應的接收端代理,調用接收端代理所提供的接收操作(recv_message),將消息轉發給接收端的代理。

4) 接收消息操作:有兩個函數入參,分別表示傳給接收端代理的消息類型和消息內容。處理過程是接收端代理緩存收到的消息,然后根據消息類型查找訂閱該消息的應用程序,并將消息傳給應用程序。

5 結語

本文設計和實現了一個基于ICE的消息中間件系統。其特點是: 1) 支持異構平臺下分布式對象間基于消息驅動的、透明的、異步的消息傳輸; 2) 基于消息內容的轉發機制,應用程序不需知道消息的接收者,消息接收者改變時不需要更改發送者應用程序,實現了消息發送者和接收者的解耦,從而具有更大的靈活性; 3) 為應用程序提供了簡單、易用的API接口,便于應用程序的開發。

[1] 蔣雄偉,馬范援.中間件與分布式計算[J].計算機應用,2002,22(4):6-8.

[2] 周元春,李淼.中間件技術[J].計算機工程與應用,2002,38(15):80-85.

[3] 劉裕,吳堅.中間件技術與ICE[J].微機發展,2004,14(10):37-39.

[4] 王晨,賈卓生.基于ICE中間件的分布式網管系統的研究與設計[J].中國科技信息,2007(8):110-112.

[5] 陳增孝,裘雪紅.面向對象的ICE中間件系統設計[J].電子元器件應用,2008,10(8):16-18.

[6] 湯曉燕,徐競.ICE中間件的研究與應用[J].常熟理工學院學報(自然科學),2009,23(10):114-118.

[7] 劉萬明,王麗華.基于CORBA的分布式管理系統的研究與實現[J].河北北方學院學報,2007,23(5):37-39.

[8] 陳小弟,李長河,張熙,等.基于LDAP的Internet分布式目錄服務的分析與實現[J].計算機工程,2002,28(8):271-273.

[9] 李衛國,王萍.目錄服務系統及其應用[J].計算機工程與應用,2001,26(5):57-59.

[10] 關勇,劉建國,陳葆玨.輕量級目錄訪問協議研究與系統實現[J].計算機研究與發展,1998,21(10):874-877.

Application of ICE to Message-oriented Middleware in Distributed System

LI Xufu LEI Mingtao

(The 28th Research Institute of China Electronics Technology Group Corporation, Nanjing 210007)

The message-oriented middleware(MOM) provides a suit of reliable and universal method for data communications in distributed system, helps to reduce complexity and difficulty of the application development. This thesis points out the ICE in detail, including the architecture and composition and usage pattern. A message-oriented middleware based on ICE is designed and implemented, which provides a suit of reliable and universal method for creating messages and sending messages and receiving messages in distributed system.

ICE, message-oriented middleware, distributed system

2015年2月3日,

2015年3月16日

李緒福,男,碩士,工程師,研究方向:網絡通信技術和分布式處理技術。雷明濤,男,碩士,工程師,研究方向:數據存取技術、分布式處理技術。

TN914

10.3969/j.issn1672-9730.2015.08.029

主站蜘蛛池模板: 国产成人AV综合久久| 亚洲一本大道在线| 亚洲av无码片一区二区三区| AV老司机AV天堂| 亚洲人精品亚洲人成在线| 日韩美一区二区| 最新国产成人剧情在线播放| 91久久精品日日躁夜夜躁欧美| 亚洲久悠悠色悠在线播放| 国产精品原创不卡在线| 久久香蕉国产线看观看精品蕉| 日本午夜精品一本在线观看| 成人无码区免费视频网站蜜臀| 婷婷亚洲天堂| 九九热这里只有国产精品| 亚洲精品成人片在线播放| 国产拍揄自揄精品视频网站| 亚洲黄色激情网站| 白浆免费视频国产精品视频 | 91口爆吞精国产对白第三集| 亚洲国产成熟视频在线多多| 91精品视频播放| 国产成人精品第一区二区| 久久精品亚洲中文字幕乱码| 99ri国产在线| 91成人在线观看| 欧美成人综合在线| 欧美激情首页| 国产一区二区三区精品欧美日韩| 国产视频自拍一区| 色哟哟色院91精品网站| 98超碰在线观看| 国产精品内射视频| 国产毛片片精品天天看视频| 欧美日本激情| 乱人伦99久久| 亚洲综合专区| 在线免费看片a| 国产成人免费观看在线视频| 青青草原偷拍视频| 日韩不卡免费视频| 91区国产福利在线观看午夜| 欧美三级视频网站| 永久在线播放| 亚洲色偷偷偷鲁综合| 91久久夜色精品国产网站| 国产91线观看| 亚洲成人黄色在线| 日本人又色又爽的视频| 精品乱码久久久久久久| 日韩人妻精品一区| 在线欧美一区| 国产成人精品亚洲77美色| 国产喷水视频| 国产成人91精品| 亚洲三级a| 欧美日韩一区二区三区在线视频| 国产人人射| 久久精品中文无码资源站| 亚洲欧美综合在线观看| 2048国产精品原创综合在线| 亚洲色婷婷一区二区| 四虎精品国产AV二区| 丰满少妇αⅴ无码区| 精品国产免费观看一区| 国产成人综合久久精品尤物| 久久这里只精品国产99热8| 丰满人妻中出白浆| 国产h视频免费观看| 毛片在线播放网址| 被公侵犯人妻少妇一区二区三区| 99久久精品国产自免费| 91啪在线| 亚洲三级成人| 人妖无码第一页| 精品一区二区三区自慰喷水| 尤物国产在线| 色综合久久综合网| 刘亦菲一区二区在线观看| 四虎免费视频网站| 亚洲精品国产综合99| 一级在线毛片|