在前面談ESB服務設計器和輕量的ESB服務編排的時候可以看到,在和數據庫适配相關層面,我們重點隻在解決一類問題,通過數據庫适配的方式來發布一個查詢服務或導入服務。對于查詢服務具體轉化為對數據庫的Select操作,而對于導入服務則轉化為對數據庫的Insert操作。
即ESB的服務設計或輕量編碼,數據庫端是後端适配,最終目的是查詢或導入數據,最終則發布一個服務。
我今天談面向服務的ETL集成,和原來談的數據庫适配和服務發布最大的區别就在于數據庫适配仍然存在,但是在服務編排過程中不産生新的服務,而是産生一個類似定時調度的任務,這是和前面場景最大區别。對于這種模式我們舉例來進行說明。
場景一:定時調用某個查詢服務獲取增量數據,同時将增量數據插入到某個數據庫表
在該場景下可以看到,我們需要形成一個定時調度任務,輸入增量查詢條件對查詢服務自動觸發調用,在調用完成後獲取到增量數據後,再通過數據庫适配,将數據寫入到某個數據庫表中。在整個過程中實際上有三個重點,一個是觸發服務調用,一個是數據轉換映射,一個是數據庫适配。
場景二:定時調用某個ETL查詢操作,獲取到數據集,再去觸發對某個導入服務的調用導入數據
這個場景剛好是場景一的逆向場景,即定時調度任務首先是通過數據庫适配獲取到數據集,但是在獲取到數據集後不是将其發布為服務,而是直接去調用另外一個外部導入服務,将數據推送到這個導入服務裡面。當然也可以是将數據推送到某個JMS消息管道中。
場景三:定時調用ETL操作獲取數據,再調用服務返回數據,再調用ETL操作将返回結果導入數據庫表
這場景實際上對接的兩個系統,一個提供服務,一個提供DbLink連接的對接場景。首先是通過ETL獲取數據,然後調用導入服務推送數據,同時将導入服務調用的結果信息再次調用ETL操作将返回結果插入到數據庫。
場景四:先調用查詢服務獲取數據,再調用ETL操作插入庫表,如果存在異常調用服務寫入異常信息
這種場景實際也是服務和ETL之間的一個組合,即先調用查詢服務獲取增量數據,然後調用數據庫适配将增量數據寫入到數據庫表,如果在寫入過程中出現異常,則将調用異常信息導入服務将異常信息返回。
對于原來我們經常談到的類似ODI模式的WS ETL的集成,本身沒有變化,即将一個數據庫的ETL操作發布一個WS服務,通過調用查詢服務來輸入查詢條件,通過基于查詢條件獲取數據并ETL操作到目标數據庫,然後再返回具體的輸出結果。這種WS和ETL集合的模式,由于大數據量的ETL沒走ESB總線,因此能夠獲得更好的性能。
ESB服務總線和大數據傳輸平台的集成
在Oracle SOA套件裡面可以看到有類似于Oracle ODI的大數據服務集成方案,其本質仍然是WS ETL的能力組合,在我們自研的ESB中準備集成大數據服務能力,即考慮底層采用最新的DataX來進行集成。
其集成的核心思路仍然是将WS和ETL能力進一步結合,同時實現服務調用消息控制流和實際大數據傳輸數據流的分離。同時通過對服務的調用來實現ETL的實時按需觸發和參數化服務調用。
其核心思路如下,在設計期:
1. 需要設計一個SOAP Web Service服務,該服務的輸入有标準的開始時間和截至時間段輸入信息,輸出有同步完成的數據量,同步Flag狀态标準,日志異常信息字段。
2. 将設計完成的Web Service服務在大數據服務總線平台進行注冊。
3. 在底層通過DataX來實現TL作業任務,該作業任務使用參數化查詢SQL語句對源數據庫符合條件的數據進行查詢。而具體的參數可以通過在服務調用的時候傳入。
4. 具體設計詳細的ETL作業任務,包括源和目标數據庫的配置,數據映射。
5. 通過配置界面設計服務查詢輸入和參數化查詢SQL之間的數據映射。
6. 通過配置界面設計ETL作業任務結果同服務輸出字段之間的數據項映射。
在運行期的調用邏輯如下:
1. 服務消費方調用 ESB總線發布的Web Service服務,傳入時間段條件。
2. ESB總線在接收到服務調用請求後,将服務的輸入根據已經配置的數據映射傳遞給ETL作業的參數化查詢中。
3. 在完成數據映射後實時啟動ETL任務的執行,ESB服務調用過程處于等待狀态。
4. ETL任務執行,将數據從源數據庫抽取并同步到目标數據庫,整個數據流的集成将在源數據庫和目标數據庫之間完成,即數據流不通過ESB服務總線以減少ESB總線壓力。
5. 在ETL任務完成後獲取ETL任務結果信息,并将結果信息返回給ESB服務的服務調用輸出中。
6. ESB服務将服務調用輸出返回給服務消費方。
整個設計過程我們通過前台可配置的界面來配置完成,即主要是配置服務的輸入輸出,數據源,數據目标,數據源和數據目标之間的映射關系。根據這些配置信息一方面是進行WS服務的封裝和發布,另外一方面則是生成DataX需要的Json配置文件。
當然整個完成的DataX任務也可以通過CronTab來配置定時作業任務進行定時調度。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!