常見的系統間接口方式(02)-中間件的數據接口模式

導讀:

原文路徑:https://mp.weixin.qq.com/s/uq9DfxE5_cvAsitqlcblBg

大家可以關注我個人公衆號,所有分享內容,會在公衆號第一時間推送,且閱讀排版更好。

願大家的學習,輕鬆且愉快。

如果大家覺得有用,希望轉發關注,謝謝。

中間件的數據接口模式,也會被稱爲中間數據庫的數據交互模式,或者叫數據平臺的數據交互,總的來說,就是在各個業務系統間,建立一個獨立的數據庫,保證系統間的數據交互,或者叫數據接口。

 

爲什麼要使用中間數據庫的接口模式?

 

對於很多企業來說,經常需要多個業務系統支持。如果採用系統間相互的函數調用模式,會導致接口過多,難以管理。基於此情況,多數企業會選擇採用中間數據庫,以滿足多個系統間的數據流轉。

企業很多時候不願意大規模採用RFC調用的接口模式,常基於且不限於以下幾個原因:

 

1.很明顯,基於上圖中只有5個系統,但其接口的複雜性已經較高了對於企業來說類似上圖中的接口模式,是不易管理的。而且,實際業務中,少有規模的企業,都存在多個系統,並且各個系統之間接口業務不一樣。在類似此種情況下,當企業的接口較多時,如果均採用點對點的相互調用接口,對接口以後的維護成本會很大。隨着業務發展,很有可能最後誰也不知道某個接口的是否被使用,或者某個接口到底如何被使用。

 

2.點對點的RFC調用接口,必須要求接口兩端的功能均可用,這就有可能會影響業務的及時性。比如,常見的生產管理系統,一般其業務及時性要求很高,生產上發生一筆業務,通過RFC調用傳輸給ERP,但是ERP系統可能因爲財務賬期、其他程序鎖表等,導致RFC接口無法立刻被調用成功。但生產管理系統又不可能一直等待ERP系統的執行,這樣就會出現難以調和的矛盾。

 

3.其實,很多時候,基於數據安全、信息安全等多方面的考慮,很多系統並不願意給其他調用自己系統功能的權限,這樣也就限制了RFC接口模式的使用。

 

 

基於上述弊端,企業爲了降低系統接口統一管理的難度,以及接口後期的維護成本,結合從安全及業務及時性等角度的綜合考慮,一般會採取建立中間數據庫的接口方式。

 

那麼,中間數據庫接口模式的工作機制是什麼?

如果兩個業務系統,採用建立中間數據庫的模式進行數據交互,其工作原理可以簡單理解爲:

首先,會部署一個專門的數據庫或者數據系統,也有稱爲數據平臺等,實際上,就是個專門用於存儲系統間交互數據的數據庫。

業務系統不會直接將要傳輸的數據,傳輸給其他業務系統,而是會傳輸給這個中間的數據庫,要使用數據的業務系統,會主動去中間數據庫取自己需要的數據。

如下圖所示,A系統會將數據寫入至中間數據庫,B系統會取中間數據庫去取需要的數據,反之亦然。

 

 

採取中間數據庫接口的方式,在實際使用中,一般是存在多個系統之間有數據交互的業務情況,如下圖所示。

基於下圖,我們對比之前多系統接口採取RFC方式的圖例,我們很容易看出來,採取中間數據庫接口的交互方式,其接口更加容易管理,且交互方式更加安全。

當然,採用中間數據庫的接口方式,其弊端也比較明顯,可能會導致一些常見問題,比如:

 

1. 數據接受的系統,不能夠及時處理數據,不能夠在第一時間驗證數據的業務及系統層面的準確性。

很有可能出現,傳輸數據的系統將數據寫入中間數據庫,但是,需要接受數據的系統,在中間數據庫讀取數據時,發現數據有問題,並無法正常使用。

此種情況,作爲接收數據的系統,很難在第一時間對數據進行管控和校驗。

比如,我曾在項目中遇到過一個情況,某企業針對SAP系統與MES系統的所有接口,採取了中間數據庫的接口模式。當發生原材料領用的業務時,首先,MES系統出庫過賬,進而將數據傳輸給中間數據庫,SAP系統會取中間數據庫的數據,完成過賬。但是,實際執行中,某物料的庫存只有10個,MES系統中的程序計算錯誤,顯示庫存有12個,用戶執行領用12個,且在MES系統中領用成功。此時,當領用12個的數據傳輸給SAP,由於SAP中的庫存數量只有10個,無法針對領用量12進行過賬,最終出現問題。

基於這一案例,如果我們採取的是RFC的接口模式,一旦領用數量大於庫存數量,在SAP端就無法過賬,直接就反饋給MES了,但是,採用中間數據的接口方式,其校驗就會比較滯後,容易產生問題。

2.接受數據的系統,什麼時候去數據庫取數據;

 

其實,基於列舉的第一個問題,我們不難看出,中間數據庫的接口模式,對於數據接收方的系統來說,有一個問題:應該在什麼時候去取數據?

 

因爲基於上述工作機制,數據發送方的系統在給中間數據庫寫入數據時,數據接收方的系統並不知道。

 

所以,我們常見的處理方式就是定義自動的系統後臺Job,也有的系統會稱爲後臺timer。

 

簡言之,我們就會在系統中定義一個程序,每個一段時間自動去中間數據庫取一次。根據業務的及時性要求不同,我們可以定義不同的時間段,比如每十分鐘取一次,或者每小時取一次,或者每天取一次等。

 

採取自動後臺Job的方式,可能帶來的問題,也比較明顯:數據發出方的系統,在某天只寫入了三次數據,如果數據接收方定義每小時取一次,那麼,實際取數據的次數是24次,對於系統服務器來說,爲了3次數據,卻需要執行24次程序,這就有些佔用服務器資源了。

 

對於一些業務較多、系統交互較多的企業,排程系統後臺Job就變成了一項非常重要的工作。這要基於業務要求本身,系統程序大小等因素,去決定job的執行頻率及執行順序。

比如,實際情況中,很多取數程序的本身必須有先後順序,必須得先取某數據,才能取其他數據;有的程序太大、所取數據太多,就不能排在工作時間去取數,因爲其很有可能佔用過多服務器資源,導致其他業務難以順利執行,所以,一般此類Job,會被安排在凌晨執行,等等。

 

3.雞蛋被放在了一個籃子裏。

 

基於中間數據庫的接口模式,我們很容易就能看出來,如果過於集中地使用中間數據庫或者數據平臺等,意味着我們把核心數據都放在了一個數據庫中。如果這個數據庫出現問題,就有可能大面積影響相關係統的正常運轉。基於這種情況,如果採取中間數據庫的方式,其系統安全策略及相關災備系統等的措施,就非常重要了。

4.非企業本身的外部系統,如果需要與企業自己的系統進行數據交互,那麼,基於安全層面的考慮,不會建議外部企業的系統直接訪問內部數據庫。

那麼,如果外部系統與企業內部系統有數據交互需求的話,應該採用哪種方式呢?

 

這個就要基於我們下一篇要介紹的“文件傳輸的系統接口模式”。

 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章