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


導讀 

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

正文 

為什么要使用中間數據庫的接口模式? 

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

 

企業很多時候不願意大規模采用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了,MES系統也會停止出庫領用,用戶會去查詢具體數據原因。但是,采用了中間數據的接口方式,其校驗就會比較滯后,容易產生問題。 

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

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

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

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

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

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

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

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

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

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

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

 

 那么,如果外部系統與企業內部系統有數據交互需求的話,應該如何進行數據接口呢?

 這個問題就引出了我們下一篇要介紹的內容:“文件傳輸的系統接口模式”。

 轉自:https://mp.weixin.qq.com/s/uq9DfxE5_cvAsitqlcblBg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM