AWS的邊緣計算平臺GreenGrass和IoT
AWS的邊緣計算平臺GreenGrass和IoT
為什麼需要有邊緣計算?
如今公有云和私有云平臺提供的服務已經連線上了絕大多數的桌面裝置和移動裝置。但是更多的裝置比如,車輛,工程機械,醫療裝置,無人機,生產機械等等在執行的時候都會產生大量的資料,但這些資料往往不會連線到雲端;
- 有些時候其實是很難連線到雲端,比如在極端條件下工作的機械或者不允許直接連線外網的工業裝置往往不可能一直保持網際網路連線,並實時上傳資料,獲得雲平臺的計算和儲存能力。
- 很多裝置需要對資料有實時的響應,比如醫療器械和精密工業裝置等,雲平臺的資料中心是集中式的。雲平臺連線到終端裝置的延遲是不可控的,雖然我們能夠通過技術手段確保資料中心服務的高可用性,但是網際網路是沒有辦法確保連線的高可用性和高效能的,通過公網提供服務的雲平臺“心有餘而力不足”。
- 所有資料都進入雲資料中心是不經濟的,海量的資料需要幾何增長的資料處理能力。其實終端裝置本身就有一定的資料處理和儲存能力。應該通過邊緣裝置整合並提供這些能力。以減輕雲平臺的壓力和成本。
傳統的IoT架構如下圖所示,其實很難滿足實際的需要。如上面介紹的,雲平臺的儲存和計算能力並不能及時和有效地發揮作用,很多時候IoT裝置並不會和雲端一直保持穩定的連線。
AWS IoT Core
AWS在收購了2lemetry後,以這家公司的產品為原型發展出了AWS IoT Core,作為其最初的物聯網服務的核心平臺。
IoT Core平臺有一個裝置的註冊機制,註冊過的裝置才能夠作為安全的裝置連線到物聯網中和雲端以及其他裝置通訊。AWS IoT Core支援各種主流物聯網平臺的語言和系統。IoT Core也支援安全和可擴充套件的MQTT broker,進行端到雲和雲到端的訊息通訊連線。IoT Core還有擁有一套規則引擎機制,可以定義和過濾資料傳輸,並且能夠和AWS的各種服務進行整合,包括Lambda。
GreenGrass簡單介紹
GreenGrass則彌補上了AWS雲和IoT裝置之間的中間段,主要處理的就是邊緣計算這一部分,尤其在和AWS雲服務中斷同時也能夠繼續執行,甚至可以在邊緣設別上繼續執行Lambda應用。通過GreenGrasss,開發者們把一些實時處理和響應的能力下沉到邊緣計算裝置。亞馬遜在2016年就啟動了GreenGrass專案,當時是作為AWS IoT的線下閘道器存在的。隨著最近幾年邊緣計算的理論和實踐的發展,事件驅動程式設計和機器學習介面成為了邊緣計算的發展和變革的新動力,GreenGrass在AWS的IoT體系中也變得更加重要。
Greengrass由兩個部分組成:Greengrass Core和IoT Device SDK,
- Greengrass Core是Greengrass的Runtime,核心系統功能。可以執行AMS Lambda,進行訊息傳輸,裝置遮蔽(device shadows),安全性保護已經和雲端通訊。
- IoT Device SDK, 用於和Core通訊,釋出和接受Greengrass的訊息。
- 通常IoT裝置都不是獨立工作,各個裝置之間能夠通訊和協作,同時不同的Greengrass Core之間也可以協作。
Lambda是AWS的一個serverless應用框架,支援在AMS雲服務中直接執行程式碼的方式工作;在Greengrass上,AWS實現本地Lambda機制,即在裝置無法連線外部網路的時候仍然能夠進行資料處理和運算。提供了sandbox和本地裝置直接執行兩種模式。
Shadow機制,使用JSON文件定義裝置的狀態和Lambda功能,同時能夠和雲端同步,或者只在本地保留和處理資料。
IoT裝置和Greengrass的通訊方式採用的是MQTT訊息機制,釋出和訂閱的機制,這樣其實簡化了通訊和同步的過程。
最後要提到是:在最近的版本中,AWS IoT Greengrass加入了機器學習執行功能,可以下載Amazon S3 bucket上儲存的訓練好的機器學習模型,在邊緣裝置上執行人工智慧識別等任務