解密IoT物聯網平台設備如何快速上雲、實現全球就近接入 https://mp.weixin.qq.com/s/NDTNdTreKnz4UzggocIIEA
近年來,物聯網技術正以指數級的速度日漸成熟,並潛移默化的改變着人們的生活。根據國際數據公司IDC的預測估計,到2025年,將有416億台聯網的IoT設備或“物”,生成79.4 ZB的數據。同時IDC中國研究數據顯示,2020年全球物聯網支出達到6904.7億美元,其中中國市場占比23.6%。IDC預測,到2025年全球物聯網市場將達到1.1萬億美元,年均復合增長11.4%,其中中國市場占比將提升到25.9%,物聯網市場規模全球第一。
阿里雲企業物聯網平台基於阿里雲的基礎架構,提供設備接入、設備管理、監控運維、數據流轉、數據管理、處理分析等物聯網構建能力,協助企業在數字化轉型時擁有更完整的生產資料。而對於第一步設備如何快速上雲並且實現全球就近接入尤其重要,下面筆者將詳細介紹阿里雲物聯網平台的設備分發服務是如何實現設備全球快速就近接入的。
一、名詞解釋
物聯網平台:是阿里雲的一個物聯網管理平台,為設備提供安全可靠的連接通信能力和管理能力,支持設備數據采集上雲,規則引擎流轉數據和雲端數據下發設備端。
Alink通信協議:Alink協議是阿里雲物聯網平台的通信協議,該協議使設備與雲端擁有上下行指令接受與下發的能力,並且為設備端與雲端提供上下行通信的信道。
設備三元組:每台設備擁有productKey(產品標識),pruductSecret(產品秘鑰),deviceName(設備名稱標識),deviceSecret(設備秘鑰),productKey和deviceName唯一標識一台設備,即一個產品下可以有多台設備。我們通常稱productKey、deviceName和deviceSecret為設備的三元組信息。
設備接入點:設備連雲需要指定接入點,接入點包含實例id信息${instanceId}.mqtt.iothub.aliyuncs.com
實例:物聯網平台的產品模式,用戶以實例的形式購買,可以分為獨享實例(獨享的計算資源)和公共實例(和其它租戶共享的計算資源)
Bootstrap:設備引導服務
IHV(Independent Hardware Vendor):獨立硬件開發商
ISV(Independent Software Vendors):獨立軟件開發商
SI(Service Integrator):服務集成商
二、 當前面臨的問題
物聯網平台的設備分發服務要解決什么問題?先來看如下兩個典型的業務場景:
場景一
用戶軟硬分離,IHV需要將設備交付給SI/ISV管理:IHV對設備進行建模和開發,並線下量產設備;ISV/SI在阿里雲物聯網平台批量生成設備三元組信息;ISV/SI線下向IHV購買設備,同時把自己實例下創建的三元組信息和設備接入接入點信息提供給IHV;IHV用上一步驟的三元組和實例信息燒錄設備,並交付設備給ISV/SI;ISV/SI集成軟件並部署使用設備。當前的場景存在的問題:
-
由於設備開發者和設備使用者(ISV/SI)在不同的實例下,而設備接入又要燒錄目標的實例id接入點,導致設備開發者無法提前備貨提前將三元組和連接點信息進行燒錄,需要用戶下單后才能拿到設備真正要接入的實例信息;
-
由於設備要交付給最終的使用者(ISV/SI)所在的實例進行管理,所以設備使用者需要在自己的實例內生成設備三元組並提供實例id信息給設備開發者燒錄,最終設備數據才能在所在實例進行管理,操作繁瑣;
場景二
廠商是軟硬一體的開發者,可以自己開發設備並集成軟件。廠商在自己的實例內生成的設備三元組信息,同時產線燒錄三元組信息和實例接入點信息,然后將設備賣給C類用戶,設備可能被用戶帶到不同的國家進行使用。當前的場景也存在一些問題:
-
廠商的三元組信息是在指定的實例下生成的,也就是這一批設備燒錄的是一個固定的實例接入點,如果用戶把設備帶到不同的國家,那么設備只能接入燒錄的指定接入點,無法就近選擇機房,就會導致設備和雲端通信延遲增加;
-
由於設備會被用戶帶到不同的國家使用,但是設備連接的始終是一個實例的數據中心,所以也可能存在數據合規問題;
三、如何解決這些問題
抽象一下我們要解決的三個問題:
-
解決設備跨實例跨region跨租戶的歸屬:由於物聯網的復雜場景,設備的開發者和使用者往往不是同一個用戶,需要提供一種方式解決跨實例跨region的設備歸屬問題;
-
設備可以提前燒錄備貨:無需在設備出廠時對不同region和不同實例的連接信息進行硬編碼,設備統一燒錄全球統一接入點信息即可(無region信息),解決設備提前備貨;
-
設備可以全球就近低延時的接入:由於設備可能被用戶帶到任意region,希望設備可以連接到就近region的阿里雲物聯網平台的用戶實例下,避免數據合規和連接指定燒錄實例接入點造成的高延時問題。
針對於以上三個問題,阿里雲物聯網平台提出了設備分發的概念:物聯網平台通過設備分發實現設備跨地域、跨實例或跨賬號的分發。分發后,雲端下發新的連接地址給設備,設備本地固化收到的信息之后,直接連接新的地址,免去二次燒錄設備信息。設備分發主要解決的就是兩個問題:設備的全球接入,設備的歸屬關系。
先來看一下設備分發服務的整體架構:
物聯網平台在全球8個region部有中心機房,設備分發服務整體上是分為兩個階段的:
-
配置階段:用戶通過開放接口或者控制台對要分發的設備進行信息配置;
-
接入階段:設備通過Bootstrap引導服務上雲,觸發配置,完成接入;
下面將具體看一下上述提出的三個問題是如何解決的:
-
設備跨實例跨region跨租戶的歸屬問題
而設備分發服務的第一個任務就是打通了阿里雲內部的所有網絡環境,對用戶只暴露實例間的操作屏蔽底層復雜的網絡和隔離策略。對於跨賬號的操作,分發服務采用短信鑒權,並打通了國內站和國際站間賬號的操作,用戶只需要關心要分發到哪個賬號下的哪個實例即可。
網絡打通后就是如何在這個鏈路上實現數據高可靠的傳輸,由於跨region和跨庫的數據訪問可能會遭遇網絡抖動或中間件訪問超時等異常流;針對這些問題,系統除了有異常自動重試策略外還在業務上做了跨庫的事務回滾,最大程度上保證業務數據的一致性。
由於設備數據的分發操作都是采用長任務進行處理,所以為了防止服務器宕機或者重啟導致的任務中斷,系統內置了故障轉移機制,來保證任務一定會走到狀態機終態,其核心思路就是采用心跳包和單機定時檢測(quartz)來實現服務器的故障轉移。下圖演示了server1接收請求並,如果出現故障,是如何轉移到server2當中的。
-
設備提前燒錄備貨問題
由於上雲需要指定實例的接入點,所以對於設備不確定交由給哪個企業實例用戶連接哪個企業實例的場景就沒有辦法提前燒錄接入點,提前備貨。
所以對於設備端通過燒錄的global域名可以去中心環境請求分發服務,設備通過請求分發中心的bootstrap服務,該服務會返回設備引導信息,包含設備真正要接入的物聯網平台實例的接入點信息,設備拿到目標接入點通過mqtt直連即可連接到目標用戶的實例即可。
考慮設備還可能發生重配的情況,即設備已經連接在目標實例,但是用戶在控制台重新配置了設備的目標實例接入點,這時候如果設備已經連雲處於在線狀態,服務端會推送一條mqtt消息給設備,告訴設備的接入信息發生變化請重新連接。如果設備不在線用戶重配后,設備建連仍然走下面的流程依舊可以連接到目標實例。
-
設備全球就近低延時的接入問題
對於分發設備的接入策略服務端提供兩種:指定地域和就近接入。這兩種有各自的使用場景,對於指定地域策略如果用戶明確設備要分發到哪個實例下使用可以選擇指定地域策略,設備可以選擇配置到指定實例進行接入,典型的場景是設備開發商在自己的實例下量產設備,然后將設備分發到渠道商的實例下,設備的目標實例是固定的,而且希望只連接在固定的實例下。
對於就近接入策略,例如設備廠商是軟硬一體的,在指定的實例開發並量產了設備,但是設備售賣到C端用戶手中會被用戶帶到全球任意region使用,這時設備廠商可以在物聯網平台支持的每一個region購買一個實例,並配置就近接入策略,這樣設備在移動到特定region請求bootstrap服務的時候,分發服務會根據設備的出口ip信息,動態的將設備身份分發到就近region用戶的實例下進行連接。
設備只需要燒錄一個全球域名iot-auth-global.aliyuncs.com,在解決了就近接入的同時,分發服務配置了ADNS智能域名解析。實現了全球就近低延時接入目標實例。
四、總結
阿里雲IoT企業物聯網平台的萬級設備可以實現跨賬號、跨實例、跨region在阿里雲各物聯網平台任意的分發;同時平台對分發的設備提供了多種數據高可靠的保障策略;提供多種分發策略,滿足不同業務場景的需求;設備bootstrap服務接入無額外鑒權,簡化了設備接入流程;一次配置,設備就可以實現毫秒級的全球就近接入;