梁任綱, 何 倩,2, 劉 鵬, 蔣 明
(1.桂林電子科技大學 衛(wèi)星導航定位與位置服務國家地方聯(lián)合工程研究中心,廣西 桂林 541004;2.桂林電子科技大學 廣西密碼學與信息安全重點實驗室,廣西 桂林 541004)
在萬物互聯(lián)時代,隨著信息與通信技術的飛快發(fā)展,物聯(lián)網應用的規(guī)模變得越來越龐大[1]。截至2021年,物聯(lián)網中的服務設備數量預測將超過400億,由物聯(lián)網服務設備產生的數據流量呈現爆炸式的增長趨勢,基于傳統(tǒng)的云計算模型處理海量多源異構數據存在網絡帶寬受限、計算資源受限、高時延和隱私數據泄露等安全問題,以網絡邊緣設備為核心的邊緣計算模型應運而生。
邊緣計算因為高計算能力和靠近用戶群體從而就近處理,可減少網絡堵塞、提高網絡的傳輸速率,最終降低網絡時延,即時響應用戶請求,明顯提高用戶的使用體驗,使邊緣計算在各行各業(yè)的應用中呈現出“病毒式”傳播的趨勢,物聯(lián)網應用中的邊緣節(jié)點數量也變的越來越多。邊緣計算和人工智能的有力結合形成邊緣智能[2],為在邊緣智能中提供更優(yōu)質的智能服務,讓跨域的邊緣節(jié)點收斂于相同的模型參數,邊緣節(jié)點之間的模型同步共享不可或缺。例如,市場經濟規(guī)模早已突破百億大關的短視頻抖音平臺2021年數據用戶預計將達到7億,僅僅依靠傳統(tǒng)的云存儲方式不能即時響應巨大的用戶服務請求,云邊結合更加具有優(yōu)勢,為了使抖音短視頻的推薦更具有針對性,在多邊緣節(jié)點之間進行熱門短視頻、個性化推薦模型的更新和同步必不可少。綜上所述,打通數據孤島,實現跨域邊緣節(jié)點之間的可信數據同步至關重要。
現階段存在多種數據同步工具,如Rsync、Syncany、Hadoop等[3-5],但是現有的邊緣服務應用對數據同步提出了更高的要求,傳統(tǒng)的數據同步工具已無法滿足,例如不能實現一對多的數據同步、同步過程中傳輸大量的冗余數據、同步過程缺少可信監(jiān)管和存在安全隱患、無法跨平臺數據同步和無可視化界面進行數據同步的控制和管理等。因此,跨域邊緣節(jié)點之間便捷、有效、可信的數據同步是當前亟需解決的問題。
區(qū)塊鏈作為近年來的新興技術之一,本質上是分布式數據庫,沒有集中式數據庫存在的單點故障問題,并且區(qū)塊鏈不可篡改、可溯源的特性可以為鏈上數據進行強有力的背書,區(qū)塊鏈還具有匿名性,在傳輸信息時不需要披露或驗證身份信息,具有高安全性。
面向跨域的可信數據同步,提出一個基于區(qū)塊鏈和Rsync的可信數據同步機制,主要貢獻有:
1)針對跨域邊緣節(jié)點的可信數據同步需求,引入去中心化、不可篡改、可溯源的區(qū)塊鏈技術為邊緣節(jié)點之間的數據同步提供可信環(huán)境,并且設計了基于區(qū)塊鏈的可信數據同步模型架構;
2)針對傳統(tǒng)數據同步存在大量冗余數據傳輸問題,基于Rsync算法實現跨域的數據同步,可提高跨域邊緣節(jié)點之間數據同步的效率和邊緣網絡帶寬的利用率;
3)針對傳統(tǒng)數據同步過程缺乏可信監(jiān)管等問題,基于區(qū)塊鏈實現數據同步監(jiān)控與溯源,將服務接口調用日志和數據同步信息存儲至區(qū)塊鏈中進行溯源,可提高跨域邊緣節(jié)點之間數據同步的安全性和可靠性;
4)以跨域邊緣節(jié)點的可信數據同步需求為背景,基于Hyperledger Fabric平臺實現了提出的可信數據同步系統(tǒng),實驗結果表明,該數據同步系統(tǒng)安全有效,目前該系統(tǒng)已經實地部署并應用。
無論是最開始的文件與文件同步、物理機與物理機之間的同步,還是服務器與服務器之間的同步,學者對于數據同步的研究從未間斷。隨著物聯(lián)網應用的飛速發(fā)展,跨域邊緣節(jié)點之間的數據同步再次得到越來越多的關注。文獻[6]是文件同步的較早研究,它在2004年討論了文件同步器的正式規(guī)范和參考實現模型?;赗sync的文件同步由Yan[7]等和Gupta, Sagar[8]開發(fā),他們研究的重點是通過提供單循環(huán)消息傳遞技術,而不是多消息傳遞技術來提高Rsync的性能。針對分布在多個設備上的文件同步需求,文獻[9]提出了一種基于云的同步方法,它可以有效同步任意數量的分布式文件系統(tǒng),該方法保持了點對點同步和基于云的主副本方法的優(yōu)點,但是它不假定任何文件數據存儲在云中,解決了容量、成本、安全和隱私問題。此外,以點對點的方式執(zhí)行數據同步,消除了“云主從復制”方法中出現的成本和帶寬問題,但是系統(tǒng)原型并沒有提供實現細節(jié)或評估結果。Fatih作為土耳其最重要的教育項目之一,師生通過教學設備獲取存儲在云服務器上的教育數據,因為網絡帶寬限制、用戶數量和數據流量的劇增導致Fatih性能降低,針對該問題,文獻[10]通過引入代理服務器減少網絡流量和云終端之間的數據傳輸速率,針對代理服務器之間的同步問題,該文獻回顧并比較了SyncML、Rsync和CouchDB等分布式文件同步方法在代理服務器之間應用的可行性,并對SyncML和CouchDB方法在樣本教育數據上的有效性進行了測試。文獻[11]實現了一種名為Granary的分布式存儲系統(tǒng),Granary通過DHT層來存儲文件元數據并具備可信賴的數據共享功能。文獻[12]提出了一種名為RAM的高吞吐量無哈希分塊方法,在CDC中,RAM不使用散列,而使用字節(jié)值聲明切點。針對云存儲用戶設備轉移時,設備數據的自動和連續(xù)地同步和云存儲用戶之間數據共享需求,文獻[13]提出了同步數據協(xié)議及其相關的體系結構,以減少跨設備之間的文件同步時間,確保文件同步的高質量和最小的資源消耗。文獻[14]作為一篇綜述性論文,介紹了文件同步和共享在云存儲科學、教育和研究中的應用,并對云存儲同步理論的研究進行了論述。針對Kettle、Sqoop等開源同步工具將歷史數據、實時增量等數據同步至Hive倉庫過程中存在的操作復雜、延遲高、文件安全性低等問題,文獻[15]搭建了一個異構數據同步系統(tǒng),不僅實現了功能且對大數據同步平臺的建設具有借鑒作用。針對商城與分銷業(yè)務系統(tǒng)間存在的數據同步高成本和不可靠等問題,文獻[16]基于SOA的思想實現了數據同步系統(tǒng)且已被實施應用。針對各級指揮系統(tǒng)的數據同步需求,文獻[17]提出并實現了一種基于Oracle Logminer的數據同步技術,該技術簡便、高效且安全可靠,具備很高的實用價值,但是其只針對不同系統(tǒng)的數據庫表。
去中心化的區(qū)塊鏈由對等方共同維護賬本,通過密碼學等技術確保區(qū)塊鏈上的賬本信息不輕易被對等方篡改,從而為對等節(jié)點建立信任,并利用腳本語言或者智能合約自動執(zhí)行繁雜的邏輯操作,其對解決安全問題具有現實意義。為解決文件同步性能、高可用性、安全性、驗證方便等存在的問題,研究者將數據同步和具有去中心化、可溯源、分布式數據庫特性的區(qū)塊鏈結合,文獻[18]利用區(qū)塊鏈和Rsync算法實現數據同步,直接將文件非匹配數據上傳至區(qū)塊鏈,區(qū)塊鏈節(jié)點下載非匹配數據并進行拼接,最終實現各節(jié)點的數據同步,但由于區(qū)塊存儲數據有限,當文件非匹配數據過大時,區(qū)塊鏈存儲的區(qū)塊過多,導致節(jié)點之間數據同步效率降低、區(qū)塊鏈節(jié)點的存儲壓力和成本提高。文獻[19]提出了一種創(chuàng)新的文件夾和文件同步模型:ChainFileSynch,它涉及一種基于區(qū)塊鏈的快速云存儲文件同步架構、進程和處理算法,該模型充分利用了區(qū)塊鏈的分布式分布和可溯源的特征,與傳統(tǒng)的云同步技術相比,ChainFileSynch提高了云存儲的同步效率和網絡可靠性并提供數據同步一致性驗證。但其同步方式是利用區(qū)塊鏈網絡進行文件的完全覆蓋,當大文件只是修改部分時,進行多節(jié)點的數據同步傳輸大量冗余數據容易造成網絡擁塞。
雖然上述方案實現了數據同步,但有些方案仍存在以下問題:不能實現一對多的數據同步、同步過程中傳輸大量的冗余數據和缺少可信監(jiān)管、無法跨平臺數據同步和無可視化界面進行數據同步的控制和管理等。
隨著物聯(lián)網的快速發(fā)展,邊緣服務在各行各業(yè)快速應用,由邊緣服務產生的服務數據劇增,跨域邊緣節(jié)點之間的數據同步對邊緣服務應用不可或缺。針對傳統(tǒng)數據同步存在無法一對多數據同步、缺乏可信監(jiān)管、安全隱患、無可視化控制界面等問題,基于Rsync算法實現跨域邊緣節(jié)點之間的數據同步,引入區(qū)塊鏈技術為跨域的數據同步提供可信環(huán)境。
基于區(qū)塊鏈和Rsync[20]的數據同步架構由數據同步模塊和溯源模塊組成,其中數據同步模塊的設計是基于跨地域、跨平臺、多邊緣服務器之間的數據同步需求,引入溯源模塊是基于區(qū)塊鏈具備的高安全性、去中心化、可溯源、不可篡改特征,從而實現邊緣服務器之間數據同步的安全透明。基于區(qū)塊鏈和Rsync的同步機制模型架構如圖1所示。
圖1 同步機制模型架構
數據同步模塊主要由同步主節(jié)點和跨多安全域A、B、C的若干同步從節(jié)點組成,其中同步從節(jié)點根據數據發(fā)送端與接收端的不同分為數據同步源端和數據同步終端。數據同步模塊的主要功能是實現跨多安全域的邊緣節(jié)點之間的數據同步。
溯源模塊主要基于Fabric實現,其主要功能是同步主節(jié)點將數據同步信息上傳至數據同步鏈,數據同步源端和數據同步終端在數據同步過程中通過數據同步智能合約將服務接口調用的相關信息存儲上鏈,從而實現從同步主節(jié)點的同步任務發(fā)布、同步過程的服務接口調用到同步任務結束全過程的透明可溯源。
2.1.1 同步主節(jié)點
同步主節(jié)點是數據同步模塊的控制中樞,數據同步模塊中的若干同步從節(jié)點在同步主節(jié)點控制下利用Rsync算法并選定合適的分塊參數實現一對多的跨多安全域數據同步。同步主節(jié)點的功能模塊主要由主節(jié)點控制模塊、通信模塊、區(qū)塊鏈模塊等組成。
主節(jié)點控制模塊:控制同步從節(jié)點進行數據同步操作。
通信模塊:該模塊主要用于同步主節(jié)點和同步從節(jié)點之間的通信。在多對多的數據同步應用場景,針對同步從節(jié)點在短時間內向同步主節(jié)點發(fā)送大量的數據同步請求,導致數據同步系統(tǒng)對數據同步請求處理不及時,最終導致數據同步產生瓶頸、系統(tǒng)資源耗盡的問題,通過在同步主節(jié)點部署消息中間件RabbitMQ將待處理的數據同步請求緩存至消息隊列中,然后同步主節(jié)點再從消息隊列中按照定時響應獲取數據同步請求,控制同步從節(jié)點進行數據同步。采用消息隊列存儲數據同步請求,可避免數據同步系統(tǒng)短時間出現大量數據同步請求的處理瓶頸問題,從而提高數據同步系統(tǒng)的健壯性、穩(wěn)定性和準確性。
區(qū)塊鏈模塊:該模塊主要包括數據同步信息上鏈和服務接口調用日志上鏈,可實現從同步任務發(fā)布、同步服務接口調用到同步任務結束全過程的透明可溯源。在同步主節(jié)點中,區(qū)塊鏈模塊主要實現同步主節(jié)點的同步任務發(fā)布和溯源。
2.1.2 同步從節(jié)點
同步從節(jié)點的功能模塊主要由從節(jié)點控制模塊、通信模塊、區(qū)塊鏈模塊、文件監(jiān)控模塊、數據傳輸模塊等組成。
文件監(jiān)控模塊:該模塊主要用于實時監(jiān)控同步從節(jié)點(數據同步源端)的數據變更(例如監(jiān)控目錄或者文件內容的新建、修改和刪除),并將數據變化的狀態(tài)信息發(fā)送給從節(jié)點控制模塊。
從節(jié)點控制模塊:該模塊根據文件監(jiān)控模塊反饋的數據變化狀態(tài)信息發(fā)送數據同步請求至消息中間件,在主節(jié)點控制模塊的控制下參與一對多的邊緣服務數據同步。
數據傳輸模塊:該模塊主要實現數據同步源端與數據同步終端之間的同步數據傳輸。
區(qū)塊鏈模塊:在數據同步過程中,同步從節(jié)點將服務接口調用日志存儲至上鏈,實現服務接口調用過程的透明和可溯源。
通信模塊:同步從節(jié)點向同步主節(jié)點發(fā)送數據同步請求并存儲至消息中間件RabbitMQ中。
基于區(qū)塊鏈和Rsync的數據同步工作流程主要分為數據預同步和同步兩個階段,其中主要包括同步主節(jié)點發(fā)布一對一或者一對多的數據同步任務、數據同步任務上鏈、數據同步請求存儲至消息隊列、數據同步溯源信息上傳至區(qū)塊鏈等過程。
2.2.1 數據預同步
數據同步源端:本地文件系統(tǒng)發(fā)生數據變更的同步從節(jié)點,數據同步源端需要將變更數據同步至其他的同步從節(jié)點(數據同步終端)。
數據同步終端:本地文件系統(tǒng)需要被數據同步的同步從節(jié)點,在同步主節(jié)點的控制下,同數據同步源端進行數據同步操作并更新本地數據。
數據預同步階段的工作流程如圖2所示。
圖2 數據預同步階段的工作流程
1)同步主節(jié)點通過Eurake 服務注冊與發(fā)現技術搜尋所有的同步從節(jié)點,指定數據同步源端、數據同步終端,通過目錄服務接口調用檢索數據同步源端和數據同步終端的文件目錄,從而指定需要同步和被同步的文件或者目錄,最后發(fā)布一對一或者一對多的數據同步任務。
2)將數據同步任務信息(數據同步任務的ID、數據同步任務的發(fā)布者、同步目錄/文件的監(jiān)控ID、數據同步源端IP、數據同步源端的目錄地址、數據同步源端的文件名、同步終端列表等)上傳至數據同步鏈上。
3)數據同步源端使用Inotify工具實時監(jiān)控本地文件系統(tǒng)中同步的文件或者目錄,監(jiān)控其是否發(fā)生文件或者目錄的新增、刪除或者修改。
4)數據同步源端監(jiān)控的文件或者目錄發(fā)生數據變更。
5)數據同步源端發(fā)送數據同步請求至同步主節(jié)點所部署的RabbitMQ消息中間件進行緩存。
2.2.2 數據同步
基于Rsync 算法將數據同步源端和數據同步終端的數據按照固定長度進行分塊,分別使用Adler-32算法和MD4算法[21]計算數據塊的弱校驗和和強校驗和,數據同步源端通過滑動塊尋找出數據同步源端和數據同步終端的差異數據,然后在數據同步過程中只傳送差異數據和相同數據塊的匹配信息,減少傳統(tǒng)數據同步方式中存在的大量冗余數據傳輸,從而提高網絡資源的利用率。數據同步階段的工作流程如圖3所示。
圖3 數據同步階段的工作流程
1)同步主節(jié)點獲取消息隊列中緩存的數據同步請求,在其控制下數據同步源端和數據同步終端進行數據同步操作。
2)同步主節(jié)點將數據同步命令發(fā)送給數據同步終端。
3)數據同步終端根據數據同步命令中的同步文件在本地文件系統(tǒng)中查詢,并將舊文件Fold按照指定的字節(jié)數進行分塊,分別使用Adler-32算法和MD4算法計算數據塊的弱校驗和和強校驗和,最后將文件的校驗和列表發(fā)送給數據同步源端。
4)數據同步源端通過智能合約將服務接口調用日志(接口調用者的IP、接口被調用者的Url(IP+接口名)、接口調用時間)上傳至數據同步鏈。
5)數據同步源端接收到文件Fold的校驗和列表后,依照強、弱校驗和對接收到的數據進行排序并建立 Hash Table。數據同步源端根據Fold的校驗和列表同新文件Fnew進行數據塊匹配校驗,首先,數據同步源端將Fnew從第1個字節(jié)開始取相同字節(jié)大小的數據塊,同樣分別使用Adler-32算法和MD4算法計算數據塊的弱校驗和與強校驗和,并且和校驗和列表中的校驗和進行匹配。如果2個數據塊的弱校驗和和強校驗和均匹配成功,則該數據塊在數據同步終端存在,從該數據塊的末地址開始下一輪的校驗匹配;如果弱校驗和或者強校驗和匹配不成功,則該數據塊在數據同步終端不存在,從該數據塊首地址的下一個偏移地址的位置開始下一輪的校驗匹配。
6)數據同步源端發(fā)送Fnew和Fold的匹配信息和差異數據給數據同步終端。
7)數據同步終端接收Fnew和Fold的匹配信息和差異數據,并進行文件重組。
8)數據同步終端通過智能合約將服務接口調用日志上傳至數據同步鏈。
數據同步智能合約的結構體主要包括數據同步任務結構體DataSyncTask、數據同步終端列表結構體DataDestinations和接口調用結構體InterfaceCall。
1)DataSyncTask結構體的屬性、數據類型等信息如表1所示。
表1 DataSyncTask結構體
2)DataDestinations結構體的屬性、數據類型等信息如表2所示。
表2 DataDestinations結構體
3)InterfaceCall結構體的屬性、數據類型等信息如表3所示。
表3 InterfaceCall結構體
數據同步智能合約主要具備數據同步任務的鏈上存儲、數據同步任務的鏈上刪除、服務接口調用日志的鏈上存儲、數據同步任務的信息查詢等功能。其智能合約函數如表4所示。
表4 數據同步智能合約接口函數
同步主節(jié)點發(fā)布數據同步任務后,數據同步系統(tǒng)通過Fabric-java-sdk調用數據同步智能合約的dataSyncTaskEnroll()方法進行數據同步信息的存儲上鏈。算法偽代碼如算法1所示。智能合約獲取數據同步任務信息,并對dSTask對象進行屬性賦值。同步任務的ID(task_Id)和數據同步任務對象序列化后的JSON數據存儲在狀態(tài)數據庫中。如果返回的值為空,則表示數據同步信息上鏈成功,否則返回錯誤的消息。
算法1dataSyncTaskEnroll
輸入:task_Id, style, issuer, watch_Id, time_interval, ownHost, path_Name, data_Destinations
輸出:空值
1. if {傳入參數}=""then {
2. return "dataSyncTaskEnroll invalid args"
3. end
5. if len(dSTaskBytes) !=0 then
6. return "dSTask already exist"
7. end
12.if err !=null then
13. return “save dSTask error”
14.end
15.return null
數據同步源端和數據同步終端在同步主節(jié)點的控制下進行跨域邊緣節(jié)點之間的數據同步。數據同步過程涉及微服務之間的接口調用,為了確保服務接口調用過程的安全性和可溯源,通過智能合約的InterfaceCallInfoEnroll()方法將服務接口調用日志存儲上鏈。算法偽代碼如算法2所示,首先在狀態(tài)數據庫中根據數據同步任務的ID進行查詢,如果數據同步任務存在,則將task_Id對應的value值反序列化為dSTask對象,然后將獲取到的服務接口調用日志參數賦值給dSTask的InterfaceCall屬性,最后將dSTask對象重新序列化為JSON格式存儲于狀態(tài)數據庫當中。
算法2InterfaceCallInfoEnroll
輸入:task_Id, sr_Ip, url, time
輸出:空值
1. if {傳入參數}=""then {
2. return "Function invalid args"
3. end
7. if len(dSTaskBytes)=0 then
8. return "dataSyncTask not found"
9. end
12.dSTask.InterfaceCall=append(dSTask.
InterfaceCall, string(InCallBytes))
15.if err !=null then
16. return "save dataSyncTask error"
17.end
18.return null
當邊緣節(jié)點存在惡意數據的傳播行為時,數據同步系統(tǒng)通過Fabric-java-sdk調用數據同步智能合約的querydataSyncTask()方法進行數據同步信息的溯源檢索,其算法偽代碼如下算法3所示,通過智能合約在數據同步鏈上根據數據同步任務的ID從狀態(tài)數據庫中獲取相應的數據同步任務信息。
算法3querydataSyncTask
輸入:task_Id
輸出:dataSyncTaskBytes
1. if task_Id=""then {//驗證參數的正確性
2. return "querydataSyncTask invalid args"
3. end
5. if len(dataSyncTaskBytes)=0 then
6. return "dataSyncTask not found"
7. end
8. return dataSyncTaskBytes
1)數據同步的網絡環(huán)境。數據同步的網絡環(huán)境包括5個Windows服務器,用于模擬數據同步集群之間的數據同步。服務器的相關配置具體參數如表5所示。
表5 硬件參數表
在一臺服務器上部署同步主節(jié)點,安裝配置RabbitMQ,在其他3臺服務器上部署同步從節(jié)點,共同構成數據同步集群,模擬在同步主節(jié)點的控制下同步從節(jié)點之間進行邊緣服務器的數據同步。
2)區(qū)塊鏈的網絡環(huán)境。部署區(qū)塊鏈平臺的服務器、軟件信息的基本參數如表6、7所示。
表6 HyperLedger Fabric部署服務器參數表
表7 軟件信息表
5.2.1 區(qū)塊鏈的性能
用Caliper對Fabric的性能進行測試,在測試過程中,對txNumber分別設置為1 000、5 000、10 000、15 000,txNumber為10 000時,性能測試的結果如表8所示。
表8 Fabric性能表
由表8可知,在open類型中,將數據寫入區(qū)塊鏈,區(qū)塊鏈的吞吐量能夠達到169。在query類型中,從區(qū)塊鏈查詢數據,區(qū)塊鏈的吞吐量能夠達到350。在實際的工程應用中能夠滿足基本的性能要求,并且可以通過提高區(qū)塊鏈節(jié)點的CPU、內存、磁盤等配置來提升區(qū)塊鏈的性能。
5.2.2 數據同步的性能
1)數據的全量同步性能。在相同的網絡環(huán)境中,在一對三的實驗場景下(即數據從一個數據同步源端同步至3個數據同步終端),基于區(qū)塊鏈和Rsync的數據同步(Rsync同步)和基于P2P的文件分發(fā)(BTS-PD同步)[22]進行1、5、10、50、100、200、250、500 MiB等不同文件大小的數據同步,實驗對比結果如圖4所示。
圖4 文件的全量同步對比
由圖4實驗分析可知,當同步的文件小于或者等于250 MiB時,Rsync同步相比于BTS-PD同步更具有優(yōu)勢。當全量同步的文件大小為1 MiB時,BTS-PD同步的時間開銷為12.5 s,而Rsync同步的時間開銷為僅為3 s,其原因是BTS-PD在進行小文件傳輸時,其系統(tǒng)初始化等其它額外開銷占整個傳輸過程的比重過大,即在BTS-PD同步中文件做種、種子分發(fā)和BTS-PD同步應用啟動下載等過程的時間開銷相比于文件傳輸的時間開銷大很多。當全量同步的文件大小為250 MiB時,BTS-PD同步的時間開銷為51.5 s,Rsync同步的時間開銷為47 s左右,其原因是BTS-PD同步隨著應用的啟動,P2P節(jié)點在從其他P2P節(jié)點下載數據的同時也向其他P2P節(jié)點進行數據的分發(fā)共享,以至于BTS-PD同步的下載速度逐漸變大,因此二者的同步時間開銷差距總體呈現逐漸縮小的趨勢。當全量同步的文件大小為500 MiB時,BTS-PD同步在多節(jié)點和大文件的同步中優(yōu)勢較為突出。但本文的研究背景是邊緣節(jié)點之間的可信數據同步,在邊緣節(jié)點的數據同步中更多的是小文件同步,其次邊緣網絡的帶寬資源非常重要,基于BTS-PD同步不能實現數據的增量同步,所以BTS-PD同步在邊緣節(jié)點之間的數據同步存在一定的局限性。
2)數據的增量同步性能。文件夾的增量同步:在一對一的實驗場景下,Rsync同步和BTS-PD同步模擬跨域邊緣節(jié)點之間文件夾的增量同步實驗。首先在數據同步源端將100 KiB、1 MiB、10 MiB、100 MiB、500 MiB、1 GiB等不同大小的文件分別放入6個文件夾中,其次將該文件夾同步至數據同步終端,同步結束后再往上述6個文件夾中分別新增10 KiB的差異文件,然后再從數據同步源端同步至數據同步終端。BTS-PD同步需要將該文件夾(包含2個文件,分別是原有的文件和新增的10 KiB差異文件)重新做成種子文件進行批量數據同步,而Rsync同步實現了文件夾的增量同步,由圖5的對比實驗分析可知,隨著同步的文件夾越來越大,BTS-PD同步和Rsync同步的同步時間開銷差值越來越大,當同步的文件夾為1 GiB時,BTS-PD同步和Rsync同步的同步時間開銷差值能夠達到38 s左右,隨著同步的節(jié)點數越多和發(fā)生文件差異變化的文件夾越大,二者的同步時間開銷差值在一定條件下也會越來越大。
圖5 文件夾的增量同步對比
文件的增量同步:在一對一的實驗場景下,Rsync同步和BTS-PD同步模擬跨域邊緣節(jié)點之間文件的增量同步實驗。首先在數據同步源端將10 MiB、50 MiB、100 MiB、250 MiB和500 MiB等不同大小文件分別同步至數據同步終端,同步結束后再往上述5個文件中分別新增10 KiB的差異文件,然后再從數據同步源端同步至數據同步終端。BTS-PD同步需要將該變化的文件重新做成種子文件同步至數據同步終端,而Rsync同步可以進行文件的增量同步,由圖6的實驗結果分析可知,Rsync同步相比于BTS-PD同步而言,其同步時間開銷更小,最為重要的是Rsync同步只傳文件的匹配信息和差異部分,可減少傳統(tǒng)數據同步中存在的大量冗余數據傳輸問題,提高邊緣網絡中帶寬的利用率。
圖6 文件的增量同步對比
針對跨域邊緣節(jié)點之間的可信數據同步需求,引入去中心化、不可篡改、可溯源的區(qū)塊鏈技術為數據同步提供可信環(huán)境,設計基于區(qū)塊鏈的可信數據同步模型架構;基于Rsync算法實現了跨域的數據同步系統(tǒng),提高了邊緣節(jié)點之間數據同步的效率和邊緣網絡帶寬的利用率;基于區(qū)塊鏈實現數據同步監(jiān)控與溯源,將服務接口調用日志和數據同步信息存儲至區(qū)塊鏈中進行溯源,提高了跨域邊緣節(jié)點之間數據同步的安全性和可靠性;目前該系統(tǒng)已經實地部署并應用。數據同步算法對于數據同步的性能具有重要意義,下一步考慮將同步算法Rsync進行優(yōu)化,提高增量數據同步的效率。將考慮引入基于P2P的數據同步,制定Rsync和P2P相結合的數據同步策略,完善數據同步機制,提高數據同步的效率。