應用系統之間數據傳輸的幾種方式

来源:https://www.cnblogs.com/HappyBeibei/archive/2019/06/20/11061917.html
-Advertisement-
Play Games

轉載:https://blog.csdn.net/sinat_30474567/article/details/79712834 隨著近年來SOA(面向服務技術架構)的興起,越來越多的應用系統開始進行分散式的設計和部署。系統由原來單一的技術架構變成面向服務的多系統架構。原來在一個系統之間可以完成的業 ...


轉載:https://blog.csdn.net/sinat_30474567/article/details/79712834

隨著近年來SOA(面向服務技術架構)的興起,越來越多的應用系統開始進行分散式的設計和部署。系統由原來單一的技術架構變成面向服務的多系統架構。原來在一個系統之間可以完成的業務流程,通過多系統的之間多次交互來實現。這裡不打算介紹如何進行SOA架構的設計,而是介紹一下應用系統之間如何進行數據的傳輸。

應用系統之間數據傳輸有三個要素:傳輸方式,傳輸協議,數據格式

數據傳輸方式一般無非是以下幾種:

1 socket方式

 Socket方式是最簡單的交互方式。是典型才c/s 交互模式。一臺客戶機,一臺伺服器。伺服器提供服務,通過ip地址和埠進行服務訪問。而客戶機通過連接伺服器指定的埠進行消息交互。其中傳輸協議可以是tcp/UDP 協議。而伺服器和約定了請求報文格式和響應報文格式。如圖一所示:

 

目前我們常用的http調用,java遠程調用,webserivces 都是採用的這種方式,只不過不同的就是傳輸協議以及報文格式。

這種方式的優點是:

1 易於編程,目前java提供了多種框架,屏蔽了底層通信細節以及數據傳輸轉換細節。

2 容易控制許可權。通過傳輸層協議https,加密傳輸的數據,使得安全性提高

3 通用性比較強,無論客戶端是.net架構,java,python 都是可以的。尤其是webservice規範,使得服務變得通用

而這種方式的缺點是:

1 伺服器和客戶端必須同時工作,當伺服器端不可用的時候,整個數據交互是不可進行。

2 當傳輸數據量比較大的時候,嚴重占用網路帶寬,可能導致連接超時。使得在數據量交互的時候,服務變的很不可靠。

 

2 ftp/文件共用伺服器方式

 

對於大數據量的交互,採用這種文件的交互方式最適合不過了。系統A和系統B約定文件伺服器地址,文件命名規則,文件內容格式等內容,通過上傳文件到文件伺服器進行數據交互。

最典型的應用場景是批量處理數據:例如系統A把今天12點之前把要處理的數據生成到一個文件,系統B第二天凌晨1點進行處理,處理完成之後,把處理結果生成到一個文件,系統A 12點在進行結果處理。這種狀況經常發生在A是事物處理型系統,對響應要求比較高,不適合做數據分析型的工作,而系統B是後臺系統,對處理能力要求比較高,適合做批量任務系統。

 

以上只是說明通過文件方式的數據交互,實際情況B完成任務之後,可能通過socket的方式通知A,不一定是通過文件方式。

 

 

這種方式的優點:

1 在數據量大的情況下,可以通過文件傳輸,不會超時,不占用網路帶寬。

2 方案簡單,避免了網路傳輸,網路協議相關的概念。

這種方式的缺點:

1 不太適合做實時類的業務

2 必須有共同的文件伺服器,文件伺服器這裡面存在風險。因為文件可能被篡改,刪除,或者存在泄密等。

3 必須約定文件數據的格式,當改變文件格式的時候,需要各個系統都同步做修改。

 

3 資料庫共用數據方式

系統A和系統B通過連接同一個資料庫伺服器的同一張表進行數據交換。當系統A請求系統B處理數據的時候,系統A Insert一條數據,系統B select 系統A插入的數據進行處理。

這種方式的優點是

1 相比文件方式傳輸來說,因為使用的同一個資料庫,交互更加簡單。

2 由於資料庫提供相當做的操作,比如更新,回滾等。交互方式比較靈活,而且通過資料庫的事務機制,可以做成可靠性的數據交換。

這種方式的缺點:

1 當連接B的系統越來越多的時候,由於資料庫的連接池是有限的,導致每個系統分配到的連接不會很多,當系統越來越多的時候,可能導致無可用的資料庫連接

2 一般情況,來自兩個不同公司的系統,不太會開放自己的資料庫給對方連接,因為這樣會有安全性影響

 

4 message方式

Java消息服務(Java Message Service)是message數據傳輸的典型的實現方式。系統A和系統B通過一個消息伺服器進行數據交換。系統A發送消息到消息伺服器,如果系統B訂閱系統A發送過來的消息,消息伺服器會消息推送給B。雙方約定消息格式即可。目前市場上有很多開源的jms消息中間件,比如  ActiveMQ, OpenJMS 。

這種方式的優點

1 由於jms定義了規範,有很多的開源的消息中間件可以選擇,而且比較通用。接入起來相對也比較簡單

2 通過消息方式比較靈活,可以採取同步,非同步,可靠性的消息處理,消息中間件也可以獨立出來部署。

這種方式的缺點

1 學習jms相關的基礎知識,消息中間件的具體配置,以及實現的細節對於開發人員來說還是有一點學習成本的

2 在大數據量的情況下,消息可能會產生積壓,導致消息延遲,消息丟失,甚至消息中間件崩潰。

 

下麵具體來分析一個場景,來看看系統之間數據傳輸的應用

場景 目前業務人員需要導入一個大文件到系統A,系統A保存文件信息,而文件裡面的明細信息需要導入到系統B進行分析,當系統B分析完成之後,需要把分析結果通知系統A。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 好久不見,風水輪流轉,我竟然寫寫寫python了 近日有個小需求,要求收集統計一些信息上報,並直接在後臺控制台列印,寫入日誌 為了美觀,需要以表格形式展現數據,形如 雖說可以用 prettytable 實現這個效果,不過還得安裝這個庫,需求比較簡單就不考慮安裝第三方依賴了,所以得自己寫 照著這個圖, ...
  • 分析出現no Session錯誤的原因以及給出解決方案: 使用SpringMVC + JSON數據返回時,經常會出現no Session的錯誤: 報錯原因:因為懶載入在提取關聯對象的屬性值的時候發現EntityManager已經被關閉,就報no session錯誤。 控制器類中的方法上添加了@Res ...
  • 策略模式:定義了不同的演算法,分別分裝起來,讓他們可以互相替換,即使演算法變化了,也不會影響到使用演算法的用戶 首先定義一個抽象演算法類,有兩個類繼承了這個抽象類,重寫了AlgorithmInterface()方法 用一個context類來維護對抽象演算法類Strategy對象的引用(重點) 測試類1 但是從 ...
  • 在 Spring Boot 中集成 Shiro,並使用 JWT 進行介面認證。 為了統一對 Token 進行過濾,所以自定義了一個 過濾器。 期間遇到了以下幾個問題,這裡逐一進行記錄,以備日後查閱。 問題一:JwtTokenFilter 無法使用 @Autowired 因為自定義了一個 JWT To ...
  • IDEA設置取消自動顯示參數提示 最近在使用IDEA的過程中,發現方法中一直顯示形參名的提示,無法選中,也無法刪除,基於不同人的使用習慣不同,有的人不喜歡這種提示,我也在網上尋找各種解決方案,由於搜索關鍵詞不對,一直沒能解決,不過好基友及時幫助,順利解決,多謝我的大副。 取消參數提示之前,我的方法中 ...
  • 關於django中的APPEND_SLASH 它是啥? 看變數名大概能知道做什麼,就是添加斜線,用路由系統那裡。 路由文件,只寫了路由關係代碼 APPEND_SLASH這個常量預設為True,就是假如你沒有添加斜線,他會幫你添加上(總體是這樣,具體得看源碼怎麼寫的了) 執行命名行代碼啟動django ...
  • 涉及Dynamics ax 行業已經好幾年了,準備總結一些有用的處理方法供大家來參考 首先先介紹下Computed column技術,該技術是微軟在AX2012版本中提供的新技術,可以讓SQL語句在AX view中使用,這樣就可以將想要的值拼接在一條交易記錄上,這樣就可以針對數據進行批量處理,所以想 ...
  • 一、登錄功能實現: html頁面: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>主頁</title> <script src="https://cdn.bootcss.com/jquery/3.4.1/j ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...