?
?
企業應用集成
面向服務的體系結構?(SOA) 目前應該是一個很受歡迎的名詞,中間件技術人員幾乎到了言必稱SOA的程度,數據集成當然也不例外,在Oracle openworld2008大會上,就推出了一堆數據集成的專場演講,其中和SOA結合最緊密的就是實時數據集成?real time data integration。我總結了一下,實時數據集成一般分為兩個處理過程:一是對數據按照SOA架構的需要進行整合加工形成可用的信息,二是將信息以符 合SOA規范的方式發布出去。具體的實時數據集成模式可以按照對這兩個處理過程的設計分為以下四種:
1.???????在中間件層上進行數據的加工整合,同時通過中間件層的標準接口將整合后的數據以標準接口發布。
2.???????數據源層負責數據的加工處理,然后將整合后的數據以標準的接口發布到中間件層,由中間件層負責數據的訪問。
3.???????將分散在數據層的數據先整合到ODS或者數據倉庫中進行整合加工,然后再將加工整理后的數據以標準接口發布到中間件層。
4.???????采用數據網格的方式將數據層的數據整合在中間層,形成數據網格,中間件負責數據的加工,整合,然后以標準的方式發布出去。
我們先看第一種模式,數據集成發生在中間件層,數據發布也發生在中間件層,如下圖所示:
?
?
?
?
在中間層上存在一個虛擬的數據服務層,該層通過JDBC,FILE 適配器、應用適配器等與數據層的各種數據源實現連接,將數據源中的各種數據實體映射成中間件的虛擬數據層的表,虛擬數據層中的表都只有元數據,而不存儲實 際的生產數據。用戶可以在虛擬數據層上采用可視化圖形界面定義數據映射關系,進行數據加工整合,這些數據加工邏輯一般會以文件或者數據庫方式存儲。定義好 的數據可以通過web service,JDBC,數據對象等多種方式發布出去。當用戶通過中間件訪問虛擬數據層的數據時,虛擬數據層會根據系統定義的邏輯首先將需要加工的細節 數據從各個數據源抽取到虛擬數據層,然后中間件根據設計時的數據加工邏輯對其進行加工,最后中間件將加工好的數據以調用接口要求的格式返回。
采用虛擬數據服務層的優勢為:
1.???????處理都在中間件服務器上,相對來講,對數據的處理會比較靈活,應用和底層的數據實現松耦合。
2.???????當一個請求涉及到多個底層數據源時,對底層的數據訪問可以采用并發方式進行。
3.???????借助中間件的靈活性,數據可以采用多種方式對外提供接口,從而大大方便各種應用的開發。
4.???????所有的數據都是實時從數據源取來,保證數據的時效性。
問題:
數據的處理在中間件層進行,一是帶來從數據源到中間件層的數據傳輸,二是中間件一般都是J2EE架構,其強項并不是數據處理,在數據量不大時并無大礙,當數據量非常大時,其實現機制就注定了效率會出現問題。
?
第二種模式的實現方法為:數據源層負責數據的加工處理,然后將整合后的數據以標準的接口發布到中間件層,中間件層只負責數據的接入訪問,如下圖所示:
?
?
?
?
這種處理方式一般是數據庫廠商或者ETL廠商推薦的方式,根據用戶的業務需求邏輯,首先在數據源層通過ETL工具設計數據轉化流程,然后將流程的轉化邏輯發布成web服務,同時將轉化后的數據也發布成web服務,然后將這些服務注冊到中間件層,當前端用戶需要數據服務時,它需要調用兩個web服務,第一個是轉化web服務,該web服務調用相應的ETL工具對數據進行整合加工,然后將整合的數據存儲在臨時表中。第二個服務是調用數據服務,直接從臨時表中取出加工后的數據,與第一種模式的區別在于,它將數據的加工處理放在了數據源層,其優勢在于:
1.???????ETL工具天生就是做數據整合的,而且適合大數據量的整合,所以針對大數據量效率會非常高。
2.???????在數據源層整合可以充分利用數據庫的處理能力,畢竟數據庫才是做數據處理的行家。
3.???????依靠E-LT工具的變化數據捕捉功能,可以進行增量數據的處理。
4.???????數據轉化和數據獲取松耦合,可以實現異步處理。
該模式的問題在于:
1.???????由于數據的加工處理依賴于數據庫的處理能力,因此在所有的數據源中,必須有一個為關系型數據庫系統,而第一種模式由中間件負責數據處理,數據源沒有限制。
2.???????在應用的流程設計中,需要調用兩次WEB服務,一次為轉化,一次為取數據讀取,數據量非常小的情況下,有點畫蛇添足的味道。
?
第三種模式其實是前兩種模式的組合,但其數據集成是基于數據倉庫的概念發展演化而來,象現在很多企業單位正在建的ODS系統。如下圖:
?
?
?
?
為了保證為企業提供一個全局的數據視圖,我們可以通過建立一個全局的操作型數據庫ODS(operational data storage),該數據庫與企業內的其它數據源通過變化數據捕捉(change data capture)方式保持實時同步,當數據源內的數據發生變化時,CDC會捕捉到變化的數據并通過ETL工具或者其它手段(如主數據管理工具)同步到ODS數據庫中。ODS數庫內存儲的數據可以分為三層,如下圖所示:
?
?
?
接口數據層:主要負責接收從各個實時系統收集到的臨時變化數據。
統一模型層:針對企業共享數據的要求建立的企業級統一數據模型,接口數據層的數據通過加工整合然后進入統一模型層。統一模型層是ODS對外提供數據供應的主要數據源
匯總數據層:根據用戶的業務需要,在ODS上 建立一些統計、匯總,提供一些全局的數據報表。從接口層到統一模型層以及從統一模型層到匯總層數據都可以采用異步的方式完成,很多企業目前采用的方式是從 接口層到統一模型層采用準實時的方式完成,而從統一模型層到匯總層一般在晚上或者其它時間窗口完成,一方面避免對生產系統的影響,另一方面也可以充分利用 機器的處理能力,當客戶需要訪問一些匯總數據時,可以從匯總表直接取已經匯總好的數據,從而加快系統的響應時間。
最后一點就是數據的發布格式,在該模式中,中間件層負責數據的接入訪問,ODS里的數據可以封裝成WEB服務發布在中間件層。當前端業務流程需要集成的數據時,可以直接訪問ODS內的數據,如果數據集成比較復雜,我們可以根據用戶的業務需要,通過ETL工具或者其它工具(第二種模式)對統一模型層的數據進行加工放到匯總數據層,然后再從匯總數據層訪問數據。
第四種模式是采用數據網格的技術來實現實時數據集成,它和第一種方式非常相似,數據的整合加工和發布都在中間件層上,唯一不同的是我們采用數據網格技術在中間層增加了一層對象緩存層,如下圖示:
?
?
?
數據的整合加工和訪 問接入都發生在中間件層,當客戶端訪問數據時,所有的流程方式都和第一種模式沒什么區別,但需要訪問的數據都通過數據網格層緩存在了中間件層,因此減少了 數據源訪問和網絡傳輸的時間,訪問速度會大大加快,從而可以在一定程度上解決第一種模式的不足,但數據處理仍然發生在中間件層,如果中間件處理能力有限, 系統的效率還會受到局限。
在這里需要說明的是數據網格并不是專門來做數據集成的,從上面的示意圖中我們也可以看到,數據集成只是數據網格的一個副產品而已,關于數據網格的定義及功能,我們會在其它文章中解釋。
該模式的優勢:
1.???????系統擴展性好,數據網格層的擴展性決定了整個系統的擴展性。
2.???????當機器的處理能力不足時,通過集群方式可以大大提高性能。
3.???????真正實現了前臺數據與后臺數據源的松耦合。數據網格負責與各種后臺數據源的交互。
問題
1.???????中間件層數據的加工整理過程仍然存在。
2.???????如果應用已經上線,需要針對數據網格提供的接口修改應用。
?
總結
以上四個模式各有自己的應用范圍,從總體上看,數據的處理越靠近底層,效率越高,靈活性越差;越往上走,效率越低(網絡傳輸和J2EE語言的擅長點不在數據處理),靈活性越好;其實各種數據集成模式無所謂好壞,關鍵是看業務需求,只要能夠滿足業務需求就夠了。
?