隨著信息技術(shù)的飛速發(fā)展,大數(shù)據(jù)時代的到來,對數(shù)據(jù)傳輸效率及處理能力的需求不斷增長。尤其是對于海量數(shù)據(jù)終端,周期性進行數(shù)據(jù)上報時,某一時點對網(wǎng)絡、I/O、內(nèi)存、計算能力等施加了巨大的壓力,而此種業(yè)務場景在物聯(lián)網(wǎng)領(lǐng)域中應用尤為常見。物聯(lián)網(wǎng)通過各種傳感器技術(shù)、各種通信手段,將任何物體與互聯(lián)網(wǎng)相連接,從而實現(xiàn)了遠程監(jiān)視、自動報警、控制、診斷和維護,幫助人們實現(xiàn)管理、控制與運營,隨著各行各業(yè)應用的發(fā)展,每秒鐘物聯(lián)網(wǎng)上都會產(chǎn)生海量的數(shù)據(jù)。因此會涉及大量數(shù)據(jù)周期性上報問題,有鑒于此,研究如何降低海量數(shù)據(jù)周期性上報對網(wǎng)絡、I/O、內(nèi)存、計算能力的要求,具有重要的意義。
一個典型的物聯(lián)網(wǎng)架構(gòu)的分層模型基本都是:感知層、網(wǎng)絡層、服務層。
感知層主要指分布在前端的各種傳感設備和數(shù)據(jù)采集設備、數(shù)據(jù)采集單元(Colletion Unit,簡稱CU),主要完成數(shù)據(jù)采集功能;網(wǎng)絡層主要指數(shù)據(jù)傳輸通道,用于將數(shù)據(jù)采集單元采集到的數(shù)據(jù),通過特定的數(shù)據(jù)格式,發(fā)送回中心服務單元(Service Unit,簡稱SU),做好后臺進行數(shù)據(jù)分析的準備;目前主流的傳輸通道主要有GPRS/EDGE/3G /4G/NB-IoT/LoRa/Sigfox/RPMA/Ethernet/Fiber等;服務層主要指后臺的數(shù)據(jù)分析平臺和業(yè)務分析應用;根據(jù)業(yè)務類型和要求,將回傳的數(shù)據(jù)進行整合、處理、挖掘;給出基于不同業(yè)務領(lǐng)域的各種分析報告、應用管理等,服務層有時又分為平臺服務層和應用服務層。
典型的物聯(lián)網(wǎng)架構(gòu)的分層模型示意圖如圖1所示。
圖1 典型的物聯(lián)網(wǎng)架構(gòu)示意
在經(jīng)典的物聯(lián)網(wǎng)架構(gòu)下,采集單元采集數(shù)據(jù)后,需要定期向服務單元上報數(shù)據(jù),即周期性將數(shù)據(jù)進行上報。假定上報當日零時時間戳為T0,當前上報批次為n,則:
采集單元在Tn時上報數(shù)據(jù),p為數(shù)據(jù)上報的周期(秒)。
如若采用現(xiàn)有的技術(shù)方案,那么假定一個數(shù)據(jù)傳輸系統(tǒng)中有2 000個數(shù)據(jù)采集單元,每個采集單元有8 KB的上報數(shù)據(jù),則數(shù)據(jù)上報點對網(wǎng)絡帶寬的要求如下:
在實際應用中,海量數(shù)據(jù)終端的采集單元可能遠高于2 000個,隨著采集單元數(shù)量的增加,帶寬要求呈線性方式增長。由此可見,采用現(xiàn)有的技術(shù)方法周期性上報數(shù)據(jù),瞬時并發(fā)的數(shù)據(jù)流帶來傳輸?shù)母叻澹瑢W(wǎng)絡帶寬、I/O帶寬、I/O讀寫等待時間、內(nèi)存、計算能力等系統(tǒng)資源有很高的要求,帶來運營成本的巨大壓力。
本文就是說明,如何利用時間散列的方法,將高度集中的并發(fā)業(yè)務平均分布在一段時間內(nèi),從而降低周期性上報數(shù)據(jù)對網(wǎng)絡帶寬、I/O帶寬、I/O讀寫等待時間、內(nèi)存、計算能力等系統(tǒng)資源的要求。
如若采用現(xiàn)有的技術(shù)方案,那么假定一個數(shù)據(jù)傳輸系統(tǒng)中有2 000個數(shù)據(jù)采集單元,每個采集單元有8 KB的上報數(shù)據(jù),則數(shù)據(jù)上報點對網(wǎng)絡帶寬的要求需要考慮如下假設 :
(1)瞬時流量計算時,每個采集單元的數(shù)據(jù)大小為8 KB,2 000個數(shù)據(jù)采集單元同時產(chǎn)生的瞬時流量總量為:8 KB X 2 000=16 000 KB。從KB換算為MB時,我們?nèi)Q算常數(shù)為10。
(2)而在計算瞬時帶寬要求時,由于傳送的數(shù)據(jù)不僅包括采集單元需要上報的采集數(shù)據(jù), 還需要考慮數(shù)據(jù)通訊時控制單元需要傳送的控制數(shù)據(jù)。因此,對瞬時帶寬要求計算且?guī)拞挝粡腗B換算為Mbit/s時,我們將換算常數(shù)簡單取10。
(3)按照以上的假設,對瞬時流量和帶寬要求的計算公式如下示:
可以看到,即使采集單元數(shù)量不算太多(2 000個),單一采集單元上傳的數(shù)據(jù)量不大(8 KB)時,對瞬時帶寬要求還是非常大的(160 Mbit/s)。
但是當我們將這些報文平均分布在10秒內(nèi)上報時,則所需帶寬為:
兩者的比較如圖2和圖3所示。
圖2 1秒內(nèi)上報數(shù)據(jù)時的瞬時帶寬需求
圖3 10秒內(nèi)上報數(shù)據(jù)時的帶寬需求
可以看到,在將這些數(shù)據(jù)散列到一段時間內(nèi)后,數(shù)據(jù)傳送對系統(tǒng)資源(示例主要指帶寬資源)的需求將大大減少。
報文發(fā)送時間、報文發(fā)送分布時間以及散列參數(shù)等內(nèi)容,可以根據(jù)業(yè)務場景和實際工作需要自由定義,抽象為如下情況。
假定數(shù)據(jù)采集單元數(shù)量為l,任意一個數(shù)據(jù)采集單元的序列號為SN,
則散列參數(shù)計算公式為:
上述公式中HashSN為散列參數(shù),1為序列號SN的長度,j為序列號遍歷索引,0≤j 上述公式中T0為上報當日零時時間戳;n為當前上報批次;p為上報周期;t為時間片段的時長;i為時間片段編號,,其中,p/t向下取整且t?p;x為配置項,x是二次散列參數(shù),將服務單元分配的、處于同一時間片段內(nèi)的采集單元在該時段再次進行散列分布,使負載更為平均。 本文所描述的對周期性數(shù)據(jù)上報進行時間散列的系統(tǒng)由數(shù)據(jù)采集單元(CU)、服務單元(SU)以及網(wǎng)絡三部分組成,具體請參考如圖4所示,通過采集單元與服務單元之間的網(wǎng)絡通信,實現(xiàn)對周期性上報數(shù)據(jù)的時間分流,以達到錯開數(shù)據(jù)傳輸高峰期的方法。 ① 服務單元SU,主要指后臺的數(shù)據(jù)分析平臺和業(yè)務分析應用;根據(jù)業(yè)務類型和要求,將回傳的數(shù)據(jù)進行整合、處理、挖掘;給出基于不同業(yè)務領(lǐng)域的各種分析報告、應用管理等,服務層有時又分為平臺服務層和應用服務層; 圖4 典型周期性數(shù)據(jù)上報系統(tǒng)的拓撲架構(gòu)圖 ② 網(wǎng)絡,主要指將數(shù)據(jù)進行回傳的傳輸通道,目前主流的傳輸方式主要指:GPRS/EDGE/3G/4G/NB-IoT/LoRa/Sigfox/RPMA/Ethernet/Fiber等; ③ 采集單元CU,主要指分布在前端的各種傳感設備和數(shù)據(jù)采集設備、數(shù)據(jù)采集單元(Colletion Unit,簡稱CU),主要完成數(shù)據(jù)采集功能。 系統(tǒng)的具體實現(xiàn)方法如圖5所示。 圖5 對周期性數(shù)據(jù)上報進行時間散列的系統(tǒng)實現(xiàn)方法示意 步驟1、S101所述采集單元發(fā)起注冊請求。 步驟2、S102所述服務單元根據(jù)所述注冊請求與所述采集單元建立連接。 步驟3、S103所述服務單元將上報周期劃分為復數(shù)個所述時間片段,獲取各時間片段的負載狀態(tài),將負荷最小的時間片段的配置參數(shù)發(fā)送至所述采集單元。 步驟4、S104所述采集單元根據(jù)所述配置參數(shù)計算獲得上報時間。通過所述上報時間,采集單元可以確定其上報數(shù)據(jù)的時間點,以此,通過服務單元的合理劃分采集單元上報的時間,使不同采集單元可以分批次上報數(shù)據(jù),減少多個采集單元同一時刻上報數(shù)據(jù)引起的設備壓力,極大的降低了周期性上報數(shù)據(jù)對網(wǎng)絡帶寬、I/O帶寬、I/O讀寫等待時間、內(nèi)存、計算能力等系統(tǒng)資源的要求。 以下將舉例詳細描述系統(tǒng)功能及其實現(xiàn)過程。 如圖6所示,在實際工作中,當采集單元數(shù)據(jù)上報周期設為p,服務單元則將所述上報周期p劃分為若干連續(xù)的、相同的時間片段,每個時間片段的時長為t,并為每個時間片段編號為i,,由服務單元進行動態(tài)管理和檢測。當所述對周期性數(shù)據(jù)上報進行時間散列的系統(tǒng)啟動時,各時間片段的負載可計數(shù)為0,該引用計數(shù)為服務單元設置;采集單元向服務單元發(fā)起注冊后,服務單元檢測當前時間片段的負載情況P1~PN,選出負載最小的單元 min(P1,P2,P3…,PN),例如當前P1=1,P2=3,P3=5,那么該情況下選擇P1這一個引用計數(shù)最小的一個單元,服務單元將采集單元上傳的時間點被劃入該時段P1,同時該片段計數(shù)加1,變成P1=2,當采集單元離線時,對應時段的引用計數(shù)減1,變回P1=1。以此,服務單元通過即時檢測當前時間片段的引用計數(shù),合理且快捷的獲得各時間片段的負荷狀態(tài),將采集單元上報數(shù)據(jù)的時間準確的分配至負荷較小的時間片段中,使采集單元獲得其對應的上報數(shù)據(jù)的時間段,以此,防止大量采集單元集中于同一時段上傳數(shù)據(jù)的風險。同時,值得說明的是,當采集單元獲得其上報時間后,并不用立即上報數(shù)據(jù),其在該時段內(nèi)的最終上報時點,可由采集單元具體分析后自行決定。 圖6 數(shù)據(jù)上報周期時間片段示意 如圖7所示,服務單元增加引用計數(shù)后,將引用計數(shù)對應的時間片段分配至采集單元;服務單元查詢到采集單元離線后,減少引用計數(shù)。首先采集單元發(fā)出注冊申請,服務單元接收到注冊申請后,審核注冊申請是否合規(guī); 圖7 數(shù)據(jù)上報時間Tn計算邏輯機制示意 如審核不通過,則斷開連接,采集單元繼續(xù)發(fā)起注冊申請; 如審核通過,則服務單元與采集單元建立連接,此時,服務單元掃描當前劃分好的時間片段,根據(jù)每一時間片段的引用計數(shù)值大小判斷對應時間片段的負荷狀態(tài),當查詢到最小負荷狀態(tài)的時間片段后,即在該時間片段的引用計數(shù)上加值后(如加1),將時間片段的配置參數(shù)發(fā)送至采集單元,其中配置參數(shù)至少包含:上報周期,時間片段的時長和時間片段編號; 每一時間片段并不一定只匹配唯一的采集單元,因此,為避免多個采集單元在同一時間片段中上傳數(shù)據(jù),造成服務器壓力等問題;采集單元在接收到配置參數(shù)后,會進行上報時間點計算,根據(jù)獲得的時間片段的配置參數(shù)與散列參數(shù)計算自身的上報時間點Tn,以此更進一步防止了海量數(shù)據(jù)上傳可能造成的擁堵壓力; 當采集單元通過計算獲得上傳時間點Tn并在該時刻上傳數(shù)據(jù)后,依然與服務單元保持連接,等待下一批次上報時間Tn+1,并在該時刻上傳,以此循環(huán)。 當服務單元檢測到某一采集單元離線后,則調(diào)節(jié)采集單元對應的時間片段的引用計數(shù)(如減去1)。離線后的采集單元,需重新注冊獲取新的時間片段,服務單元通過引用計數(shù)的增減,動態(tài)維護時間片段負載。 在上述對周期性數(shù)據(jù)上報進行時間散列的系統(tǒng)中,為了使時間負載更為均衡,更加平均的分配時段t,采集單元根據(jù)散列參數(shù)(hash)自行決定具體的上報時間。其中,的參考算法如下(假定SN長度為l): 上述公式中HashSN為散列參數(shù),l為序列號SN的長度,j為序列號遍歷索引,0≤j 本文所提供的對周期性數(shù)據(jù)上報進行時間散列的系統(tǒng)運用在實際工作中,具有較好的使用效果,具體對比說明如下: 假定系統(tǒng)中有2 000個數(shù)據(jù)采集單元,每個采集單元有8 KB的上報數(shù)據(jù),上報周期為180 s,劃分為10個時間片段,則每一時段18 s中,約有200個采集單元需要上報數(shù)據(jù)。假設x=10,則同一時間點并發(fā)的采集單元有20個,根據(jù)計算得出網(wǎng)絡帶寬為: 按照30%的冗余計算,網(wǎng)絡帶寬的要求約為1 kbit/s,與現(xiàn)有技術(shù)中同等條件下計算的160 kbit/s相比,極大地降低了對網(wǎng)絡的要求。 使用上述方法,通過將傳輸周期劃分為若干時段,并由服務單元動態(tài)管理時間片段,安排采集單元在負載最小的時間片段上傳數(shù)據(jù),加上時間散列機制,最大限度平均分布各個采集單元上傳數(shù)據(jù)的時間,錯開數(shù)據(jù)上報的高峰期,從而達到降低網(wǎng)絡帶寬、I/O帶寬、I/O讀寫等待時間、內(nèi)存、計算能力等系統(tǒng)資源的要求,降低系統(tǒng)運營成本。2.1 系統(tǒng)構(gòu)成
2.2 系統(tǒng)的具體實現(xiàn)方法
2.3 示例說明
3 結(jié)論