天天看點

免開發跨系統資料對接方案需求場景技術分析

需求場景

由于産品業務發展,催生出了一個需求:
  線上平台與線下某些軟體系統要實作資料對接和資料互傳,并且不能影響軟體系統的正常運作。

  其實很多網際網路産品中都這樣的需求,很多平台營運商吸引線下商家、客戶入駐線上某些平台、
Sass服務等産品,幫助商家或客戶拓展線上業務。在這個前提下,商家或客戶實際以線上下開展業務多年,
有一套完整、成熟、穩健的線下業務流程、線下軟體系統(ERP、CRM等)。可以說站在客戶的業務角度出
發,現在業務發展已經演變為線下、線上雙箭齊發的場景。由此衍生出資料對接、互通資料的需求。

1.線上平台需要線下基礎資料:
    在入駐線上系統初期,很多基礎資料來自線下軟體系統,例如:線下業務中的客戶資料、
    商品資料、庫存資料、價格資料等。

2.線下軟體需要線上訂單資料:
    在完成線下基礎資料的資料上傳線上平台後,線上平台已經可以正常開展業務,由此産生的線上資料
    例如訂單資料需要及時準确的下發傳輸給線下軟體系統。
           
免開發跨系統資料對接方案需求場景技術分析

技術分析

開放API 方式:

通常線上平台都會伴随系統開發一個開放平台,提供一些基礎的資料傳輸API、業務對接API等。
這是最常見的也是最容易實施和落地的。這些開放的API接口往往基于Http協定、WebService等,
常見的大廠向,微信、阿裡、餓了麼、美團 等等
這樣的方案同時也存在幾個緻命的缺點:
    1.必須要求客戶對接
        誰對接意味着誰來開發對接程式,很多客、商家是不具備開發能力的。
    2.資料下發被動、實時性低
        對線上資料的擷取由線下對接程式根據需要調取線上API接口擷取。資料的産生
        與資料的下發不同步現象明顯,對實時性要求比較高的業務場景如訂單,這種方案是不可取的。
           

免開發方式

客戶是上帝,現在客戶說了:什麼平台,讓我來開發對接。有沒有搞錯,我是使用者,我要是能開發軟體,
還用花錢買你們的軟體服務嗎!

負責的平台都不應該把本來屬于應該自己來解決的問題,推給客戶。再者說,如果平台不能提供解決方案,
來解決這個普遍性的問題,還要什麼發展,還能發展嗎。

言歸正傳,免開發對接方案嚴格意義上,也不是一點開發都不做。它的好處在于不用修改、二開線下軟體,
而是通過部署一個運作線上下的對接程式來完成資料中繼。自然,這個對接程式有平台營運商開發并
提供對接服務。

我們分析一下,線上、線下各運作者一套軟體系統,實作兩個不想關的系統間資料對接,首先要思考
兩個系統間的資料對接标準是什麼,規範是什麼。而資料對接的标準和規範應當從業務開展角度出發,
從實際需求出發。很多線上平台都有成熟的标準,而這些标準都是從一線業務場景中沉澱、總結出來的。
簡單說,平台負責定義資料對接标準,具體說,平台提供商品表、訂單表、客戶表等資料結構定義、字段
類型定義、字段長度定義等。
除此之外,按照資料對接标準開發資料對接用戶端程式,來完成線上、線下不同系統間的資料傳輸工作。
           

用戶端技術特點:

免開發跨系統資料對接方案需求場景技術分析

用戶端部署線上下,要求能夠通路資料對接中間資料庫。用戶端中運作者若幹定時任務,用來按固定頻率

向線上傳輸資料。同時用戶端也監聽者線上平台的MQ異步消息,完成線上資料到線下中間庫的資料下發。

這裡提到來一個概念:“中間庫”。

所謂中間庫,就是部署線上下的資料對接用的資料庫,用戶端整個運作都圍繞着中間資料庫開展業務。

上傳資料:

1.在中間庫中根據業務編寫不同的存儲過程,來通路線下軟體的業務庫資料

2.資料對接中間程式運作着定時任務,負責調取存儲過程中的線下資料,通過MQ、API等方式

抽送到線上平台

下發資料:

1.線上平台産生業務資料,将資料存放到MQ服務中的指定消息隊列

2.資料對接用戶端監聽資料下發消息隊列,擷取消息中的資料後,寫入到中間庫、或者調用存儲過程完成

資料寫入到線下業務資料庫中

由此,可得出結論。資料對接用戶端,對接資料依賴資料庫程式設計(存儲過程),消息服務MQ以及接口API。
 整個流程并不需要對客戶的線下軟體系統進行改造和二開。
           

免開發實時性方案思考

綜合開放API方案、資料對接用戶端方案不難發現,都無法完美的實作資料對接絕對實時。
    于是筆者認為,要解決線下資料上傳過程的資料監聽問題,可能有些讀者已經考慮到資料的觸發器了。
    對于資料庫的資料變動觸發器能夠及時的捕捉到,并且提供了資料程式設計的可能。那麼剩下來的問題
    就是如何實作将觸發器捕獲的資料變動通知給資料對接用戶端。如果能夠實作此一步,那麼對于線下
    軟體産生的業務資料就能夠在第一時間上傳給線上平台了。
    通過與負責實施的同時溝通了解到,可以在觸發器中向資料對接用戶端發起Http 調用,将資料傳送給
    資料對接用戶端。目前向Oracle、SQLServer、Mysql 都可以做到。
    到此可以得出結論,隻要業務需要,無論是對資料的上傳還是下發,線上、線下兩個系統間都可以通過
    技術手段實作資料實時傳遞。
    遺憾的是我們業務上允許上行資料的小幅度延遲,沒有得到實際的将想法思路通過實際進行檢驗。
    我想理論方案可行,将我的想法思路分享給各位奮鬥在一線開發的小夥伴們!
           
免開發跨系統資料對接方案需求場景技術分析

程式監聽資料庫變化

關于程式中如何監聽資料庫變化,我的另一篇部落格

https://blog.csdn.net/yanghui555/article/details/115356763程式監聽資料庫變化的方法和實踐,Oracle、Sqlserver、Mysql

繼續閱讀