05.29 以騰訊雲IoT Suite為例 談談邊緣計算在物聯網的實踐與實現

全球行業數字化轉型的浪潮孕育興起,掀起了新一輪行業變革浪潮。這一波浪潮的顯著特點是將“物”納入智能互聯,觸發技術服務模式創新,並對價值鏈、供應鏈和行業生態產生深遠影響。然而,物聯網是一個龐大而複雜的系統,行業不同,應用場景及其應用訴求各異。如何解決海量終端的聯接和管理、海量數據的實時分析和處理,是實現“萬物互聯”的現實難題。

2016年,騰訊雲基於自身豐富的開發經驗,整合內部技術,開始佈局行業物聯網解決方案,歷經兩年探索,逐步迭代發佈了物聯網基礎套件和一站式物聯網開發平臺,並在消費、工業、城市等不同領域輸出了較為完整的物聯方案體系。

5月 23日的騰訊云云 +未來峰會上,騰訊雲正式發佈其基於邊緣計算的物聯網平臺 IoT Suite,本文通過對騰訊雲物聯網雲平臺介紹及其邊緣計算的實現原理,深入淺出騰訊雲“兩端一雲”的物聯網解決方案。

1 基於邊緣計算的物聯網架構

邊緣計算,是一種分散式運算的架構,它將應用程序、數據資料與服務的運算,由網絡中心節點,移往網絡邏輯上的邊緣節點來處理。邊緣運算將原本完全由中心節點處理大型服務加以分解,切割成更小與更容易管理的部分,分散到邊緣節點去處理。

基於邊緣計算物聯網解決方案,從架構上可以分為:傳感控制層、網絡層、敏捷控制器和應用層。

  • 傳感控制層:包含大量的傳感器、控制部件(比如開關等)和測量部件(比如電錶等),另外還有通信部件。這些通信部件可能是獨立的,也可能是和其它部件結合在一起的。

  • 網絡層:主要實現融合和互聯,它的功能除了網絡聯接和管理之外,還包括邊緣計算,進行現場處理,同時保障業務在本地的存活。本地存活和現場處理對物聯網尤其是工業和民用大型設施是非常重要的。此外,協議轉換也是這一層的重要功能。在 IoT 領域有特別多的協議,這些協議來自於各個行業歷史上的積累,所以需要在網關上做協議的轉換,將數據統一承載在 IP 網絡上向外傳輸。

  • 敏捷控制器:將網關送上來的數據進行統一的處理,向上送給應用層。並對下層的網絡、傳感器、控制部件、測量部件、計算資源進行管理,提供網絡佈署、配置的自動化工具。

  • 業務應用層:集成各種行業應用。

2 “兩端一雲”的物聯網解決方案 IoT Suite

萬物互聯的蓬勃發展,互聯網接入的用戶和設備越來越多,無論是個人用戶,還是物聯網接入設備,每時每刻都在產生大量的數據。數據量不斷增多的情況下,同時要求對於設備的響應、本身的計算能力越來越強。基於傳統設備連接中央服務器,網絡延遲和帶寬會產生巨大成本,設備無法通過網絡即時連接到雲和中央服務器。

為了解決上述問題,騰訊雲提出了“兩端一雲”的物聯網解決方案 IoT Suite,幫助實現設備的快速物聯網化。同時,平臺提供標準 TLS1.2、雙向認證保護設備與雲端通道安全,對於計算能力偏弱的設備,採用動態令牌,實現一機一鑰的能力,完成設備端 -雲 -應用端的雙向安全通信。

以腾讯云IoT Suite为例 谈谈边缘计算在物联网的实践与实现

如上圖所示,騰訊雲物聯網平臺整體包括三層架構,包括平臺核心處理層,設備連接層以及應用連接層。平臺核心處理層提供統一的雲端中控管理平臺,提供包括數據模版,日誌存儲,影子服務,規則引擎等功能。設備連接層和應用連接層通過開放的 APIs提供封裝的固件 SDK和應用 SDK,向上集成不同行業應用,向下連接各種傳感器、終端和中控網關設備,完成跨硬件設備接入。

整個平臺提供的開發支持,包括設備端的嵌入式固件 SDK,雲端開放式 API 接口,以及用戶應用端的集成式 SDK 等。設備與雲之間的通訊平臺封裝了標準的 MQTT、CoAP、HTTP等不同的通訊協議,支持 2G/4G/NB/lora/wifi等連接方式。同時,應用端提供 MQTT、WebSocket、HTTP協議及中間件,方便企業應用、手機應用等不同應用的接入。

設備端固件 SDK

提供基於 Linux、Android 及主流 Rtos 的設備接入 SDK,支持各種包括 2/3/4G、WIFI、LORA、NB-IoT 通訊模式的通訊模組, SOC 開發板、SIP 開發板,封裝了與雲端鑑權、通信的全套接口,支持 MQTT/ CoAP/ WebSocket 等多種協議,可移植至不同硬件環境運行。

應用端 SDK

封裝了 APP 應用端與騰訊雲物聯網開發中心的通訊過程, 包括設備的配置入網、發現、連接、控制、狀態上報、告警和故障通知等。使用 SDK,可以使得用戶快速完成 APP 開發,從而降低對複雜的協議與錯誤處理等事項。

開放式通訊雲 API

提供從設備接入,賬號管理,設備綁定,遠程監控 &升級等設備高級數據服務,並提供對應的雲端 API 調用接口給到用戶進行訪問使用,同時打通騰訊雲大數據,AI 等各種雲產品的接口,滿足客戶根據自身業務對數據的使用。

整個框架從產品創建,設備功能設置,數據指令的上傳下發,數據的存儲到發佈環境的應用,基本上實現了設備物聯網化所需要的所有組件。總體而言,基於“兩端一雲”的騰訊雲 IoT Suite 物聯網雲平臺,能夠實現包含設備接入、設備管理、數據分析處理、數據可視化、終端智能在內的多項功能。

3 如何實現邊緣計算?

騰訊雲 IoT邊緣計算架構

基於物聯網的邊緣計算實現,主流的主要為兩條路徑,一是微服務的升級模式,簡單理解就是允許用戶在邊緣平臺運行應用程序,且提供開放的編程環境,與近年來來軟件定義的路徑相似;二是邊緣向雲的滲透,利用邊緣能力滲透進雲領域的核心產品及服務,如數據庫、計算、存儲、安全的邊緣化。

騰訊雲物聯網邊緣計算解決方案,主要為物聯邊緣設備提供一套本地服務,解決物聯網應用場景下的高可用、實時性、帶寬限制、私密性等問題。 騰訊雲 IoT邊緣計算提供設備管理、消息收發、本地計算、緩存及同步能力,可以在邊緣設備完成本地化的物聯設備管理和通訊。

以腾讯云IoT Suite为例 谈谈边缘计算在物联网的实践与实现

同時結合騰訊雲 SCF無服務函數 agent,用戶只需在雲端完成業務邏輯代碼編寫,運行方式配置,消息規則配置,下發至在網設備。在設備上,系統將自動完成代碼和配置同步,雲函數運行,並在設備上提供消息收發、緩存、與雲端進行消息同步等能力。當數據產生時,底層的物聯網設備將數據上報至智能網關設備,觸發雲函數的運行,將數據進行離線處理,通過本地的 IoT網關,再將離線處理的數據下發至物聯網底層設備。整個數據最主要的計算處理部分運行主要是在雲函數中進行。

未來,我們會將更多的智能化服務如圖像識別,包裝為 SCF雲函數,逐步替換目前的 SDK模式,通過調用雲函數的方式就可以完成智能化應用的開發。

執行環境:無服務器雲函數 SCF

無服務器雲函數(Serverless Cloud Function)是騰訊雲提供的無服務器(Serverless)執行環境,通過託管用戶代碼,使用用戶配置的觸發器,根據觸發器的觸發事件,能夠自動執行用戶應用。SCF 雲函數由事件觸發執行,事件來源即觸發器,通常是由其他產品資源對象作為觸發器,例如 COS Bucket, CMQ Topic隊列,定時器, IoT 設備等。

雲函數更多是對用戶的計算進行託管,用戶將代碼和配置提交到雲函數平臺上,此處的代碼是指用戶的一份代碼或者代碼包。配置,一個是指本身對於函數運行環境的配置,包括使用的是哪種環境、所需的內存、超時時間等;另一個是指觸發器的配置。

因為整個函數即服務的運行方式是觸發式運行,觸發就需要有一個事件來源,而事件來源是和騰訊雲其他產品進行關聯後而產生。例如 COS對象存儲產品,它的關聯就在 COS的存儲桶中,當用戶上傳一張圖片或者刪除一張圖片時,就會產生一個事件,這個事件會觸發雲函數的運行。

例如和 API網關的對接,也可以作為事件來源,在用戶的 HTTP請求到達網關之後,API網關會把該請求作為事件轉發給雲函數,觸發雲函數的運行,雲函數拿到請求之後進行處理,生成響應給到用戶。

以腾讯云IoT Suite为例 谈谈边缘计算在物联网的实践与实现

上圖為雲函數的計算過程,用戶先代碼和配置提交到雲函數平臺進行保存,真正事件產生後,針對每一個事件都會拉起一個函數實例,實現觸發式運行。真正事件來臨時,用戶函數才會運行,用戶代碼運行時才有雲函數代碼的數據運算和費用計算。

以腾讯云IoT Suite为例 谈谈边缘计算在物联网的实践与实现

因為函數本身是託管型的,用戶本身無法感知到實例在哪裡運行。雲函數平臺背後有個大的計算資源池,用戶實例觸發之後,從資源池中隨機選取可運行的位置,把用戶的函數實例在對應位置上運營起來。因此整個調度過程,或者事件來臨之後的函數擴縮容過程,都是由平臺進行的。雲函數帶來的價值主要包括四點:

  • 簡化架構:函數粒度的微服務架構,使得系統的各個功能天然解耦,能像搭積木一樣組合自有及外部服務,實現所看即所得的後臺服務;

  • 簡化開發:無需關注底層硬件配置、OS,服務啟停、網絡收發,故障容災,服務擴縮容等,只需寫最核心的業務邏輯,實現真正的代碼即服務;

  • 簡化運維:無須關注服務部署,服務器運維,安全管控,擴縮容配置等,且應用能無縫升級,實現無痛切換到 DevOps模式。

  • 減少支出:無閒置成本,僅對函數資源大小,執行時間,執行次數按需計費,相對雲主機平均 5%~15% 的使用率,價格優勢明顯,實現了最徹底的按需計費。

物聯網主要是和設備打交道,雲函數交由平臺託管的調度,可以把雲函數調度到用戶設備上去。通過雲函數,用戶能夠在邊緣平臺運行應用程序,幫助實現設備上的邊緣計算。開發者只需通過編寫核心代碼並設置代碼運行的條件,即可進行實時文件處理和數據處理。

4 硬件設備如何接入?

接入 IoT Suit

因為主要功能集成在 Iot Suite中,因此硬件設備的接入比較簡單,只需獲取 SDK、配置開發環境、將相關文件進行移植即可。

SDK 獲取

<code>git clone https://github.com/tencentyun/tencent-cloud-iotsuite-embedded-c.git/<code>

開發環境

SDK 在 Linux 環境下的測試和驗證,主要基於 Ubuntu 16.04 版本,gcc-5.4 (建議至少 gcc-4.7+),Python 2.7.12+(代碼生成及控制檯命令行腳本)。安裝 cmake工具 http://www.cmake.org/download/

編譯及運行

a.執行命令,編譯示例程序

<code>cd tencent-cloud-iotsuite-embedded-c mkdir -p build cd build cmake ../ make/<code>

b.編譯後,build目錄下的關鍵輸出及說明如下:

<code>bin |-- demo_mqtt # MQTT 連接雲服務演示程序 |-- demo_shadow # Shadow 影子設備操作演示程序 |-- iotsuite_app # 通用數據模板演示程序 |-- light # 基於數據模板的 RGB LED Light 演示程序 lib |-- libtc_iot_suite.a # SDK 的核心層, libtc_iot_hal、libtc_iot_common 提供連接雲服務的能力 |-- libtc_iot_common.a # SDK 基礎工具庫,負責 http、json、base64 等解析和編解碼功能 |-- libtc_iot_hal.a # SDK 的硬件及操作系統抽象,負責內存、定時器、網絡交互等功能/<code>

c.執行示例程序

<code>cd bin # 運行 demo 程序 ./demo_mqtt # or ./iotsuite_app/<code>

移植說明

SDK 抽象定義了硬件及操作系統平臺抽象層(HAL 層),將所依賴的內存、定時器、網絡傳輸交互等功能, 都封裝在 HAL 層(對應庫 libtc_iot_hal)中,進行跨平臺移植時,首先都需要根據對應平臺的硬件及操作系統情況, 對應適配或實現相關的功能。

平臺移植相關的頭文件及源文件代碼結構如下:

<code>include/platform/ |-- linux # 不同的平臺或系統,單獨建立獨立的目錄 | |-- tc_iot_platform.h # 引入對應平臺相關的定義或系統頭文件 |-- tc_iot_hal_network.h # 網絡相關定義 |-- tc_iot_hal_os.h # 操作系統內存、時間戳等相關定義 |-- tc_iot_hal_timer.h # 定時器相關定義 src/platform/ |-- CMakeLists.txt |-- linux |-- CMakeLists.txt |-- tc_iot_hal_net.c # TCP 非加密直連方式網絡接口實現 |-- tc_iot_hal_os.c # 內存及時間戳實現 |-- tc_iot_hal_timer.c # 定時器相關實現 |-- tc_iot_hal_tls.c # TLS 加密網絡接口實現/<code>

C-SDK 中提供的 HAL 層是基於 Linux 等 POSIX 體系系統的參考實現,但並不強耦合要求實現按照 POSIX 接口方式,移植時可根據目標系統的情況,靈活調整。所有 HAL 層函數都在 include/platform/tc_iot_hal*.h 中進行聲明,函數都以 tc_iot_hal為前綴。

使用 IoT Suit 和 SCF完成邊緣計算

以搭建一個電子圍欄應用為例,用戶只需配置簡單五步即可快速開發:

  • 在雲端創建設備,雲端將為設備分配設備標識,分配通訊通道,分配配置認證信息;

  • 編寫電子圍欄消息處理函數,配置消息轉發規則;

  • 綁定設備與函數,綁定設備與規則;

  • 在設備中安裝邊緣計算 agent,配置設備標識,認證信息,配置通訊通道信息;

  • 啟動 agent,雲端將電子圍欄函數下發至本地,驗證函數與規則在邊緣端生效。

詳細操作請參考文檔:https://cloud.tencent.com/document/product/568

騰訊雲物聯網平臺主要應用於 4大領域,一是為創客提供一站式的物聯網開發環境,從雲到端的開發工具;二是為製造業企業提供可以快速設備物聯網的平臺,打通端到雲的產品能力;三是提供滿足傳統企業物聯網升級的需要,實現數字化轉型;四是為大型企業或政府提供智慧化解決方案,行業解決方案包括智能零售,智能酒店公寓,智慧樓宇,智慧園區,智慧農業、工業物聯網等。

據瞭解,騰訊雲物聯網平臺和邊緣計算已經在 2018騰訊云云 +未來峰會上正式版發佈,現已開放合作伙伴申請入口,感興趣的讀者可以點擊“閱讀原文”申請試用。

王琰,騰訊雲加速產品總監,高級產品經理, 負責騰訊雲 CDN加速、IoT Suite等產品。曾多年從事騰訊 QQ、旋風下載、電腦管家等產品的後臺技術研發工作,對互聯網技術、雲計算、CDN和物聯網都有深入的研究和理解。


分享到:


相關文章: