葛光富,姚傳明,夏鑫成,朱立捷,吳 鵬,費(fèi) 超
(中國(guó)電子科技集團(tuán)公司第二十八研究所,江蘇 南京 210007)
伴隨著物聯(lián)網(wǎng)[1]、車(chē)聯(lián)網(wǎng)[2]、船聯(lián)網(wǎng)[3]、飛聯(lián)網(wǎng)[4]等領(lǐng)域的迅猛發(fā)展,邊緣計(jì)算技術(shù)不斷取得突破,各類(lèi)云業(yè)務(wù)延展至邊緣,提高了信息系統(tǒng)規(guī)模及其復(fù)雜度,為邊緣環(huán)境的數(shù)據(jù)組織運(yùn)用帶來(lái)了挑戰(zhàn)。
綜合考慮軍民用市場(chǎng),邊緣環(huán)境下有著大量的信息設(shè)備用于搭建各中小型信息系統(tǒng),但這些設(shè)備的軟硬件資源參差不齊、性能不一,有些甚至較差,其中,終端設(shè)備的問(wèn)題尤為突出,受限的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)資源會(huì)約束各地能夠集成部署使用的信息服務(wù)。為給各類(lèi)終端設(shè)備帶來(lái)更多且質(zhì)量有保證的信息服務(wù),可通過(guò)集約利用邊緣環(huán)境中如機(jī)動(dòng)車(chē)輛、船舶、飛機(jī)等的服務(wù)器類(lèi)型設(shè)備資源構(gòu)建邊緣云,引接“云”的信息服務(wù)能力向網(wǎng)絡(luò)邊緣延伸,并就近向“端”提供“云”“邊”信息服務(wù)。進(jìn)一步,能夠滿(mǎn)足高機(jī)動(dòng)場(chǎng)景運(yùn)用需求,確保邊緣云內(nèi)各服務(wù)節(jié)點(diǎn)上任意相同信息服務(wù)使用數(shù)據(jù)的實(shí)時(shí)一致性,支撐各類(lèi)終端設(shè)備適地就近接入邊緣云享用“云”“邊”信息服務(wù),以開(kāi)展有關(guān)業(yè)務(wù),并兼顧提高資源利用效率和系統(tǒng)可用性??蓱?yīng)用于邊緣環(huán)境高機(jī)動(dòng)條件下的邊緣云內(nèi)數(shù)據(jù)同步技術(shù)成為信息系統(tǒng)軟件服務(wù)平臺(tái)統(tǒng)籌規(guī)劃中的必要考慮因素。
目前暫未有針對(duì)邊緣環(huán)境高機(jī)動(dòng)條件下邊緣云內(nèi)的數(shù)據(jù)同步方法,故統(tǒng)籌設(shè)計(jì)機(jī)動(dòng)通信網(wǎng)絡(luò)條件下邊緣云的云內(nèi)數(shù)據(jù),使其有序同步一致,支撐物理分布邊緣云數(shù)據(jù)、服務(wù)等資源的弱連接下高可用,以杜絕因邊緣云的各服務(wù)節(jié)點(diǎn)上任意相同信息服務(wù)基于數(shù)據(jù)的不一致等帶來(lái)的終端應(yīng)用“云”“邊”信息服務(wù)風(fēng)險(xiǎn),已成為當(dāng)前信息系統(tǒng)建設(shè)所急需。
邊緣云本質(zhì)上是分布在網(wǎng)絡(luò)邊緣側(cè),提供實(shí)時(shí)數(shù)據(jù)處理、分析決策的小規(guī)模云數(shù)據(jù)中心,是由大規(guī)模地域分散的邊緣云節(jié)點(diǎn)相互協(xié)同組成的分布式云。邊緣云與中心云和物聯(lián)網(wǎng)終端形成“云、邊、端三體協(xié)同”的端到端的技術(shù)架構(gòu),通過(guò)將網(wǎng)絡(luò)轉(zhuǎn)發(fā)、存儲(chǔ)、計(jì)算,智能化數(shù)據(jù)分析等工作放在邊緣處理,降低響應(yīng)時(shí)延、減輕云端壓力、降低帶寬成本[5]。
邊緣云的發(fā)展歷程如圖1 所示。1998 年Akamai公司提出了內(nèi)容分發(fā)網(wǎng)絡(luò)[6](Content Delivery Network,CDN),它是一種基于互聯(lián)網(wǎng)的緩存網(wǎng)絡(luò),其體現(xiàn)了邊緣計(jì)算的基本思想“功能緩存”。2009 年,Satyanarayanan 等人提出了Cloudle[7]的概念,它是一個(gè)可信且資源豐富的主機(jī),部署在網(wǎng)絡(luò)邊緣且與互聯(lián)網(wǎng)連接[8],可以被移動(dòng)設(shè)備訪(fǎng)問(wèn)并為移動(dòng)設(shè)備提供服務(wù)。2013 年,美國(guó)太平洋西北國(guó)家實(shí)驗(yàn)室Ryan LaMothe 提出了“edge computing[9]”一詞,這是邊緣計(jì)算首次被提出。2018 年,《邊緣云計(jì)算技術(shù)及標(biāo)準(zhǔn)化白皮書(shū)》正式發(fā)布,逐漸明晰邊緣云計(jì)算概念定義。邊緣云[10-11]在許多領(lǐng)域應(yīng)用較為廣泛,其中面向特定領(lǐng)域的邊緣云在智慧醫(yī)療[12]、云游戲、工業(yè)互聯(lián)網(wǎng)等領(lǐng)域發(fā)展迅速。
圖1 邊緣云發(fā)展歷程
目前,已有諸多云服務(wù)提供商打造出了邊緣云產(chǎn)品,如騰訊云物聯(lián)網(wǎng)邊緣計(jì)算平臺(tái)(IoT Edge Compting Platform,IECP)、阿里云IoT Link Rack、百度云智能邊緣(Baidu IntelliEdge,BIE)、浪潮云行·邊緣云(ICP Edge Cloud,IEC)等。這些邊緣云產(chǎn)品多用于固定有線(xiàn)互聯(lián)通信環(huán)境,不能很好地適用于高機(jī)動(dòng)無(wú)線(xiàn)通信環(huán)境。因此,面向高機(jī)動(dòng)環(huán)境的邊緣云一系列技術(shù)亟待突破,包括邊緣云內(nèi)多節(jié)點(diǎn)數(shù)據(jù)并發(fā)有序同步有關(guān)技術(shù)。
邊緣云內(nèi)數(shù)據(jù)同步系統(tǒng)模型中,當(dāng)多節(jié)點(diǎn)邊緣云內(nèi)任意節(jié)點(diǎn)的數(shù)據(jù)有源自本地的增量變化時(shí),寫(xiě)入本節(jié)點(diǎn)自增量數(shù)據(jù)記錄表,對(duì)照本節(jié)點(diǎn)自增量數(shù)據(jù)同步最近記錄,列出本節(jié)點(diǎn)同步向云內(nèi)數(shù)據(jù)增量要求。據(jù)此,將同步向云內(nèi)對(duì)應(yīng)節(jié)點(diǎn)的所有增量數(shù)據(jù)條目按時(shí)序插入對(duì)應(yīng)節(jié)點(diǎn)的同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列;之后,對(duì)應(yīng)節(jié)點(diǎn)的同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列依序分別將若干項(xiàng)增量數(shù)據(jù)條目打包成數(shù)據(jù)增量同步要求,并送達(dá)云內(nèi)對(duì)應(yīng)節(jié)點(diǎn)。當(dāng)邊緣云內(nèi)其他節(jié)點(diǎn)收到數(shù)據(jù)增量同步要求時(shí),向發(fā)送方節(jié)點(diǎn)回復(fù)已接收,并將數(shù)據(jù)增量同步要求的所有增量數(shù)據(jù)條目按時(shí)序插入本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列。之后,本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列的每項(xiàng)增量數(shù)據(jù)條目依次與本節(jié)點(diǎn)全增量數(shù)據(jù)記錄表比對(duì),決策相應(yīng)條目數(shù)據(jù)是否本節(jié)點(diǎn)所需寫(xiě)入的增量,如果是,則寫(xiě)入相應(yīng)本地?cái)?shù)據(jù)庫(kù)或數(shù)據(jù)文件,以支持完成本節(jié)點(diǎn)數(shù)據(jù)與云內(nèi)的同步一致。系統(tǒng)模型如圖2 所示。
該系統(tǒng)模型中,節(jié)點(diǎn)是邊緣云中能被分配任務(wù)執(zhí)行的服務(wù)節(jié)點(diǎn)[13]個(gè)體;網(wǎng)絡(luò)是邊緣云內(nèi)節(jié)點(diǎn)間通信所在網(wǎng)絡(luò)[14],主要以無(wú)線(xiàn)方式連接,且遵循IP通信標(biāo)準(zhǔn)。各節(jié)點(diǎn)集成部署邊緣云內(nèi)數(shù)據(jù)同步模塊,用于節(jié)點(diǎn)數(shù)據(jù)增量記錄的存儲(chǔ)和查詢(xún),本節(jié)點(diǎn)自增量數(shù)據(jù)發(fā)現(xiàn)、云內(nèi)分發(fā),以及云內(nèi)增量數(shù)據(jù)的接收、同步。
當(dāng)多節(jié)點(diǎn)邊緣云內(nèi)任意節(jié)點(diǎn)的數(shù)據(jù)有源自本地的增量變化時(shí),將增量數(shù)據(jù)寫(xiě)入本節(jié)點(diǎn)自增量數(shù)據(jù)記錄表,更新節(jié)點(diǎn)自增量同步云內(nèi)隊(duì)列;根據(jù)節(jié)點(diǎn)自增量同步云內(nèi)隊(duì)列,分別向邊緣云內(nèi)對(duì)應(yīng)節(jié)點(diǎn)依次分包發(fā)送數(shù)據(jù)增量同步要求。
當(dāng)多節(jié)點(diǎn)邊緣云內(nèi)其他節(jié)點(diǎn)收到數(shù)據(jù)增量同步要求時(shí),將數(shù)據(jù)增量同步要求按時(shí)序插入本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列;之后本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列依次與本節(jié)點(diǎn)全增量數(shù)據(jù)記錄表比對(duì),將本節(jié)點(diǎn)所需云同步增量寫(xiě)入本地?cái)?shù)據(jù)庫(kù)或數(shù)據(jù)文件,以實(shí)現(xiàn)本節(jié)點(diǎn)數(shù)據(jù)與云內(nèi)數(shù)據(jù)的同步。
上述系統(tǒng)模型考慮了高機(jī)動(dòng)條件下邊緣云內(nèi)數(shù)據(jù)庫(kù)、文件數(shù)據(jù)的節(jié)點(diǎn)間同步,然而暫未有針對(duì)該場(chǎng)景下邊緣云內(nèi)數(shù)據(jù)的節(jié)點(diǎn)間有序同步的方法。因此,針對(duì)該問(wèn)題,本文提出一種面向高機(jī)動(dòng)環(huán)境的邊緣云內(nèi)數(shù)據(jù)同步方法。
面向高機(jī)動(dòng)環(huán)境的邊緣云內(nèi)數(shù)據(jù)同步方法包括節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)現(xiàn)和云內(nèi)數(shù)據(jù)增量同步兩個(gè)階段,具體如下文所述。
當(dāng)多節(jié)點(diǎn)邊緣云內(nèi)任意節(jié)點(diǎn)的數(shù)據(jù)有源自本地的增量變化時(shí),寫(xiě)入本節(jié)點(diǎn)自增量數(shù)據(jù)記錄表,對(duì)照本節(jié)點(diǎn)自增量數(shù)據(jù)同步最近記錄,列出本節(jié)點(diǎn)同步向云內(nèi)數(shù)據(jù)增量要求。據(jù)此,將同步向云內(nèi)對(duì)應(yīng)節(jié)點(diǎn)的所有增量數(shù)據(jù)條目,按時(shí)序插入對(duì)應(yīng)節(jié)點(diǎn)的同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列;之后,對(duì)應(yīng)節(jié)點(diǎn)的同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列依序分別將若干項(xiàng)增量數(shù)據(jù)條目打包成數(shù)據(jù)增量同步要求,并送達(dá)云內(nèi)對(duì)應(yīng)節(jié)點(diǎn)。節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)現(xiàn)過(guò)程如圖3 所示。
圖3 節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)現(xiàn)的過(guò)程
節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)現(xiàn)包括節(jié)點(diǎn)數(shù)據(jù)自增量日志記錄、節(jié)點(diǎn)自增量同步云內(nèi)要求列出、節(jié)點(diǎn)自增量同步云內(nèi)隊(duì)列更新、節(jié)點(diǎn)自增量同步云內(nèi)分包送達(dá)4 個(gè)階段。
3.1.1 節(jié)點(diǎn)數(shù)據(jù)自增量日志記錄
當(dāng)多節(jié)點(diǎn)邊緣云內(nèi)任意節(jié)點(diǎn)的數(shù)據(jù)有源自本地的增量變化時(shí),即有本地服務(wù)應(yīng)用系統(tǒng)更改本節(jié)點(diǎn)管理數(shù)據(jù)庫(kù)、數(shù)據(jù)文件的數(shù)據(jù),則將節(jié)點(diǎn)數(shù)據(jù)自增量日志(tSelfAdd,DataSelfAddExCode),包括本節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)生時(shí)刻、執(zhí)行代碼信息,添加到本節(jié)點(diǎn)自增量數(shù)據(jù)記錄表,該過(guò)程表示如下:
式中:tSelfAdd為本節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)生時(shí)刻;DataSlfAddExCode為本節(jié)點(diǎn)數(shù)據(jù)自增量執(zhí)行代碼,其涵蓋寫(xiě)入數(shù)據(jù)庫(kù)、數(shù)據(jù)文件路徑,執(zhí)行增加、刪除或修改的數(shù)據(jù)內(nèi)容;DataSelfAddRcdTab為本節(jié)點(diǎn)自增量數(shù)據(jù)記錄表,其中按時(shí)序記錄本節(jié)點(diǎn)數(shù)據(jù)自增量的發(fā)生時(shí)刻及對(duì)應(yīng)的執(zhí)行代碼。
3.1.2 節(jié)點(diǎn)自增量同步云內(nèi)要求列出
對(duì)照本節(jié)點(diǎn)自增量數(shù)據(jù)同步最近時(shí)刻記錄表,LastSyncToRcd列出本節(jié)點(diǎn)同步向云內(nèi)數(shù)據(jù)增量要求單如下:
式中:iNode為邊緣云內(nèi)節(jié)點(diǎn)編號(hào),范圍為[1,N],其中N表示邊緣云內(nèi)節(jié)點(diǎn)總數(shù)量;LastSyncToTimeiNode為本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)的同步數(shù)據(jù)最近時(shí)刻,即本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)同步數(shù)據(jù)的最近一次同步成功的時(shí)刻;LastSyncToRcd為本節(jié)點(diǎn)自增量數(shù)據(jù)同步最近時(shí)刻記錄表;SyncToRqList為本節(jié)點(diǎn)同步向云內(nèi)數(shù)據(jù)增量要求單,即要求本節(jié)點(diǎn)向邊緣云內(nèi)對(duì)應(yīng)的iNode個(gè)節(jié)點(diǎn)同步LastSyncToTimeiNode之后的數(shù)據(jù)增量。
3.1.3 節(jié)點(diǎn)自增量同步云內(nèi)隊(duì)列更新
按照本節(jié)點(diǎn)同步向云內(nèi)數(shù)據(jù)增量要求單SyncToRqList,根據(jù)節(jié)點(diǎn)順序依次更新本節(jié)點(diǎn)同步向云內(nèi)其他各節(jié)點(diǎn)的數(shù)據(jù)增量發(fā)送隊(duì)列,其過(guò)程如圖4 所示。
圖4 節(jié)點(diǎn)自增量同步云內(nèi)隊(duì)列更新的過(guò)程
節(jié)點(diǎn)自增量同步云內(nèi)隊(duì)列更新的具體步驟為:
(1)同步其他節(jié)點(diǎn)數(shù)據(jù)增量首條查找。逆時(shí)序遍歷本節(jié)點(diǎn)自增量數(shù)據(jù)記錄表DataSelfAddRcdTab,從中找到最后一條本節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)生時(shí)刻tSelfAdd大于LastSyncToTimeiNode(本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)同步數(shù)據(jù)的最近時(shí)刻)的記錄,即為本節(jié)點(diǎn)向邊緣云第iNode(從iNode=1 開(kāi)始)個(gè)節(jié)點(diǎn)的首條增量數(shù)據(jù)條目。
(2)同步其他節(jié)點(diǎn)數(shù)據(jù)增量隊(duì)列更新。將本節(jié)點(diǎn)自增量數(shù)據(jù)記錄表DataSelfAddRcdTab中,從同步其他節(jié)點(diǎn)數(shù)據(jù)增量首條開(kāi)始的所有記錄,按時(shí)序追加到對(duì)應(yīng)的第iNode(從iNode=1 開(kāi)始)個(gè)節(jié)點(diǎn)的同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列,該過(guò)程表示如下:
式中:iNode為邊緣云內(nèi)節(jié)點(diǎn)編號(hào),范圍為[1,N],其中N表示邊緣云內(nèi)節(jié)點(diǎn)總數(shù)量;LastSyncToTimeiNode為本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)同步數(shù)據(jù)最近時(shí)刻;tSel為同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)生時(shí)刻;DataSelExCode為同步向云內(nèi)節(jié)點(diǎn)自增量執(zhí)行代碼;DataSyncSndQueiNode為同步向云內(nèi)第iNode個(gè)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列,包括同步向云內(nèi)第iNode個(gè)節(jié)點(diǎn)的按時(shí)序存入數(shù)據(jù)自增量的發(fā)生時(shí)刻及對(duì)應(yīng)的執(zhí)行代碼。
(3)轉(zhuǎn)到下一個(gè)同步其他節(jié)點(diǎn),重復(fù)步驟1和步驟2,直至iNode=N結(jié)束。
3.1.4 節(jié)點(diǎn)自增量同步云內(nèi)分包送達(dá)
將本節(jié)點(diǎn)自增量同步云內(nèi)其他各節(jié)點(diǎn)的數(shù)據(jù)增量依次分包送達(dá)云內(nèi)對(duì)應(yīng)節(jié)點(diǎn),其過(guò)程如圖5 所示。
圖5 節(jié)點(diǎn)自增量同步云內(nèi)分包送達(dá)的過(guò)程
節(jié)點(diǎn)自增量同步云內(nèi)分包送達(dá)的具體步驟如下文所述。
(1)同步其他節(jié)點(diǎn)數(shù)據(jù)增量等待。等待直至同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列DataSyncSndQueiNode不為空,即存在待送達(dá)云內(nèi)對(duì)應(yīng)第iNode個(gè)節(jié)點(diǎn)的數(shù)據(jù)增量,轉(zhuǎn)至步驟2。
(2)同步其他節(jié)點(diǎn)數(shù)據(jù)增量分包。在同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列DataSyncSndQueiNode中,按照時(shí)序且不超過(guò)數(shù)據(jù)增量同步要求包正文大小上限D(zhuǎn)ataSyncSndPackSizemax,選取若干項(xiàng)增量數(shù)據(jù)條目分別打包成數(shù)據(jù)增量同步要求,具體如下:
式中:iNode為邊緣云內(nèi)節(jié)點(diǎn)編號(hào),范圍為[1,N],其中,N表示邊緣云內(nèi)節(jié)點(diǎn)總數(shù)量;LastSyncToTimeiNode為本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)同步數(shù)據(jù)最近時(shí)刻;WaitSyncToTimeiNode為本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)的待同步數(shù)據(jù)最近時(shí)刻,即本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)發(fā)起準(zhǔn)備同步數(shù)據(jù)的最近一次的時(shí)刻;tSnd為送達(dá)云內(nèi)節(jié)點(diǎn)數(shù)據(jù)自增量發(fā)生時(shí)刻;DataSndExCode為送達(dá)云內(nèi)節(jié)點(diǎn)自增量執(zhí)行代碼;DataSyncSndPackiNode為送達(dá)云內(nèi)第iNode個(gè)節(jié)點(diǎn)的數(shù)據(jù)增量同步要求,包括送達(dá)云內(nèi)第iNode個(gè)節(jié)點(diǎn)的按時(shí)序存入數(shù)據(jù)自增量的發(fā)生時(shí)刻及對(duì)應(yīng)的執(zhí)行代碼。
(3)同步其他節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送。將數(shù)據(jù)增量同步要求DataSyncSndPackiNode發(fā)送至云內(nèi)第iNode個(gè)節(jié)點(diǎn),其中要求接收方做接收確認(rèn)回復(fù)。
(4)同步其他節(jié)點(diǎn)數(shù)據(jù)增量接收應(yīng)答。邊緣云內(nèi)第iNode個(gè)節(jié)點(diǎn)收到數(shù)據(jù)增量同步要求DataSyncSndPackiNode時(shí),向發(fā)送方節(jié)點(diǎn)回復(fù)數(shù)據(jù)增量同步要求已接收確認(rèn)消息,消息內(nèi)容包括已接收確認(rèn)的報(bào)文序列號(hào)。
(5)同步其他節(jié)點(diǎn)數(shù)據(jù)增量記錄更新。當(dāng)本節(jié)點(diǎn)收到數(shù)據(jù)增量同步要求接收方(即云內(nèi)第iNode個(gè)節(jié)點(diǎn))回復(fù)的數(shù)據(jù)增量同步要求已接收確認(rèn)消息時(shí),在本節(jié)點(diǎn)自增量數(shù)據(jù)同步最近時(shí)刻記錄表LastSyncToRcd中更新本節(jié)點(diǎn)向邊緣云第iNode個(gè)節(jié)點(diǎn)同步數(shù)據(jù)最近時(shí)刻LastSyncToTimeiNode。
(6)當(dāng)同步向云內(nèi)節(jié)點(diǎn)數(shù)據(jù)增量發(fā)送隊(duì)列DataSyncSndQueiNode不為空時(shí),重復(fù)步驟(2)至步驟(5),否則轉(zhuǎn)至步驟(1)。
當(dāng)邊緣云內(nèi)其他節(jié)點(diǎn)收到數(shù)據(jù)增量同步要求時(shí),向發(fā)送方節(jié)點(diǎn)回復(fù)已接收,將數(shù)據(jù)增量同步要求的所有增量數(shù)據(jù)條目按時(shí)序插入本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列。之后,本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列的每項(xiàng)增量數(shù)據(jù)條目依次與本節(jié)點(diǎn)全增量數(shù)據(jù)記錄表比對(duì),決策相應(yīng)條目數(shù)據(jù)是否是本節(jié)點(diǎn)所需要寫(xiě)入的增量,如果是,則寫(xiě)入相應(yīng)本地?cái)?shù)據(jù)庫(kù)或數(shù)據(jù)文件,以實(shí)現(xiàn)本節(jié)點(diǎn)數(shù)據(jù)與云內(nèi)的同步一致。云內(nèi)數(shù)據(jù)增量同步過(guò)程如圖6 所示。
圖6 云內(nèi)數(shù)據(jù)增量同步的過(guò)程
云內(nèi)數(shù)據(jù)增量同步包括同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列更新、同步自云內(nèi)數(shù)據(jù)增量按需寫(xiě)入同步兩個(gè)階段。具體介紹如下:
(1)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列更新。當(dāng)邊緣云內(nèi)第iNode個(gè)節(jié)點(diǎn)收到數(shù)據(jù)增量同步要求DataSyncSndPackiNode時(shí),在向發(fā)送方節(jié)點(diǎn)回復(fù)數(shù)據(jù)增量同步要求已接收確認(rèn)消息的同時(shí),將收到的數(shù)據(jù)增量同步要求DataSyncSndPackiNode的所有增量數(shù)據(jù)條目按時(shí)序插入相應(yīng)本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列,該過(guò)程表示如下:
式中:LastSyncExTime為本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量最近執(zhí)行時(shí)刻;tEx為本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量執(zhí)行時(shí)刻;DataRcvExCode為本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量執(zhí)行代碼;DataSyncRcvQue為本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列,包括本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量按時(shí)序的執(zhí)行時(shí)刻及對(duì)應(yīng)的執(zhí)行代碼。
(2)同步自云內(nèi)數(shù)據(jù)增量按需寫(xiě)入同步。本節(jié)點(diǎn)同步自云內(nèi)數(shù)據(jù)增量處理隊(duì)列DataSyncRcvQue的每項(xiàng)增量數(shù)據(jù)條目(tEx,DataRcvExCode)依次與本節(jié)點(diǎn)全增量數(shù)據(jù)記錄表DataAllAddRcdTab中所有已增量數(shù)據(jù)條目比對(duì),如果未查找到,則表明對(duì)應(yīng)條目增量數(shù)據(jù)是本節(jié)點(diǎn)所需寫(xiě)入的增量,將其相應(yīng)寫(xiě)入本地?cái)?shù)據(jù)庫(kù)或數(shù)據(jù)文件,并將對(duì)應(yīng)增量數(shù)據(jù)條目按時(shí)序插入更新本節(jié)點(diǎn)全增量數(shù)據(jù)記錄表,該過(guò)程表示如下:
式中:tAllAdd為本節(jié)點(diǎn)數(shù)據(jù)全增量發(fā)生時(shí)刻;DataAllAddExCode為本節(jié)點(diǎn)數(shù)據(jù)全增量執(zhí)行代碼;DataAllAddRcdTab為本節(jié)點(diǎn)全增量數(shù)據(jù)記錄表,其中按時(shí)序記錄本節(jié)點(diǎn)數(shù)據(jù)全增量的發(fā)生時(shí)刻及對(duì)應(yīng)的執(zhí)行代碼。
按照本文方法使用C++語(yǔ)言編寫(xiě)邊緣云內(nèi)數(shù)據(jù)同步程序,結(jié)合運(yùn)用邊緣云聚云散軟件[15],并在不同外部無(wú)線(xiàn)通信帶寬環(huán)境下對(duì)其進(jìn)行數(shù)據(jù)同步仿真模擬性能試驗(yàn)。分別在環(huán)境無(wú)線(xiàn)帶寬為2 Mbit/s、8 Mbit/s、100 Mbit/s、1 000 Mbit/s 的情況下,依次仿真模擬邊緣云內(nèi)數(shù)據(jù)同步并設(shè)定帶寬可用率為0.5,增量同步數(shù)據(jù)長(zhǎng)度為1 000 字節(jié),邊緣云內(nèi)節(jié)點(diǎn)數(shù)為10 個(gè)。同時(shí),IP 協(xié)議頭長(zhǎng)度為20 字節(jié),UDP 報(bào)文頭長(zhǎng)度為8 字節(jié),報(bào)文序列號(hào)字段、增量同步數(shù)據(jù)長(zhǎng)度字段、報(bào)文確認(rèn)號(hào)字段的長(zhǎng)度均為4 字節(jié)。進(jìn)而可得,增量同步數(shù)據(jù)發(fā)送報(bào)大小=20+8+4+4+1 000=1 036 字節(jié),增量同步數(shù)據(jù)接收確認(rèn)報(bào)大小=20+8+4=32 字節(jié);增量數(shù)據(jù)同步發(fā)送報(bào)傳輸用時(shí)=(增量同步數(shù)據(jù)發(fā)送報(bào)大小×8 bit)÷(環(huán)境無(wú)線(xiàn)帶寬×帶寬可用率×1 048 576 bit)×1 000 000 μs,增量同步數(shù)據(jù)接收確認(rèn)報(bào)傳輸用時(shí)=(增量同步數(shù)據(jù)接收確認(rèn)報(bào)大小×8 bit)÷(環(huán)境無(wú)線(xiàn)帶寬×帶寬可用率×1 048 576 bit)×1 000 000 μs;邊緣云內(nèi)數(shù)據(jù)同步用時(shí)=(增量數(shù)據(jù)同步發(fā)送報(bào)傳輸用時(shí)+增量同步數(shù)據(jù)接收確認(rèn)報(bào)傳輸用時(shí));邊緣云可增量同步數(shù)據(jù)量=(環(huán)境無(wú)線(xiàn)帶寬×帶寬可用率×1 048 576 bit)÷(8×(邊緣云內(nèi)節(jié)點(diǎn)數(shù)-1))-(增量同步數(shù)據(jù)接收確認(rèn)報(bào)大小+增量同步數(shù)據(jù)發(fā)送報(bào)大小-增量同步數(shù)據(jù)長(zhǎng)度)字節(jié)/s。具體數(shù)據(jù)及仿真試驗(yàn)結(jié)果如表1 所示。邊緣云內(nèi)數(shù)據(jù)同步的過(guò)程中,本地計(jì)算時(shí)間包括增量同步數(shù)據(jù)發(fā)送報(bào)、增量同步數(shù)據(jù)接收確認(rèn)報(bào)的封裝發(fā)送、接收解析時(shí)間,可忽略不計(jì)。
表1 仿真參數(shù)設(shè)置與仿真結(jié)果
由仿真結(jié)果可知,在環(huán)境無(wú)線(xiàn)帶寬為2 Mbit/s、8 Mbit/s、100 Mbit/s、1 000 Mbit/s 的條件下,邊緣云內(nèi)數(shù)據(jù)同步為8 148.19 μs、2 037.05 μs、162.96 μs、16.30 μs,邊緣云可增量同步數(shù)據(jù)量對(duì)應(yīng)為14 495 字節(jié)/s、58 186 字節(jié)/s、728 109 字節(jié)/s、7 281 709 字節(jié)/s。因此,本系統(tǒng)可以適配各種帶寬條件,極速、便捷完成千數(shù)量級(jí)以上字節(jié)數(shù)據(jù)的邊緣云內(nèi)同步,并且既可以支持邊緣云內(nèi)數(shù)據(jù)的節(jié)點(diǎn)間動(dòng)態(tài)高可用同步,又可以實(shí)現(xiàn)邊緣云內(nèi)數(shù)據(jù)同步面向高機(jī)動(dòng)環(huán)境的場(chǎng)景運(yùn)用,應(yīng)用的范圍更加廣泛且有助于提高系統(tǒng)邊緣服務(wù)的穩(wěn)定性及效能。此外,如圖7 所示,本文方法可支持通過(guò)邊緣信息基礎(chǔ)設(shè)施平臺(tái)[16]監(jiān)視邊緣云內(nèi)數(shù)據(jù)同步的狀態(tài),能夠?yàn)樯蠈有畔⒎?wù)系統(tǒng)實(shí)時(shí)掌握其節(jié)點(diǎn)間數(shù)據(jù)同步的狀況提供依據(jù)。
圖7 邊緣云內(nèi)數(shù)據(jù)同步
本文研究了運(yùn)用機(jī)動(dòng)弱連接通信條件下的多節(jié)點(diǎn)并發(fā)有序同步技術(shù),提出了面向高機(jī)動(dòng)環(huán)境的邊緣云內(nèi)數(shù)據(jù)同步系統(tǒng)。本文所提系統(tǒng)在邊緣環(huán)境高機(jī)動(dòng)條件下,可隨多節(jié)點(diǎn)邊緣云內(nèi)任意節(jié)點(diǎn)源自本地的數(shù)據(jù)增量變化,將增量數(shù)據(jù)條目依序分包送達(dá)云內(nèi)其他節(jié)點(diǎn)執(zhí)行同步寫(xiě)入,以完成邊緣云內(nèi)各節(jié)點(diǎn)數(shù)據(jù)的實(shí)時(shí)同步一致。本文所提系統(tǒng)使用方法不但支持邊緣云內(nèi)數(shù)據(jù)的節(jié)點(diǎn)間動(dòng)態(tài)高可用同步,而且可以實(shí)現(xiàn)邊緣云內(nèi)數(shù)據(jù)同步面向高機(jī)動(dòng)環(huán)境的場(chǎng)景運(yùn)用,可支撐邊緣云平臺(tái)環(huán)境確保邊緣云內(nèi)各服務(wù)節(jié)點(diǎn)上任意相同信息服務(wù)基于數(shù)據(jù)的實(shí)時(shí)一致性,為各類(lèi)終端設(shè)備隨遇享用“云”“邊”數(shù)據(jù)、信息、服務(wù)資源,提供邊緣云內(nèi)“數(shù)據(jù)一致”增效劑,可支撐機(jī)動(dòng)車(chē)輛、船舶、飛機(jī)等業(yè)務(wù)信息系統(tǒng)的隨遇連接并訪(fǎng)問(wèn)使用邊緣云上的數(shù)據(jù),有助于提高系統(tǒng)邊緣服務(wù)的穩(wěn)定性及效能。