- 相關推薦
XCOM
創(chuàng)建XCOM共享空間,眾人拾柴火焰高,讓我們在此空間種子、澆水、開花、結果
iXcom技術白皮書
1. 前言... 1
2. iXcom簡介... 2
3. iXcom的功能... 3
4. iXcom的特點... 4
5. 基本概念... 5
5.1. 應用... 5
5.2. 節(jié)點... 5
5.3. 電文... 6
5.4. 電文號... 7
5.4.1. 映射電文號... 7
5.5. 回線... 7
5.6. 主機名... 8
5.7. 主機代號... 8
5.8. 電文實時傳輸... 8
5.9. 電文可靠傳輸... 8
5.10. 靜態(tài)連接... 9
5.11. 動態(tài)連接... 9
5.12. 隊列... 10
5.12.1. 發(fā)送隊列... 10
5.12.2. 接收隊列... 11
5.13. 分組發(fā)送... 11
5.14. 分組接收... 11
6. 體系結構... 11
6.1. 系統(tǒng)核心... 12
6.1.1. 基礎平臺構件層... 12
6.1.2. 數據處理構件層... 13
6.2. 通信管理... 14
6.3. 應用適配器層... 15
1. 前言本文檔介紹寶信軟件的中間件產品iXcom。iXcom屬于消息通信中間件,它的主要功能是在應用程序間傳遞消息,這些消息可以在不同的通信協(xié)議(基于TCP/IP Socket)、不同的主機系統(tǒng)和不同的應系統(tǒng)。
iXcom提供簡單易用、高效可靠的分布式應用開發(fā)和通信平臺,利用它可以快速方便地開發(fā)可靠、高效的分布式應用。
iXcom提供遠程監(jiān)控和控制功能,可以方便的控制通信線路和得知通信運行狀況。
iXcom提供對多種主流數據庫的支持,支持Oracle,SQLServer等數據庫。
iXcom提供對多種開發(fā)語言的支持,支持C/C++ , Java, .NET, VB , Delphi等語言。
2. iXcom簡介iXcom 是面向分布式應用的消息中間件,它為網絡環(huán)境下客戶機/服務器(C/S)結構的應用系統(tǒng)的開發(fā)和運行,提供了靈活和易用的基礎平臺。
iXcom提供兩種通訊模式,實時傳輸模式和可靠傳輸模式。在實時傳輸模式上,iXcom提供快速地數據發(fā)送能力,但在通信出現異常時不能保證數據地可靠到達。在可靠傳輸模式下,iXcom提供可靠的數據發(fā)送能力,嚴格按照應用發(fā)送電文的先后順序進行電文發(fā)送,保證電文的可靠傳輸。
一個iXcom 的基本工作示意圖如圖1 所示。應用程序分布在網絡上的兩個結點上,當應用程序之間要傳送消息時,應用程序只需將消息電文號和消息的內容通過iXcom提供的接口傳給iXcom。iXcom 便會利用網絡結點上的各個iXcom運行系統(tǒng)組成的虛擬網,將消息輸送到消息接收者所在的結點上,然后提交給消息的接收者。
圖1
3. iXcom的功能iXcom的主要功能如下:
提供端到端的實時通信服務。應用不必關心網絡通信和其它的網絡細節(jié),應用只需關注應用業(yè)務層,減少學習和使用的難度。
提供端到端的可靠通信服務。適用于分布式環(huán)境下各種不同類型的應用開發(fā),特別是對通信的可靠性要求較高的應用,提供多層次的異步通信機制。通信的應用雙方在處理時間上可以互不相關,發(fā)送方在發(fā)送數據時接收方應用可以還未啟動。
提供對發(fā)送電文的并發(fā)傳輸(通信規(guī)約必須是動態(tài)連接的)和接收電文的并發(fā)處理,適用于對效率要求比較高的業(yè)務領域。
提供簡單易用、快速、高效可靠的分布式應用系統(tǒng)的開發(fā)平臺,應用編程接口(API)簡單且易學易用。網絡異構環(huán)境和細節(jié)對用戶完全透明并且支持多種網絡底層環(huán)境,并提供了跨操作系統(tǒng)的C/C++/Java接口;
iXcom可以和具有不同通信規(guī)約的節(jié)點進行通信。
提供WebService,XML-RPC接口,可以和J2EE和.NET進行集成。
支持工業(yè)通信協(xié)議Modbus、3964R等協(xié)議。
通過iXcom提供的協(xié)議框架,可以對通信協(xié)議進行擴展。
可靠傳輸方式下,支持電文的廣播和多播發(fā)送。
提供對多種消息格式(ASCII和二進制)傳輸的支持;提供快速可靠的面向事務處理的數據遞送功能,保證數據的完整性和可靠性;
提供分布式(C/S和B/S)的管理平臺,通過DNS服務和應用管理等方式,提供對iXcom的管理和監(jiān)控。
4. iXcom的特點iXcom有以下特點:
支持多種操作系統(tǒng),如IBMAIX、HP-UX 、Linux、Windows 2000/NT/XP/2003 等。
支持多種開發(fā)工具。iXcom在所有平臺上都支持C、C++、Fortran和JAVA;在Windows 系列平臺上,提供VB/Delphi/C# 等接口。
網絡節(jié)點數的支持量大:網絡節(jié)點數的支持可從數十個到上千個,具體上限的多少與主機的性能有關。
基于TCP/IP Socket 。
支持客戶/服務器(Client/Server)方式。
5. 基本概念5.1.應用
與具體業(yè)務有關的程序,包括客戶端處理輸入輸出的`客戶程序(Client)、服務端負責業(yè)務邏輯的服務程序(Server)。
5.2.節(jié)點
節(jié)點就是通信程序的宿主主機。一個iXcom可以和多個節(jié)點通信。一個節(jié)點主要有五個屬性:IP地址、Port號、通信規(guī)約、主機名稱和主機代號。
IP地址
節(jié)點的IP地址,可以有備用IP地。
Port號
節(jié)點通信程序的監(jiān)聽端口號
通信規(guī)約(Protocol)
iXcom和外部主機互相通信的規(guī)約
主機名稱(HostName)
標識節(jié)點名稱,不大于8個ascii字符
主機代號(HostDC)
標識節(jié)點代號,用做發(fā)送電文時的目的'地,用2個ascii字符表示。
注:在本文章,沒有特殊指名的話,節(jié)點和主機是同一概念。
5.3.電文
在通信中間件之間傳送的數據包,一般由電文頭、電文體(數據塊)和結束符組成。
其中電文頭長度an>1-2個字符,對于特定的通信規(guī)約而言,結束符是確定不變的'。
數據電文(Data Message)
用于傳送應用系統(tǒng)的數據塊,iXcom不對該類型電文進行拆分,但該電文有可能被底層的TCP協(xié)議進行拆分和重組。
應答電文(ACK Message)
由通信的接收方發(fā)送,用于告知發(fā)送方電文是否已被正確接收。
心跳電文(Heartbeat message)
用于監(jiān)視回線和對方通信程序的狀態(tài),用作狀態(tài)檢測,雙方可根據實際需要決定是否發(fā)送心跳電文。
注:
1. 應答電文是用于保證通信的可靠傳輸。
2. 控制電文、心跳電文是通信相關的電文,應用不用關心此類電文。
5.4.電文號
用于標識一條電文的類型和目的,一般在電文頭部中有電文號字
段。電文號是通信雙方按業(yè)務劃分共通制定的,它一般用長度不大于6位的ASCII字符表示。
5.4.1. 映射電文號
用于歷史問題等原因,可能在同一項目中出現電文號重復的現
象。為了便于應用方便處理電文,iXcom提供映射電文號的功能,應用可以根據需對每個電文號定義它的映射電文號,該映射電文號必須是全局唯一的`,也就是說在同一項目中雖然電文號可以重復,但映射電文號必須是唯一的。
注:若項目中有重復電文號,iXcom和應用之間的接口有如下約定:
1) 應用發(fā)送電文時,提供的電文號必須是映射電文號。當iXcom發(fā)送電文時,iXcom會把映射電文號轉化成實際的電文號進行發(fā)送。
2) iXcom收到電文后,將把收到電文的映射電文號發(fā)送給應用,而不是原有電文號。
5.5.回線
在通信程序雙方之間建立的一條TCP 連接,一條回線既可以接收也可以發(fā)送數據。一般來說,通信雙方通信程序之間需要建立兩條回線。
一般情況下,在iXcom中采用的回線模式如下:
5.6.通信模式
通常來說,XCOM間通信,雙方都有一個客戶端和服務端。甲方要發(fā)數據給乙方,甲方XCOM的客戶端把數據發(fā)給乙方的服務端。反之,乙方發(fā)數據給甲方,是乙方的客戶端把數據發(fā)給甲方的'服務端。
Socket類型
<></>對應值
<></>說明
<></>WRITE
<></>C
<></>客戶端session讀寫:本方作為客戶端,主動連接對方,連接建立后,該Socket連接可以發(fā)送電文。
<></>READ
<></>S
<></>服務器端session讀寫:本方作為服務器端,等待對方主動連接,連接建立后,該Socket連接上可以接收電文并且發(fā)送底層應答(按規(guī)約情況而定)。
<></>READ_WRITE
<></>CS
<></>客戶端和服務端兩個session都讀寫,融合以上兩個session的功能。
<></>5.7.主機名
用于在通信時標識通信節(jié)點的主機名字。
5.8.主機代號
用于在電文收發(fā)時標識發(fā)送方和接收方,一般在電文頭部中有主機代號的字段,用2個大寫ascii碼字母表示。
5.9.電文實時傳輸
電文實時傳輸指電文必須在規(guī)定的時間內必須傳遞到目標節(jié)點。iXcom在規(guī)定時間內提供快速可靠的傳輸機制,保證消息傳遞的實時性和可靠性,但在異常(網絡設備異;驅Φ葯C進程異常)時不保證消息的`可靠傳輸。在異常情況下,應用發(fā)送給iXcom的電文數據將被丟棄,iXcom將給應用誤返回值,應用必須考慮電文重發(fā)或其它處理機制。
5.10. 電文可靠傳輸
電文可靠傳輸指電文的傳遞在時間上無特殊的要求,在網絡連通的情況下必須保證消息可靠的`傳遞到目標節(jié)點。電文發(fā)送時,在遇到可恢復的故障(包括機器故障或網絡故障)情況下,通過后續(xù)重發(fā)電文能夠保證消息的可靠傳輸。
5.11. 靜態(tài)連接
指通信雙方建立的TCP/IP連接一直保持,直到停止通信程序或異常終止。當通信出現異常時,客戶端必須具備重新連接服務端功能,保證通信的可靠性。靜態(tài)連接示意圖如下:
注:若通信規(guī)約不存在應答電文,等待應答階段將不存在。
5.12. 動態(tài)連接
動態(tài)socket通信是指計算機之間的'TCP/IP連接方式是動態(tài)的,當一次通信結束后,計算機之間的連接隨之關閉,下一次傳送電文時,需要重新建立socket連接。如下圖所示:
(注:發(fā)送方在收到應答電文后必須關閉socket連接。)
5.13. 隊列
在可靠傳輸模式下,隊列是消息存儲的地方。消息在收發(fā)過程中將存儲于隊列中,可靠隊列中的消息存儲于數據庫中,不可靠隊列中的消息存儲于內存緩沖區(qū)中。隊列結構由消息索引和數據存儲區(qū)等部分組成。iXcom 系統(tǒng)提供的`隊列基本類型為發(fā)送隊列和接收隊列。
5.13.1. 發(fā)送隊列
發(fā)往目的地的電文存儲在發(fā)送隊列中,電文根據發(fā)送目的地(即主機代號)分別被放到不同的邏輯發(fā)送隊列中,iXcom核心從發(fā)送隊列中取出電文進行網絡發(fā)送。
5.13.2. 接收隊列
iXcom收到電文后,將根據發(fā)送方的設置(即主代號)將電文放到相應的邏輯接收隊列中。
5.14. 分組發(fā)送
應用可以根據業(yè)務的需求把發(fā)往某一主機的電文號按業(yè)務進行分組。每個組看作一個隊列,每一組電文有對應的'組號(整數)。對應于每一個隊列,iXcom有一個且同一時刻只有一個進程對該隊列進行操作發(fā)送,隊列與隊列之間的電文是互不影響的,一個隊列中的電文堵塞,不會影響其他隊列的電文。
注:分組發(fā)送僅限于動態(tài)連接方式,不能用于靜態(tài)連接方式。
5.15. 分組接收
應用可以根據業(yè)務的需要把來自同一主機的電文按業(yè)務進行分組。每個組看作一個隊列,每一組電文有對應的組號(整數)。對應于每一個隊列,iXcom有一個且同一時刻只有一個進程對該隊列進行操作發(fā)送(發(fā)送給應用,如Tuxedo),隊列與隊列之間的電文是互不影響的,一個隊列中的電文堵塞,不會影響其他隊列的電文。
6. 體系結構本節(jié)描述iXcom的.基本組成和運行方式。
在應用系統(tǒng)進行數據通訊時,應用進程通過iXcom接口函數,將電文放入隊列中。iXcom 核心進程從隊列中取出消息,根椐電文中的電文號,通過iXcom 之間(或與其它通信程序)建立的數據通道,將該電文傳送到接收者所在iXcom(或其它通信程序)。接收者所在的iXcom 核心收到電文后將電文寫入接收隊列中,接收應用進程通過調用iXcom的接口函數,從接收隊列中取出電文。至此,一個電文傳遞完畢。
6.1.系統(tǒng)核心
系統(tǒng)核心由兩大部分組成,即基礎平臺構件層和數據處理構件層。
6.1.1. 基礎平臺構件層
基礎平臺構件層由以下幾部分組成,包括事件分派、socket傳輸、進程管理、數據庫連接池和線程池。
事件分派
事件分派主要工作是建立socket連接、維護監(jiān)控通信鏈路;從通信鏈路中讀取數據并分派給協(xié)議插件。
Socket傳輸
應用電文發(fā)送和處理。
進程管理
進程管理主要工作是管理和維護iXcom的各進程。
數據庫連接池
數據庫連接池主要工作是在電文可靠傳輸模式下,提高數據庫訪問速度的.效率。
線程池
線程池主要工作在于提高在并發(fā)處理電文時的處理效率。
6.1.2. 數據處理構件層
數據處理構件層由以下幾部分組成,包括電文交換、
電文時序控制、數據轉換、協(xié)議插件和異常處理。
電文存儲
電文存儲包括電文的寫入和讀取。當收到一條電文時,iXcom要把它寫入數據庫,以便后續(xù)的應用處理;當有待發(fā)數據時,iXcom要從數據庫中讀取相應的數據,然后通過基礎平臺層發(fā)送給目的地。
電文時序控制
若應用電文存在業(yè)務關系,iXcom發(fā)送電文是嚴格按照應用寫入電文的先后順序進行電文發(fā)送。
數據轉換
當電文中存在二進制數據時,iXcom可以通過該電文號所對應的轉換格式把該電文內容全部轉換成ascii碼電文,方便應用的處理。
協(xié)議插件
異常處理
當iXcom收到異常數據時(如電文號不對等),會給對方發(fā)送底層負應答電文。
6.2.通信管理
通信管理主要由幾部分組成,包括運行管理、平臺監(jiān)控、配置管理和日志管理。
運行管理
通過運行管理功能,可以啟動和關閉回線,可以置回線開啟和關閉狀態(tài)。
平臺監(jiān)控
通過平臺監(jiān)控,可以實時獲取當前通信狀態(tài)(在線或離線)。
配置管理
通過配置管理:
可以查看當前主機配置信息,可以查看當前電文號配置信息。
可以修改原有主機信息(比如IP地址或port號),可以增加電文號,可以新增回線。
日志管理
通過日志管理,可以查看各條回線的通信狀態(tài)信息,從而進行通信跟蹤維護和排障。
6.3.應用適配器層
應用適配器是應用和iXcom進行溝通的橋梁,應用通過適配器
把待發(fā)數據發(fā)送給iXcom進行處理;iXcom通過適配器把待處理數據發(fā)送給應用進行處理。