• <noscript id="s46oo"></noscript>
  • <table id="s46oo"></table><table id="s46oo"><source id="s46oo"></source></table>
  • <td id="s46oo"></td><td id="s46oo"><kbd id="s46oo"></kbd></td>
  • 智物聯,引領工業物聯

    我們始終以技術創新創造價值,并夜以繼日的將互聯和工業智能的力量融入到各行各業
    以前所未見的高度、速度、精度和深度,讓關鍵所在 逐一實現。

    咨詢服務

    技術干貨丨丟失的數據,理性的選擇


    【摘要】: 數據采集和數據傳輸是工業互聯網的起點,沒有最初從設備上采集到的數據以及將數據傳輸到對應的平臺,也就談不上后續對數據的分析和應用。但是在真正的工業現場,可能會遇到傳輸網絡故障等問題導致的數據發送失敗,對這些未能成功發送的數據該如何處理呢?

    數據采集和數據傳輸是工業互聯網的起點,沒有最初從設備上采集到的數據以及將數據傳輸到對應的平臺,也就談不上后續對數據的分析和應用。但是在真正的工業現場,可能會遇到傳輸網絡故障等問題導致的數據發送失敗,對這些未能成功發送的數據該如何處理呢?有人說,可以把它們在采集終端存儲下來,等傳輸網絡恢復正常后再發送出去,單純從技術上來講這沒有問題,但一般情況下,智物聯并不會這樣做,而是任由這些數據“丟失”,這是為什么呢?

     

    首先,是采集終端需要預留的存儲空間難以確定。原本數據從采集到整理再到發送,是一個線性的過程,如果要求留存未能發送成功的數據就需要增加采集終端的存儲空間,而這又取決于我們想保存多長時間的數據。十分鐘?一個小時?還是一天?無論我們如何去設定,總會存在突破預設上限的可能,超出預設存儲空間的數據依然會丟失,這個問題并沒有得到徹底解決。

     
    其次,是會增加采集終端的工作量,進而影響效率。假設我們通過增加存儲保留了發送失敗的數據,當傳輸網絡恢復后要進行這些數據的發送,那么是打斷現有正常的數據發送進程優先發送它們,還是等到采集終端“有空”時再發送,或者采用其他的方式?無論怎樣,都需要對采集終端的程序進行相應的調整來完成數據發送的調度,這既增加了采集終端的程序邏輯,也可能因為需要額外把時間花在之前發送失敗的數據上而影響其工作效率。
     
    物聯網架構
     
    ▲ 工業現場設備物聯網方案示意圖
     
    最重要的是,如果采用數據暫存再補發的方式,會因為采集終端與MixIOT平臺對數據的時間處理方式不同而帶來巨大的算力成本。這里我們要引入兩個概念:
     
    “時間戳”(Time Stamp)和“時間序列”(Time Series)。
     
    時間戳是根據每個數據采集到的精確時間所做的標記;
     
    ◆時間序列是根據數據產生的先后順序排列而成的數列,并不關注數據的精確時間。
     
    時間機制
     
    假如現在發送失敗的數據需要進行補發,那么就需要在采集終端對這些數據打上時間戳,讓MixIOT知道這些數據是什么時候采集的,并對采集終端和MixIOT進行同步時間校準。而MixIOT是以時間序列方式來處理數據,之前發送過來的數據已經按先后順序保存到了數據庫,如果現在再接收到補發的數據,MixIOT就要根據這些數據的時間戳,分別找到對應的時間位置,挨個兒“放入”這些數據,原有的數據也要相應地向后挪動,這需要消耗極大的算力,這種算力成本最終也會反映在智物聯產品的終端價格上,自然也提高了客戶的采購成本。這些發送失敗的數據值不值得我們付出這樣的成本呢?根據我們的經驗,在實際工業互聯網解決方案中,這種付出絕大多數時候是得不償失的。
     
    綜上所述,對于發送失敗的數據進行暫存處理并補發的方式,對于智物聯來說不是“做不到”,而是“沒必要”,讓這些數據丟失是在綜合考量下做出的理性選擇。至于為什么MixIOT要采用時間序列而不是時間戳的方式來處理數據,這同樣是一個“沒必要”而不是“做不到”的問題,這里不多贅述。
     
    要更好地理解上面這些論述,我們可以設想一個場景:
    一場全球直播的大型運動會開幕式,各國隊伍應該按順序入場,其中某國有幾個隊員遲到了,這個時候是讓所有人都停下來等待(等多久還不知道)?是重新調整所有隊伍的入場順序?還是先讓各支隊伍按原有順序行進著,等那幾個隊員趕到后再在全球觀眾眾目睽睽之下從后面跑到自己的隊伍里去?我們肯定會說這些方式都不合適,應該讓這幾個隊員放棄參加開幕式,因為開幕式的入場不像閱兵式,對每個人位置有那么嚴格的要求,幾個隊員的缺席并不會對活動的成功造成多大影響,但是開幕式也涉及上上下下多個部門、多個環節,為了這幾個隊員而進行流程的調整卻會造成相當的損失,此時,這幾個隊員就可以被視為這場開幕式中“丟失的數據”。
     
    當然,在現實中有可能會有某些重要時刻的數據不能丟失的情況,也可能會有數據完全不能丟失的情況,對前者我們可以采用“插值”的處理方式(通過計算確定某些重要時刻的數據,并不是對數據的時序進行重排,針對連續變化數據、開關量變化數據以及兩者關聯變化的數據又有不同的插值計算方法),對后者我們也可以把MixIOT做成時間戳機制的,只要客戶能夠承擔這些處理方式所對應的額外成本,對智物聯來說也不是什么難事。
     
    所以,在很多時候,我們不應該追求解決所有問題,而是在平衡各種因素后找到一個最優解,放棄一些無關大局的細枝末節,或者通過其他方式回避掉一些枝節問題的處理。就像火箭發射,我們沒必要給火箭一層層加上防雨罩、防雪罩、防沙罩,從而提高對發射動力的要求,加大火箭發射的復雜性,只需要找個晴空萬里的時間窗口,點火,搞定。
     
    圖片名稱
    圖片名稱
    青山沙希