物理隔離下的資料交換平臺難點解析與實踐(一)

妖生發表於2019-06-16

目錄

第零章、前言:為什麼?做什麼?怎麼做?

最近帶隊做了公司的一個專案,叫資料交換平臺,旨在物理隔離的情況下對多端業務系統進行資料的加密、傳輸、監控。

正好這個專案的架構師也在公司做了一次架構層面的技術分享,我便把此次分享和我在專案實踐中遇到的一些坑一起整理出來,形成本系列文章。

本系列文章介紹在物理隔離的網路條件下進行資料交換的難點,以及如何保證檔案交換的可靠性和安全性,如何與業務系統做到低耦合。

本文的目的在於跟讀者一起經歷整個專案,看看專案之初我們為什麼去啟動這個專案,專案的邊界在哪裡?

專案啟動後我們為什麼去這樣架構和設計?為什麼做這樣的選型?

再看看專案之中我們怎樣去解決斷點續傳、檔案加解密、檔案傳輸監控、檔案儲存策略、多節點叢集等方面的問題?

最後再看看專案結束之後我們又收穫了什麼?是否真正地解決了問題?還有沒有可改進的地方?

第一章、資料交換平臺的一些基本概念

1.1 資料交換與交換平臺

資料交換在一般意義上實際上是指物理硬體上的電路交換,而我們本次探討的內容則是軟體系統間的資料交換實現。

那麼軟體系統中的資料交換都有哪些型別呢?

  • API介面

這應該是我們最常用的一種資料交換方式了。可是,API介面也算是資料交換嗎?

事實上,我們所有的ESB、webService、API閘道器、RPC、MQ等等,都是在做系統間通訊的工作。

我們想一想,不同的系統間通訊什麼內容呢?不就是靈與靈的交流、心與心的溝通,嗯,資料跟資料的交換嗎?

  • 共庫

這應該是最簡單的一種交換方式了,我把資料放到這個庫,然後給你開個只讀使用者,或者對你開放同義詞、檢視許可權,我寫你讀,你寫我讀。

  • ETL

ETL是英文Extract-Transform-Load的縮寫,指將資料從源端抽取取、轉換、載入到目標端的一個過程。

ETL常常用在資料倉儲,但其實並不限於資料倉儲。

  • 資料交換平臺

在我的理解中,資料交換平臺其實就是ETL的一個擴充套件集,它可以對多個應用子系統進行資訊/資料的傳輸及共享,對各種分佈異構系統進行互聯互通,建立中心資料庫,完成資料的抽取、集中、載入、展現,有著統一的資料處理和交換方法。

1.2 什麼是物理隔離?

那我們本次要說的資料交換平臺跟上面定義中的交換平臺有什麼區別呢?

為什麼我們的文章標題中要加一個物理隔離呢?

實際上在我們軟體系統資料傳輸中,大部分都是通過TCP協議來通訊的,而在物理隔離的情況下,這一法則將不再適用。

什麼是物理隔離?

這個嘛,說起來也是頗具中國特色。在政務內網中,有個名詞頻頻被提及,就是網閘。
這個吊吊的裝置提供了我們政務內網與網際網路之間的網路安全性。

什麼是網閘?來看看百度詞條上的一段話:

網閘是使用帶有多種控制功能的固態開關讀寫介質連線兩個獨立主機系統的資訊保安裝置。

網閘是怎麼保證內外網的安全性的?

由於物理隔離網閘所連線的兩個獨立主機系統之間,不存在通訊的物理連線、邏輯連線、資訊傳輸命令、資訊傳輸協議,不存在依據協議的資訊包轉發,只有資料檔案的無協議"擺渡",且對固態儲存介質只有"讀"和"寫"兩個命令。

一句話,就是檔案擺渡。另外提一嘴,這個協議隔斷可是從鏈路層搞起的哦。

當前面臨的情況就是,一個網閘連線兩臺主機,只監控這兩臺主機上指定的資料夾目錄,擺渡目錄中的檔案,從A1到B1,從B2到A2,如此這般。

這兩臺連線網閘的主機,我們一般叫做前置機。

那麼,這兩臺前置機之間通訊只能依賴檔案跟檔案的交換了。哦,NO。管你什麼基於TCP、UDP的HTTP、FTP、TFTP、socket都完蛋。

好吧,看來,網閘真的神一樣的存在啊。而網路直連的API介面訪問、共庫、ETL好像都成了鏡花水月一樣的東西,看得見,摸不著。只能走自建資料交換平臺,使用檔案交換這條路了。

緊接著,我們因為這個網閘產生的一系列問題即將接踵而來。

怎麼把資料變成檔案上傳到前置機上去交換?怎麼在目標端下載下來?

怎麼保證大檔案的傳輸完整呢?中途失敗了怎麼辦?

怎麼知道對面的主機收到了我傳送的檔案呢?網閘可不提供TCP的ACK功能。

怎麼保證資料的安全性呢?中途被篡改了怎麼辦?

怎麼保證資料的時序性呢?網閘可不按照時間順序給你傳遞檔案。

怎麼監控資料流轉的情況呢?丟包了怎麼辦?有沒有辦法可以知道?

嗯,如果想了解以上問題,請看第二章:交換平臺的專案邊界與架構設計。

第二章在哪裡看?額,還沒寫,等兩天吧。

相關文章