OneNET概述:以远程运维为例
文章目錄
- 系統(tǒng)整體結(jié)構(gòu)
- 用戶故事
- 訴求分析
- 訴求1
- 訴求2
- 訴求3
- 訴求4
- 訴求實(shí)現(xiàn)要點(diǎn)理解之關(guān)鍵概念
- 整體數(shù)據(jù)抽象
- 云端“圖書館”
- 云端“圖書館”的擴(kuò)展功能之觸發(fā)器
- 云端“圖書館”的擴(kuò)張
- 訴求實(shí)現(xiàn)要點(diǎn)理解之平臺(tái)化
系統(tǒng)整體結(jié)構(gòu)
本小節(jié)主要講解遠(yuǎn)程運(yùn)維系統(tǒng)的典型作用和整體結(jié)構(gòu)。
用戶故事
A公司是一家做螺栓連接技術(shù)的公司,他們生產(chǎn)的螺栓被用到機(jī)械設(shè)備上。這些螺栓的作用是加固這些設(shè)備,保證機(jī)械的穩(wěn)固性。
這些螺栓被用在大型設(shè)備上,可想而知,必須保證這些設(shè)備的連接穩(wěn)定,不然會(huì)發(fā)生松動(dòng),造成意外事故。但是如何監(jiān)測(cè)螺栓的松緊程度?如何在安裝螺栓的時(shí)候?qū)⑵鋽Q緊到一個(gè)合適的程度?等等這些都是問題。
所以客戶N年前找人開發(fā)了監(jiān)測(cè)系統(tǒng):即由一個(gè)采集器搭配四個(gè)壓力傳感器,通過將四個(gè)壓力傳感器分別放在需要螺栓固定的設(shè)備連接處,來監(jiān)測(cè)螺栓的擰緊程度。采集器定時(shí)去采集傳感器的數(shù)據(jù),并顯示在自帶的屏幕上。這樣子,工作人員就可以實(shí)時(shí)查看采集器的數(shù)據(jù),從而判斷螺栓的擰緊程度。
到這里,你覺得這套系統(tǒng)具有什么優(yōu)缺點(diǎn)呢?
優(yōu)點(diǎn)包括不限于:簡(jiǎn)單,低成本。
缺點(diǎn)主要有下列幾點(diǎn):
(1) 必須到現(xiàn)場(chǎng)才能看到采集的數(shù)據(jù)
(2) 必須不斷的主動(dòng)查看采集的數(shù)據(jù),從而判斷是否松動(dòng)
(3) 由于第二點(diǎn)導(dǎo)致無法及時(shí)收到松動(dòng)消息
(4) 人工成本高
(5) 無法統(tǒng)計(jì)從螺栓安裝好后,一直到出現(xiàn)松動(dòng)這一時(shí)間段內(nèi)的螺栓擰緊程度的數(shù)據(jù)變化趨勢(shì)。所以很難針對(duì)性的去提升螺栓品質(zhì)。
(6) ….
客戶使用了一段時(shí)間后,也發(fā)現(xiàn)如果繼續(xù)沿用這套系統(tǒng),那么上述問題無法解決,會(huì)持續(xù)痛苦下去。那么如何解決客戶這個(gè)痛點(diǎn)呢?
通過對(duì)比原始系統(tǒng),其實(shí)核心訴求可以歸納為以下幾個(gè)核心點(diǎn):
(1) 不需要去現(xiàn)場(chǎng)即可看到數(shù)據(jù),即無人值守式工作
(2) 可以遠(yuǎn)程通過瀏覽器、APP等看到設(shè)備實(shí)時(shí)數(shù)據(jù)
(3) 能夠看到歷史數(shù)據(jù)曲線
(4) 能夠被動(dòng)接收推送消息,從而無需輪詢即可及時(shí)得知螺栓松動(dòng)情況。
其他訴求實(shí)際都屬于附加訴求。
那么如何實(shí)現(xiàn)這些訴求呢?
訴求分析
訴求1
需要采集器能夠把傳感器數(shù)據(jù)傳到云端,而不是簡(jiǎn)單的顯示在屏幕上。在不改變采集器硬件的情況下,只能通過現(xiàn)有的采集器硬件接口去對(duì)接新的傳輸設(shè)備。示意圖如圖1.1所示:
圖1.1 采集示意圖
傳輸設(shè)備的作用就是將設(shè)備數(shù)據(jù)最終傳輸?shù)皆贫恕F渲?#xff0c;網(wǎng)關(guān)和節(jié)點(diǎn)均可以作為傳輸設(shè)備。二者的最大區(qū)別在于網(wǎng)關(guān)能夠連接外網(wǎng)即廣意上的互聯(lián)網(wǎng),而節(jié)點(diǎn)只能和網(wǎng)關(guān)配合組成局域網(wǎng),他們的通信都是通過無線通信的,這里用虛線表示。網(wǎng)絡(luò)的分層結(jié)構(gòu)如示意圖1.2所示:
圖1.2 網(wǎng)絡(luò)示意圖
整體采集與傳輸層面的示意圖如圖1.3所示:
圖1.3 采集傳輸整體示意圖
圖1.3中忽略了采集器所接的傳感器。節(jié)點(diǎn)負(fù)責(zé)將各個(gè)采集器數(shù)據(jù)發(fā)送到中央的網(wǎng)關(guān),再由網(wǎng)關(guān)上報(bào)到云端,這樣數(shù)據(jù)最終就可以存儲(chǔ)到云端。
有了底層這樣的采集與通信結(jié)構(gòu)以后,才可以實(shí)現(xiàn)將設(shè)備數(shù)據(jù)發(fā)布到云端,訴求1就有了實(shí)現(xiàn)的依據(jù)。
訴求2
需要開發(fā)web網(wǎng)頁、APP等應(yīng)用。這些應(yīng)用從云端獲取設(shè)備采集到的實(shí)時(shí)數(shù)據(jù)并展示在頁面上即可。
訴求3
需要云端能夠保存設(shè)備采集到的所有數(shù)據(jù),便于查詢歷史數(shù)據(jù)。當(dāng)然,應(yīng)用也需要具備查詢并顯示歷史數(shù)據(jù)的功能。
訴求4
需要云端能夠建立推送機(jī)制,即當(dāng)檢測(cè)到某個(gè)螺栓傳感器的數(shù)據(jù)符合觸發(fā)條件時(shí),比如傳感器2上報(bào)的數(shù)值大于50時(shí)能夠自動(dòng)通知到用戶。
這樣子,當(dāng)數(shù)據(jù)符合推送條件時(shí),用戶即可收到消息通知,比如收到報(bào)警短信,從而得知某個(gè)螺栓的松動(dòng)情況。
訴求實(shí)現(xiàn)要點(diǎn)理解之關(guān)鍵概念
整體數(shù)據(jù)抽象
圖1.4 數(shù)據(jù)抽象
圖1.4可以看出,整體鏈路是圍繞數(shù)據(jù)打通的。原始數(shù)據(jù)被采集到出來,然后經(jīng)過傳輸層,在云端進(jìn)行存儲(chǔ),最終數(shù)據(jù)還是回饋客戶,被分析或者匯總等展現(xiàn)給客戶。
從這個(gè)數(shù)據(jù)抽象層面來看,圖1.3中局域網(wǎng)內(nèi)的采集層和傳輸層就不必考慮其技術(shù)細(xì)節(jié),只要知道數(shù)據(jù)通過底層硬件設(shè)備采集并傳輸?shù)搅嗽贫思纯伞?/p>
二手書店和圖書館的區(qū)別之一是圖書館分門別類,不同的樓層不同的房間放的是不同類書籍,同一間房間還用書架來細(xì)分。所有圖書遵循一套編號(hào)法則,每一本圖書都有自己的唯一編號(hào)。而二手書店就不一樣了,一堆書籍雜亂無序的堆放,從里面找本書費(fèi)時(shí)費(fèi)力。
如果把書籍看作是數(shù)據(jù),那么云端的存儲(chǔ)就不能向二手書店學(xué)習(xí),而要向圖書館看起,所以圖1.4將云端的存儲(chǔ)標(biāo)記為結(jié)構(gòu)化存儲(chǔ)(此結(jié)構(gòu)化非數(shù)據(jù)庫的名詞概念)。
下面,我們將數(shù)據(jù)當(dāng)作書籍,來建立自己的圖書館。
云端“圖書館”
現(xiàn)在云端圖書館開張了,但是面對(duì)這么多雜亂的底層上報(bào)的數(shù)據(jù),我們只好向杭電圖書館的先進(jìn)管理方式看齊。
我們首先定義每個(gè)數(shù)據(jù)的“唯一編號(hào)”。因?yàn)楹驮贫酥苯咏换サ氖蔷W(wǎng)關(guān)類設(shè)備,而至于網(wǎng)關(guān)底下接了什么設(shè)備等等一切我們不考慮,這也是分層解耦思想和單一職責(zé)原則的體現(xiàn)。所以,針對(duì)不同的網(wǎng)關(guān),我們對(duì)其定義唯一的ID,這里定義為deviceId,這樣就可以區(qū)分哪些數(shù)據(jù)是由哪個(gè)網(wǎng)關(guān)上傳的了。
但是,一個(gè)網(wǎng)關(guān)下可以采集多種數(shù)據(jù),比如采集壓力,濕度,或者采集四個(gè)地方的溫度信息,然后上報(bào)時(shí)這些數(shù)據(jù)在云端如何區(qū)分?
比如壓力,隨著時(shí)間的流逝,壓力這種數(shù)據(jù)給我們呈現(xiàn)的是一條“數(shù)據(jù)流”,就像無數(shù)水滴匯聚成的河流一樣。只不過河流是流經(jīng)大地,而數(shù)據(jù)是流過時(shí)間。
再次抽象一點(diǎn),即網(wǎng)關(guān)下掛了好多這樣的“數(shù)據(jù)流”,隨著時(shí)間的流逝,站在我們?cè)贫藞D書館的視角來看,一個(gè)網(wǎng)關(guān)下的數(shù)據(jù)區(qū)分就是按照數(shù)據(jù)流來區(qū)分的。所以需要我們?yōu)閿?shù)據(jù)流制定唯一ID,我們將其命名為:streamId,stream即水流的意思,streamId高端大氣上檔次。
至此,通過deviceId + streamId就唯一定位到了一個(gè)數(shù)據(jù)流,再配合上時(shí)間這個(gè)參考坐標(biāo),我們?cè)贫藞D書館的一個(gè)數(shù)據(jù)(點(diǎn))的唯一編號(hào)就是:deviceId + streamId + timestamp。
云端“圖書館”的擴(kuò)展功能之觸發(fā)器
本圖書館了解到,有些客戶想要制定觸發(fā)功能,即通過監(jiān)控某一個(gè)數(shù)據(jù)流中的實(shí)時(shí)最新數(shù)據(jù),當(dāng)數(shù)據(jù)符合條件時(shí)進(jìn)行觸發(fā)邏輯,去通知客戶當(dāng)前的情況。
經(jīng)過不懈努力,我們創(chuàng)造了“觸發(fā)器”這個(gè)系統(tǒng)??蛻糁恍枰?jiǎn)單配置,告訴我們他想監(jiān)控哪個(gè)數(shù)據(jù)流(即deviceId + streamId),并且當(dāng)數(shù)據(jù)值符合什么條件(比如大于、小于)時(shí)通知他,通知地址可以是郵箱或者客戶通訊地址。
這樣就配置好了一個(gè)觸發(fā)規(guī)則。由于非常好用,好多客戶都制定了許多規(guī)則,這些規(guī)則太難管理了,所以我們又要對(duì)其進(jìn)行編號(hào),編碼方式從1開始遞增即可。編碼名字就叫“ruleId”,不過這樣容易混淆,索性叫“triggerId”好了,trigger是觸發(fā)的意思。
云端“圖書館”的擴(kuò)張
由于具備這么多好用的功能和清晰的結(jié)構(gòu),接入的客戶越來越多。那么有什么辦法將各個(gè)客戶的設(shè)備隔離開呢?
我們參考圖書館的房間分離方式,建立了“產(chǎn)品”這種概念。每個(gè)客戶可以在本館建立多種產(chǎn)品,每個(gè)產(chǎn)品下又包含了多個(gè)網(wǎng)關(guān)(設(shè)備)。通過這種分層,最終本館的結(jié)構(gòu)如下:
- 產(chǎn)品
- 設(shè)備(網(wǎng)關(guān))
- 數(shù)據(jù)流
- 數(shù)據(jù)點(diǎn)
- 觸發(fā)器
- 數(shù)據(jù)流
- 設(shè)備(網(wǎng)關(guān))
因?yàn)橛|發(fā)器最終是關(guān)聯(lián)到某個(gè)(些)數(shù)據(jù)流上面的,所以和數(shù)據(jù)流屬于平級(jí)。
基于這種分層方式,很好的實(shí)現(xiàn)了大量設(shè)備及數(shù)據(jù)的接入及管理。
訴求實(shí)現(xiàn)要點(diǎn)理解之平臺(tái)化
誰都想做平臺(tái),比如微信要構(gòu)建自己的生態(tài)、平臺(tái)。本圖書館也想構(gòu)建自己的平臺(tái),平臺(tái)意味著不僅能夠讓設(shè)備接入進(jìn)來,數(shù)據(jù)上報(bào)上來,也同樣意味著需要開發(fā)者或者相關(guān)企業(yè)的入住,能夠在本平臺(tái)上進(jìn)行開發(fā)。
基于這個(gè)考慮,本館對(duì)外暴露了一些開放的API接口,并且提供了相關(guān)的demo及SDK包供大家使用。同時(shí)提供了簡(jiǎn)易的設(shè)備之類的管理界面,客戶可以查看自己在平臺(tái)上的設(shè)備、數(shù)據(jù)等信息。
總之,本平臺(tái)的宗旨就是:讓客戶更加方便地開發(fā)物聯(lián)網(wǎng)應(yīng)用,專注于應(yīng)用層的處理,而不用考慮網(wǎng)關(guān)如何接入、數(shù)據(jù)如何存儲(chǔ)、如何觸發(fā)等復(fù)雜問題。
平臺(tái)化以后,本平臺(tái)運(yùn)行良好,我們起了一個(gè)響亮的名字:OneNET平臺(tái)。
由于這兩年物聯(lián)網(wǎng)發(fā)展迅速,各個(gè)傳統(tǒng)企業(yè)都想結(jié)合物聯(lián)網(wǎng)進(jìn)行轉(zhuǎn)型,各大公司也都開始眼紅物聯(lián)網(wǎng)平臺(tái)的巨大潛在價(jià)值。最終,中國移動(dòng)把我們這個(gè)平臺(tái)收購了,所以我們最新的名字叫做—“中國移動(dòng)OneNET物聯(lián)網(wǎng)平臺(tái)”!
注:以上圖書館故事純屬虛構(gòu)。
再注:
OneNET平臺(tái)地址
總結(jié)
以上是生活随笔為你收集整理的OneNET概述:以远程运维为例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 地埋式污水处理设备与地下污水处理厂的区别
- 下一篇: CC1310串口下载程序