1. 程式人生 > >第七篇:AWS IoT Core服務成本優化

第七篇:AWS IoT Core服務成本優化

AWS IoT 物聯網系列部落格

當前物聯網環境中,裝置型別多種多樣,連線方式不一而足。為了幫助讀者更好的理解並運用 AWS IoT 相關服務,我們提供了一個完整的 IoT 起步指南,包含裝置的註冊及上線、裝置管理、使用者身份及許可權管理以及成本控制,通過這一系列的起步指南,也可以快速瞭解到 AWS IoT 服務如何與 Amazon Alexa 語音助手進行整合。AWS IoT 物聯網系列共8篇,本篇是該系列的第一篇,其他篇連結請在本文結尾處檢視。

背景介紹

在進行物聯網裝置連線時,每個裝置都需要通過訊息的形式與 IoT Core 進行資料互動。隨著訊息互動數量的增加,如果不對整體架構進行優化,很容易造成訊息成本的指數增長,甚至是不必要的浪費。本文結合 AWS IoT Core 的相關計費方式,探討潛在的成本優化模型,從而更好的幫助在有限預算下提升產業效能及使用體驗。

AWS IoT Core物聯網服務計費模型:

AWS IoT Core 服務的計費模型主要包括四個部分,每個部分獨立計費,使得成本優化的顆粒度更細。以下計費報價參考 AWS 美國東部區域的報價,詳細點這裡

1.    連線性:

裝置閘道器負責維護 IoT 解決方案中的所有互聯裝置的會話。AWS IoT 裝置閘道器支援通過 MQTT、MQTT Over WebSockets 和 HTTP 實現的互聯裝置與 AWS 平臺之間的安全、雙向通訊。MQTT 和 HTTP 等通訊協議使公司能夠利用行業標準協議,而不必使用會限制將來的互操作性的專屬協議。其中連線費用與描述如下:

  • $0.08每1百萬個裝置/每分鐘

每個裝置以全年每時每刻連線計算共525,600分鐘(60分鐘*24小時*365天)計算,每個裝置的連線一年的總費用為$0.042

  • PING 訊息包括 MQTT PINGREQ,MQTT PING RSP 訊息沒有費用。

2.    收發訊息:

物聯網裝置連線時,裝置的狀態需要通過訊息的形式與 IoT 平臺進行資料互動。AWS IoT 訊息代理就是這麼一項釋出/訂閱訊息的代理服務,可是與 IoT 裝置相互發送和接收訊息。在與 AWS IoT 通訊時,客戶端(裝置)將經過編址的訊息傳送到 Sensor/temp/room1 之類的主題。進而,訊息代理將訊息傳送到已註冊接收該主題訊息的所有客戶端。傳送訊息的操作被稱為釋出。已註冊接收該主題篩選訊息的操作被稱為訂閱。其中訊息型別包含:

  • 裝置發到 AWS IoT 服務的訊息數量
  • AWS IoT 發到裝置的訊息數量
每月訊息數總計 計費
小於10億條 $1.00
10億條到50億條 $0.80
多於50億條 $0.70

每條訊息以5KB長度計費,多於5KB,等價到多個5KB進行費用收取,例如8KB的訊息,按照2條5KB訊息收取費用。每條訊息長度最大128KB

3.    裝置影子與設備註冊:

Device Shadow 服務可以為您連線到 AWS IoT 的每臺裝置在雲中保留一個“影子”。無論該裝置是否連線到 Internet,您都可以使用該影子通過 MQTT 或 HTTP 獲取和設定裝置的狀態(呼叫 AWS IOT API 中的 GetThingShadow 或者 UpdateThingShadow)。每臺裝置的影子都由相應事物的名稱唯一標識。具體請參考“適用於 AWS IoT 的 Device Shadow 服務

裝置影子與設備註冊費用如下:

  • $1.25每1百萬個裝置影子操作
  • $1.25每1百萬個設備註冊操作
  • 資料大小以1KB 為單位進行收費

4.    規則引擎:

收到 IoT 裝置的訊息之後,AWS 將對訊息進行資料儲存,分析等操作。這個操作由規則引擎來觸發。

AWS IoT 規則由 SQL SELECT 語句、主題篩選條件和規則操作組成。裝置通過將訊息釋出到 MQTT 主題來向 AWS IoT 傳送資訊。利用 SQL SELECT 語句,您可以從傳入的 MQTT 訊息提取資料。AWS IoT 規則的主題篩選條件用於指定一個或多個 MQTT 主題。當與主題篩選條件匹配的主題收到 MQTT 訊息時,規則將被觸發。藉助規則操作,您可以獲取從 MQTT 訊息提取的資訊並將其傳送到其他 AWS 服務做儲存與分析等。規則操作是針對 Amazon DynamoDB、AWS Lambda、Amazon SNS 和 Amazon S3 等 AWS 服務定義的。使用 Lambda 規則,您可以呼叫其他 AWS 服務或第三方 Web 服務。有關規則操作的完整列表,請參閱 AWS IoT 規則操作。規則引擎的觸發與執行費用如下:

  • $0.15 每1百萬次規劃引擎觸發
  • $0.15 每1百萬次規劃引擎執行
  • 每條觸發的訊息以5KB為單位收取費用,多於5KB,以多條5KB進行計費

費用計算案例:

1.  如下以10,000臺裝置為例,來計算 AWS IoT 服務收費,例子中每臺裝置操作包括:

  • 每5分鐘 Ping 主服務一次,全年保持活躍
  • 約每30分鐘傳送1條訊息,每天共傳送50條訊息,每條訊息1KB
  • 約每30分鐘收到1條訊息,每天共收到50條訊息,每條訊息1KB
  • 每天裝置影子100次更新,訊息容量1KB
  • 每天觸發規則引擎100次,執行100次

a.  每個裝置計算過程如下:

  • 連線時長:
    • 全年保持活躍,連線時間共525,600分鐘(60分鐘*24小時*365天)
  • 訊息數:
    • 發50條,收50條,共100條,每條1KB,按5KB計算
  • 裝置影子與設備註冊訊息:
    • 每條訊息都更新裝置影子,共100條,每條1KB
  • 訊息引擎觸發數:
    • 共觸發100次,執行100次

b.  10,000(1萬)臺裝置,每臺裝置每月費用,每年費用,裝置總年費用按表格統計如下:

計費型別

每臺裝置 計費 每個裝置年度費用 1萬個裝置月度費用 1萬個裝置年度費用
連線 全年連線525,600分鐘 $0.08/1,000,000 分鐘 $0.004 $3.456 $420.48
訊息 每天共100條訊息,每條1KB $1.00每百萬條訊息 $0.037 $30.000 $360.00
設備註冊與裝置影子 每天共100次更新,每條1KB $1.25每百萬次更新 $0.046 $37.500 $450.00
規則引擎 每天觸發100次,執行100次 $0.15每百萬次觸發 $0.011 $9.000 $108.00
總價格 $0.097 $79.956 $1,338.48

由下圖可以看出連線方面的費用比較固定,訊息,裝置影子,引擎在收費專案中所佔比例比較大。那麼在使用當中,如何調整這3個專案,來優化費用比較?

費用優化:

下面只是給出一個優化思路,真正優化方案的前提,還是以使用者實際需求出發

思路1:調整訊息資料與內容:

  1. 假設裝置狀態在30分鐘內改變非常少,如夜間的家用 IoT 裝置如淨水器、掃地機器人等。可以調整(減少)資訊傳送間隔,聚合資訊長度,比如上例中,可以每隔60分鐘傳送一次資訊,或者轉為終端觸發式(啟動或者關閉前傳送)。減少傳送次數。如在裝置啟動後與關閉前傳送訊息。
  2. 豐富傳送內容,對於例行訊息,可以在觸發式,一起傳送到平臺,比如過去3條聚合在一起,成為1條3KB 資訊,傳送總數減少,每條容量5KB 內不額外收費。如 IoT 裝置淨水器在開啟時連線3條訊息傳送開水時間,濾芯狀態,是否漏水等,可以合併為一條一起傳送。
  3. 由於 IoT 訊息多與裝置相關,有一些與裝置應用相關的資訊資料,如裝置採集的影象與視訊等,可以由裝置其它通道傳入到雲端儲存進行儲存,如檔案儲存到 AWS S3,流式資料可以通過 AWS Kinesis 客戶端儲存。

思路2:關於裝置影子

  1. 裝置影子的主要目的是方便雲端在裝置離線時進行管理。所以有關此類狀態資訊會發給裝置影子,相應的,不需要此功能的,可以不傳送給影子訊息主題。以節省費用。比如家用電器接入 WIFI 之後網路暢通場景。可以減少裝置影子使用。
  2. 舉例而言,對100條訊息進行分類,以其中50條不需要裝置影子為例。

思路3:細化規則引擎邏輯,消除訊息引發的規則引擎的重複判斷與執行。

  1. 合併規則引擎執行,比如具有 IoT 功能的家用電器發訊息到 IoT 規則引擎後,對某個符合條件訊息的規則進行以下動作
    • 本條訊息儲存到 AWS S3 物件級儲存中
    • 本條訊息儲存到 AWS DynamoDB 方便展現
    • 本條訊息觸 AWS SNS 進行通知或者報警
    • 本條訊息啟用 AWS Lambda 進行復雜邏輯判斷,比如是否觸發購買提醒等
  2. 對於上述動作,可以由最後一條 AWS Lambda 執行邏輯程式碼中寫入前4條邏輯,由 Lambda 來完成訊息儲存到 S3,寫到 DynamoDB,判斷是否 SNS 通知報警等。這樣觸發由過去5條轉為1條,節約成本。AWS Lambda 相關文件點選這裡,關於 Lambda 的限制文件參考這裡

以此思路優化之後,費用減少近54%(使用者請以實際使用為準)如下:

計費型別 每臺裝置 計費 每個裝置年度費用 1萬個裝置月度費用 1萬個裝置年度費用
連線 全年連線525,600分鐘 $0.08/1,000,000 分鐘 $0.004 $3.456 $420.48
訊息 每天共30條訊息,每條3KB $1.00每百萬條訊息 $0.011 $9.000 $108.00
設備註冊與裝置影子 每天共50次更新,每條1KB $1.25每百萬次更新 $0.023 $18.750 $225.00
規則引擎 每天觸發100次,執行25次 $0.15每百萬次觸發 $0.007 $5.625 $67.50
總價格 $0.045 $36.831 $820.98

參考文件:

本篇作者

相關推薦

AWS IoT Core服務成本優化

AWS IoT 物聯網系列部落格 當前物聯網環境中,裝置型別多種多樣,連線方式不一而足。為了幫助讀者更好的理解並運用 AWS IoT 相關服務,我們提供了一個完整的 IoT 起步指南,包含裝置的註冊及上線、裝置管理、使用者身份及許可權管理以及成本控制,通過這一系列的起步指南,

數據預處理(四) - 數據歸約(PCA/EFA為例)

通過 mage 如果 解釋 最大似然法 能力 似然 模擬 ont 前言 這部分也許是數據預處理最為關鍵的一個階段。 如何對數據降維是一個很有挑戰,很有深度的話題,很多理論書本均有詳細深入的講解分析。 本文僅介紹主成分分析法(P

R語言學習 列表

方法 靈活的數據類型 引號 bounds 參考 最大的 post 長度 索引操作 列表(List)是R中最復雜的數據類型,一般來說,列表是數據對象的有序集合,但是,列表的各個元素(item)的數據類型可以不同,每個元素的長度可以不同,是R中最靈活的數據類型。列表項可以是列表

Python3連接MySQL

定義 執行 對象 delet l數據庫 hal gin sele fault 第七篇:Python3連接MySQL 連接數據庫 註意事項 在進行本文以下內容之前需要註意: 你有一個MySQL數據庫,並且已經啟動。 你有可以連接該數據庫的用戶名和密碼 你有一個有權限操作的d

Jmeter連接MySQL的測試

jmeter 數據表 準備 技術 con image sql數據庫 添加 參數配置 .準備一個有數據表格的MySQL數據庫; 2.在測試計劃面板上點擊瀏覽按鈕,把你的JDBC驅動添加進來; mysql-connector-java-5.1.26-bin.jar 3

Linux系統啟動流程

.com 標誌位 linu http 操作系統 流程 mbr 我們 png 1.bios:是在主板上的一段程序,決定計算機從哪一塊啟動介質中讀操作系統。2.硬盤最小單位是扇區,一個扇區512byte,計算機啟動第一個讀的扇區叫“主引導記錄”(MBR),446B:引導信息 6

史上最簡單的SpringCloud教程 | 高可用的服務註冊中心

pad 配置 設置ip systems 高可用性 多個 could hostname 打開 最新Finchley版本請訪問:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f10-eureka/或者http://

遞迴插入,修改版

專案場景:        將一個樹上的節點插入到資料庫,節點之間有父子關係,每個節點有一個id和pId,父子關係表述為:父節點的id為子節點的pId值。在上一個日誌中,所有節點的值已經全部打包完傳給了後臺。現在執行插入操作。難點:

Python金融系列市場風險

作者:chen_h 微訊號 & QQ:862251340 微信公眾號:coderpai 第一篇:計算股票回報率,均值和方差 第二篇:簡單線性迴歸 第三篇:隨機變數和分佈 第四篇:置信區間和假設檢驗 第五篇:多元線性迴歸和殘差分析 第六篇:現代投資組合

史上最簡單的SpringCloud教程 | 高可用的分散式配置中心(Spring Cloud Config)

最新Finchley版本請訪問: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f7-config/ 或者 http://blog.csdn.net/forezp/article/details/81041

微信粉絲一鍵同步工具類

1、前言   在公眾號開發的過程中,一般都需要獲取粉絲資料,針對單個粉絲,我們可以通過openid獲取其粉絲資訊; 但不排除這種業務,比如目前開發的公眾號已經在使用中,,當前的框架或者功能已經不能夠滿足使用者的需求、需要重新開發,那麼這個時候你開發的新的微信專案將要接入到之前老的微

精通SpringBoot——整合Redis實現快取

專案中用到快取是很常見的事情, 快取能夠提升系統訪問的速度,減輕對資料庫的壓力等好處。今天我們來講講怎麼在spring boot 中整合redis 實現對資料庫查詢結果的快取。 首先第一步要做的就是在pom.xml檔案新增spring-boot-starter-data-redis。 要整合快取,必

從零開始學產品常用的功能模組有哪些

一個系統中都有哪些模組組成,對於初學者來說,可能還不能夠區分的很清楚。 但是仔細回想一下,是不是幾乎所有的功能都有登入和註冊的功能?   啟動頁,Banner,輪播,個人中心,關於我們,意見反饋,設定,忘記密碼,支付,地圖,等等等等。 這些都是屬於一個系統裡很常見的功能

R繪圖 繪製條形圖(ggplot2)

使用geom_bar()函式繪製條形圖,條形圖的高度通常表示兩種情況之一:每組中的資料的個數,或資料框中列的值,高度表示的含義是由geom_bar()函式的引數stat決定的,stat在geom_bar()函式中有兩個有效值:count和identity。預設情況下,stat="count",這意味著每個條的

nginx教程ngx_http_core_module模組提供的變數

在記錄access_log訪問日誌檔案時, 可以使用ngx_http_core_module模組處理請求時所產 生的豐富的變數, 當然, 這些變數還可以用於其他HTTP模組。 例如: 當URI中的某個

Spring Boot整合Spring Cache

為了提高效能,減少資料庫的壓力,使用快取是非常好的手段之一。因此本文講解 Spring Boot 如何整合快取管理。 宣告式快取 Spring 定義 CacheManager 和 Cache 介面用來統一不同的快取技術。例如 JCache、 EhCache、 Hazelcast、

資料分析 相關分析

相關分析是資料分析的一個基本方法,可以用於發現不同變數之間的關聯性,關聯是指資料之間變化的相似性,這可以通過相關係數來描述。發現相關性可以幫助你預測未來,而發現因果關係意味著你可以改變世界。  一,協方差和相關係數 如果隨機變數X和Y是相互獨立的,那麼協方差 Cov(X,Y) = E{ [X-E(X)]

Python 語言學習 函式1(定義、呼叫和變數的作用域)

函式是把一些語句集合在一起的程式結構,用於把複雜的流程細分成不同的元件,能夠減少程式碼的冗餘、程式碼的複用和修改程式碼的代價。 函式可以0個、1個或多個引數,向函式傳遞引數,可以控制函式的流程。函式還可以返回程式碼執行的結果,從技術上講,任何函式都要返回結果,一個沒有返回值的函式會自動返回none物件。如果

Docker $ Docker部署SpringBoot+Mysql

一.Dockerfile常用指令 FROM 目的 指定基礎映象 特點 需要寫在其他指令之前,之後的指令都依賴於該指令指定的映象。 語法 FROM <image> FROM

Spring Cloud | Eureka叢集高可用的配置

       一直在網上查閱資料,配置高可用的叢集,看完了發現還是不明白,或者按照文章的內容一步一步去實現發現根本實現不了,真的很懷疑他們寫的時候是否真的自己測試過了還是大家都是轉發來轉發去的,自己弄了好久,發現沒有一個拿來就可以用的,並且裡面很多的東西也沒有講解清楚,於是打