摘 要:為了使企業中構建在不同平臺上的眾多應用系統能夠進行安全、可靠的信息交換,基于企業應用集成(EAI)的理念,提出了一種獨立于原有系統、具有星型拓撲結構的高可用性企業數據交換平臺解決方案。該平臺采用通信層、服務層及適配層三層架構應用模型。對構成平臺的這三個層次進行深入研究,說明設計實現的方法。此外,為保證平臺的高可用性提出了以內存鏡像為基礎的雙機熱備算法。該平臺的實現不僅能為企業中各應用系統提供高可用的數據交換,而且還可對數據交換的過程進行集中監控和管理,大大提高了數據交換的可管理性與可擴展性。關鍵詞:企業應用集成; 數據交換;雙機熱備; 星型拓撲結構
中圖分類號:TN911-34; TP311 文獻標識碼:A
文章編號:1004-373X(2010)16-0032-05
Design and Implementation of Enterprise Data Exchange Platform with High Availability
WANG Zheng-jun
(School of Electronics Information Engineering, Shenzhen Polytechnic, Shenzhen 518055, China)
Abstract: In order to make safe and reliable information exchange among large amount of applications constructed on various platforms in the enterprise, a solution of enterprise data exchange platform with high availability is introduced which is of star topology and independent of the existing applications based on concepts of Enterprise Application Integration (EAI). The platform adopts an application model with 3-layers architecture (communication, agent and adaptor). The design and realization methods for the 3-layers architecture are elaborated, and an algorithm of dual-computer hot-standby based on memory mirroring is proposed to guarantee the whole platform's high availability. The implementation of the platform not only can provide highly available data exchange for various applications of enterprises, but also accomplish centralized monitoring and management during the data exchange procedure, so as to greatly increase the manageability and expandability of data exchange. Keywords:enterprise application integration; data exchange;dual-computer hot-standby; star topology
0 引 言
隨著IT技術以及企業應用的不斷發展,企業中運行的應用系統也越來越多,這些系統按功能可分為基礎支撐平臺和應用平臺兩大類。其中,基礎支撐平臺包括網絡設備、防火墻、AD、郵件系統、防病毒系統等;應用平臺包括企業網站、業務系統、ERP系統、辦公系統、數據倉庫以及商業智能BI系統等。由于各個應用系統規劃建設的時間和技術背景不同,系統采用的技術和平臺也不盡相同,因此,各系統之間的數據交換成為一個急需解決的問題。
為了解決傳統數據交換模式帶來的問題,企業應用集成(EAI)應運而生。EAI 是通過相應的軟件技術將企業已有的和新建的各種業務系統集成起來,共同完成企業的各種商務活動,并能靈活快速地適應企業的發展和市場的變化[1]。一般意義上的EAI 通過建立底層應用結構,并以此為中心來聯系橫貫整個企業的異構系統,它滿足在企業內部的業務系統、ERP、辦公系統、數據倉庫及其他重要的內部系統之間無縫共享和交換數據的需要[2]。
根據EAI 理念,本文提出建立統一的數據交換平臺來解決企業內系統互聯的問題。這種數據交換平臺獨立于現有系統,并根據現有系統提供的對外接口進行開發,實現與各系統的對接[3]。它采用星型拓撲架構,并可根據需求,提供集成協議轉換、加密、壓縮、交換過程監控等多種功能,保證各系統之間數據的有效交換。數據交換過程中所涉及的功能調整均可通過調整統一數據交換平臺應用加以實現。依托統一的交換平臺,可對數據中心數據交換過程進行集中管理,大大提高了數據交換過程的可管理性與可擴展性[4]。
1 系統結構設計
企業數據交換平臺應該具備如下功能:
(1)數據可靠傳輸包括以下兩個方面:
消息傳送 提供端到端的同步消息傳送機制,支持準實時的應用程序;提供端到端的異步消息傳送機制,消息可由數據交換中心進行緩存。
文件傳送 提供端到端的文件傳送服務,提供身份認證、權限管理、目錄管理、上傳文件、下傳文件、斷點續傳等功能;支持大文件傳送,以及壓縮或動態文件拆分組合。
(2) 數據存儲。提供數據存儲功能,主要用于數據交換和信息發布,所存儲數據按一定規則進行備份、刪除,此外,還進行存儲數據的加密、壓縮處理等。
(3) 信息發布。將文件或消息按約定時間通過郵件、File COPY或FTP等渠道傳給特定服務對象,實現發布與訂閱功能。
(4) 安全性。提供接入帳戶管理與帳戶權限管理功能;接入企業數據交換平臺需使用數字證書或密碼,該數字證書或密碼需在接入點的電腦上授權訪問;提供數字簽名和加密,保證數據傳輸的安全性。
(5) 監控與管理。支持集中日志留痕,對目標系統不能在預定時間內做出反應,提出警示。
(6) 可靠性。具備出錯重發機制,確保信息送達;提供校驗碼,確保數據完整。
因此,提出高可用性企業數據交換平臺,總體架構如圖1所示。
圖1 數據交換平臺總體架構
該平臺采用星型架構[5],為各應用提供系統間同步、異步消息交換和文件交換;采用端到端方式,保障傳輸可靠性并提供出錯重試機制;采用SSL、網關隔離等機制,保障跨安全域的傳輸安全;采用訪問控制等技術,保障同一安全域的傳輸安全;為各應用的接入提供簡單、安全、標準化的接口,方便系統接入;同時,采用雙機熱備技術,保證平臺的高可用性[6]。
該平臺共分為傳輸層、服務層、適配層、監控管理模塊4個部分,其中:
傳輸層 平臺的核心部分,數據以同步或異步的方式通過直接消息傳送或消息隊列在分布式環境中交換,平臺提供了可靠傳輸、安全、可管理性等特性,采用星型傳輸架構,支持同步、異步等多種通信方式,提供異步消息及文件傳輸功能;
服務層
在傳輸層基礎上提供的服務,提供消息的訪問、過濾、發送、接收,以及對目錄和文件系統的訪問、查詢、上傳、下載等功能,定義消息和文件格式,提供同步、異步消息及文件傳輸服務機制;
適配層 提供數據交換平臺和應用系統的連接功能,規范各應用與交換平臺的通信接口,提供交換平臺與異構平臺進行通信的能力,在應用系統與交換平臺內部之間起到連接溝通的作用,主要有兩種連接方式即直接調用外部系統的Web Services和采用適配器提供交換平臺和外部系統的邏輯協調管理功能。
監控管理模塊 提供對整個數據交換平臺進行監控管理的Web平臺,包含監控告警、用戶及權限管理、配置管理、備份管理、日志管理、傳輸狀態管理等功能。
根據企業數據交換平臺的層次結構,設計了實現該平臺的模塊化結構,如圖2所示。平臺分為通信子系統DXPComm、通信代理子系統DXPAGT、管理子系統DXPAdmin三大模塊。
圖2 數據交換平臺模塊分布
2 系統關鍵技術及實現
企業數據交換平臺采用SQL Server 2005數據庫,主要由通信子系統、通信代理子系統、管理子系統3個部分組成,具體的模塊部署如圖3所示。平臺的硬件角色分為中樞服務器、網關服務器,以星型結構連接各個應用系統[7],圖中虛線代表管理消息數據流,實線代表通信消息數據流,服務器均支持雙機熱備。
通信子系統(DXPComm) 位于通信層,部署在網關服務器和中樞服務器上,實現安全的消息及文件傳輸以及路由。
通信代理子系統(DXPAGT)
位于服務層及適配層,部署在網關服務器,作為一個Windows服務程序,主要負責與應用系統進行通信,同時調用DXPComm進行數據交換;它還提供同步傳輸、消息反饋、錯誤重試、失敗告警等一系列功能并支持雙機熱備。通信代理子系統與應用的接口包括:Socket,WebService,Remoting,CIFS,FTP等。
管理子系統(DXPAdmin)
主要提供對數據交換平臺進行監控管理的功能,包含以下3個模塊:
管理Portal(DXPAdminWeb):它是一個Web應用程序,部署在中樞服務器上,提供對整個交換平臺的配置、授權、管理和監控功能。
網關管理服務(DXPGWAdmin):它是一個Windows服務程序,部署在網關服務器上,負責接收中樞發出的管理指令,對網關進行管理;管理內容包括創建本地用戶、創建共享目錄、設置共享權限以及日志查詢、上傳日志等。
中樞管理服務(DXPSUAdmin):它是一個Windows服務程序,部署在中樞服務器上,負責與網關管理服務通信,執行一些管理任務,例如接收網關發來通信日志等系統消息,統一寫入數據庫供查詢。
圖3 數據交換平臺模塊部署
2.1 通信子系統
通信子系統主要實現消息和文件傳輸以及路由(結構圖見圖4),包括信道(出站、入站)、隊列(出站、入站、持久出站、異常)、路由管理、消息收發器、安全控制模塊和可靠性模塊等。
圖4 通信子系統結構
(1) 信道負責具體消息在網絡中傳輸的任務,包括出站、入站信道。
出站信道從出站隊列或持久出站隊列中讀取消息,并將消息發送給目的應用;入站信道在沒有消息到達時一直處于監聽狀態,消息到達后將其發送到入站隊列中。
(2) 隊列包括出站、入站、持久出站和異常隊列。
入站隊列接收入站信道接收到的消息,并等待消息收發器讀取;出站隊列從消息收發器接收消息,并等待出站信道讀取;持久出站隊列用于存放在數據交換平臺抽取時過程復雜、耗時或接收方不穩定(或不在線)的消息;異常隊列接收路由失敗、出站信道發送失敗的消息,等待消息收發器讀取并返回給數據交換平臺/應用系統。除了持久出站隊列的消息是保存在硬盤外,其他隊列的消息都是存放在內存中。隊列都采用先入先出的管理模式,隊列中的消息只能被讀取1次,讀取后會被系統刪除,即消息只能被“消費”1次。
(3) 路由管理主要負責維護路由表,為消息的出站提供服務。
路由表包含節點路由信息,包括節點代碼、節點地址、節點出站/入站信道種類及相應的端口、節點的上下級、節點是否在線、訪問節點的授權、是否需要經過其他節點轉發、消息轉發路徑、傳輸數據時需要滿足的前提條件、路由時間延遲要求、可允許的失敗連接次數等。
(4) 消息收發器。
消息入站時,消息收發器從入站隊列和異常隊列讀取消息;消息出站時,應用系統通過ESB代理將消息發送給消息收發器,由收發器將消息發送到出站隊列或持久出站隊列中,進而將消息通過出站信道發送出去;消息發送失敗時,消息收發器從異常隊列中讀取消息,并將其反饋給消息的發送端。
(5) 安全控制模塊。
保證消息在節點之間傳輸時的安全,通過消息數據編碼及加密來保證消息在網絡傳輸中的安全和完整性。
(6) 可靠性模塊。
保證消息在網絡中傳輸的完整性和準確性,出站信道根據路由表中的節點地址、路由時間延遲要求、可允許的失敗連接次數等原則發送消息;路由失敗或者發送失敗時,該消息會被發送到異常隊列中,最終通過消息收發器通知數據交換平臺/應用系統該消息發送失敗。
2.2 通信代理子系統
(1) 系統構成
通信代理子系統負責與應用系統進行通信,調用DXPComm進行數據交換,同時還提供同步傳輸、消息反饋、錯誤重試、失敗告警等功能并支持雙機熱備,結構圖見圖5。
該系統由3個接口及11個主要功能模塊組成,其中3個接口模塊分別為Remoting,Socket,WebService 接口,主要實現與應用系統的通信。11個主要功能模塊包括:DXPComm接口模塊,用于與通信子系統進行通信;優先級處理、消息群發、同步消息發送、異步消息發送、接收消息處理等5個模塊,用于消息通信的處理;服務狀態監控、管理消息處理、日志管理、配置管理等4個模塊,用于狀態監控及管理;雙機熱備模塊,主要用于雙機熱備。雙機熱備模塊是保證平臺高可用性的關鍵模塊,也是實現較為復雜的模塊,下面具體描述其實現方式。
(2) 雙機熱備技術
雙機熱備模塊是以內存鏡像方式來實現的,既保證了通信效率也實現了高可用性,其結構圖參見圖6。
圖5 通信代理子系統結構
圖6 雙機熱備結構圖
圖6為2臺主機對APP1接入的熱備示意圖。其中:APP1為應用系統;服務器S1、服務器S2 分別為網絡負載平衡中的兩臺主機;在S1上部署DXPAGT(A1),下面簡稱“A1”,在S2上部署DXPAGT(A2),下面簡稱 “A2”;發送成功庫、發送失敗庫是指消息發送成功或者失敗后保存消息的文件;發送隊列A1、發送隊列A2、接收列表A1、接收列表A2、待發列表A1、待發列表A2都為緩存在內存中的數據。
為實現雙機熱備功能采用了兩種算法:
(1) 雙機互檢算法
① 互檢:通過心跳線IP建立長連接(Socket 通信),定時(可配置)向對方發送請求;
② 檢測結果判斷:發送請求后,對方應答則認為對方運行正常;如無應答或連接中斷,并且在設定次數(可配置)內都無法連接或無應答,DXPAGT就通過所在網關的網關管理服務向對方網關管理服務發送檢測消息,由對方網關管理服務檢查對方運行狀態,如返回結果為正常,則告警,如返回結果為異常,則切換服務,并同時告警。
(2) 雙機熱備算法
① A1,A2默認都與DXPComm斷開;
② 當A1收到消息時,A1設為主機,通知A2斷開與DXPComm的連接,A1與DXPComm建立連接;當A2收到消息時,執行同樣操作;
③ 當A1停止服務時,由A2與DXPComm連接,同時接管A1;當A2停止服務時,執行同樣操作;
④ A1在內存中維護發送隊列、待發列表及接收列表3個表;接收列表用于判重(接收消息ID已存在接收列表中,則認為收到重復消息,告警);
⑤ A1收到通信請求時,將請求復制到A2的內存中;當第一次發送不成功時將請求移動到待發列表,此時不與A2同步;
⑥ A1發送成功或失敗后,將請求從待發列表中刪除,并寫入相應的本地數據庫/文件中,此時要與A2同步;
⑦ A1接收到消息時,存入接收列表中,同時進行判重,若插入成功則通知A2,否則,告警;
⑧ A1與A2進程通過心跳線通信,同時在共享存儲中定時更新各自的標志文件;只有在心跳線中斷并且共享中的標志文件停止更新時才認為該進程中斷,進行接管;
⑨ A2接管A1的工作時,將發送隊列A1合并到發送隊列A2中,將接收列表A1合并到接收列表A2中,同時置A1狀態為故障;接收列表主要用來判斷接收記錄是否重復,當前列表中只保留最近三天(可配置)的數據,每晚會有定時任務清除冗余數據。
2.3 管理子系統
管理子系統主要提供對數據交換平臺進行監控管理的功能,結構圖見圖7。其中,實線為通信消息數據流,虛線為管理消息數據流。
管理子系統由以下6個部分構成:
(1) 中樞管理服務(DXPSUAdmin):Windows服務程序。
負責將管理信息下發到網關管理服務并接收網關管理服務發來的通信日志系統消息,統一寫入數據庫供查詢,并完成數據定時備份以及狀態監控。
(2) 網關管理服務(DXPGWAdmin):Windows服務程序。
接收管理指令,創建本地用戶、共享目錄、設置共享權限、以及進行日志查詢、上傳日志等。
(3) 中樞管理Portal(DXPAdminWeb):基于Web的管理程序。
由管理員進行操作,負責日志管理、配置管理、權限管理、監控告警管理。
(4) 中樞管理WebService(DXPAdminWebService)。
Web服務程序,提供對數據庫的訪問,屏蔽各應用程序對數據庫的訪問。
(5) 服務狀態監控(DXPServiceMonitor)。
對各個服務器中部署的數據交換平臺所有Windows服務進行監控,一旦服務失敗立刻告警。
(6) Ping服務(DXPPing)。
以心跳方式對接入數據交換平臺的各應用系統進行通信,一旦通信失敗立刻告警。
圖7 管理子系統結構
2.4 應用效果
高可用性企業數據交換平臺的應用,在企業各部門及應用系統之間實現了消息及文件的雙向數據傳輸和共享,為跨部門、跨系統的業務流程集成和實現打下了可靠的基礎,同時,避免了數據重復采集,從而可以保持各部門基礎數據的一致,加強了企業數據的實時性、一致性和正確性。
該平臺已在企業部署實施,在具體的實踐應用中得到了很好的效果,具體如下:
高可用性:通過采用雙機熱備技術以及端到端的應用傳輸協議以及出錯重傳等機制,提供非常高的可用性,保證了傳輸的可靠性。
安全傳輸:通信鏈路支持SSL加密、壓縮、校驗等功能,確保傳輸的安全性。
可維護性:實現了集中管理、報警、留痕及異常處理,維護能力等方面達到較高的水平。
標準化:數據交換平臺定義標準化的接口、消息格式、通信方式,提高系統集成效率。
跨平臺集成:數據交換平臺提供了Remoting,WebService,Socket等標準化的接口,便于Unix,Linux等異構系統的接入。
可擴展性:數據交換平臺采用模塊化及標準接口模式設計整個系統,不管系統如何變化,只要接口維持不變就可以無縫地與其他部分集成到一起,具有很好的適應性和可擴展性。
當然,該平臺也存在著不足,主要是在業務數據的定義方面,目前,平臺只定義了通信接口,對于傳輸的業務數據本身并未作詳細定義,好處是系統比較單純,只管通信,缺點是涉及業務數據的定義、映射、轉換等需求只能由應用系統來單獨實現,無法通過數據交換平臺進行統一的定義,這是有待改進的地方,下一步需要繼續進行研究,將平臺功能進一步提升。
3 結 語
隨著當今信息化社會的不斷發展,企業對其內部信息化的要求會越來越高,這導致企業內部應用系統的數量和規模逐漸增加,如何解決企業“信息孤島”問題成為企業信息化不可避免的問題。本文提出了采用高可用性企業數據交換平臺來解決不同系統間數據交換的問題,闡述了數據交換平臺的架構、功能和實現思路。該平臺采用基于內存鏡像的雙機熱備技術來提升可用性,通過這種方案構建的體系結構,無論是新建的系統,還是舊的業務系統都有其相對獨立性、靈活性,為系統進一步擴展及互聯提供良好的基礎。
參考文獻
[1]謝小軒,張浩,夏敬華,等.企業應用集成綜述[J].計算機工程與應用,2002,38(22):1-5.
[2]LEE J, SIAU K,HONG S.Enterprise integration with ERP and EAI [J].Communications of the ACM,2003,46(2):54-60.
[3]唐九陽,張維明,肖衛東,等.一個基于對等網的數據集成系統[J].計算機科學,2006,33(2):127-129.
[4]顧翊,張申生,朱祥飛.一種企業應用集成(EAI)方案的研究[J].計算機工程與應用,2003,39(11):937-943.
[5]徐曉飛,林海,潘金貴.EAI中基于工作流的業務過程定義[J].計算機應用與軟件,2005,22(12):43-46.
[6]楊明遠,謝梅,王勇,等.信息交換平臺設計中交換模式的融合研究[J].計算機工程與應用,2008,44(31):145-148.
[7]李銳,劉旭光,婁智.安徽交通科技信息共享平臺數據交換體系設計與實現[J].安徽農業大學學報,2009,36(3):498-504.
[8]宋興彬,王耀波.基于EAI的稅務數據交換平臺的建立[J].計算機工程與設計,2006,27(23):4581-4584.
[9]李長河,趙潔,張亞鈴,等.一種安全異構數據交換技術的研究與實現[J].計算機工程,2007,33(2):88-89,93.
[10]李俊峰,許舒人,馬建剛.面向大規模數據集成消息中間件系統的設計與實現[J].計算機工程與設計,2008,29(1):51-55.