引言
前兩年買一款物聯網控制板,當時把玩了一陣之后,驗證了下串口通訊、MODBUS協議實現、TCP/UDP/DNS/MQTT通訊(基於GPRS)后,就放到角落里吃灰了呵。
最近收到阿里雲的優惠推送,說是什么每月百萬條次使用免費,於是想起了這套吃灰裝備,是不是也高大上一把,體驗下支持高可用、高並發的阿里雲,玩下阿里雲的MQTT服務呢?
說干就干。
阿里雲服務
許多人對雲服務一知半解,以為知道個ECS/雲主機,就是雲服務的全部了。其實,雲服務有許多內容,消息中間件服務也是其中一種。
本次我們要使用的MQTT消息服務也是消息中間件的一種。
筆者所知道的消息中間件
ActiveMQ
Aopllo
RabbitMQ
Kafka
RocketMQ
消息隊列在實際應用中常用的使用場景。異步處理,應用解耦,流量削鋒和消息通訊四個場景,具體內容園中相關文章不少,筆者不再此獻丑了呵。
本文主要對阿里雲提供的MQTT服務進行具體實戰配置應用進行說明。
MQTT簡介
MQTT是基於二進制消息的發布/訂閱編程模式的消息協議,最早由IBM提出的,如今已經成為OASIS規范。由於規范很簡單,非常適合需要低功耗和網絡帶寬有限的IoT場景,比如:
- 遙感數據
- 汽車
- 智能家居
- 智慧城市
- 醫療醫護
由於物聯網的環境是非常特別的,所以MQTT遵循以下設計原則:
- 精簡,不添加可有可無的功能。
- 發布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞。
- 允許用戶動態創建主題,零運維成本。
- 把傳輸量降到最低以提高傳輸效率。
- 把低帶寬、高延遲、不穩定的網絡等因素考慮在內。
- 支持連續的會話控制。
- 理解客戶端計算能力可能很低。
- 提供服務質量管理。
- 假設數據不可知,不強求傳輸數據的類型與格式,保持靈活性。
運用MQTT協議,設備可以很方便地連接到物聯網雲服務,管理設備並處理數據,最后應用到各種業務場景,如下圖所示:
.登錄阿里雲
首先,我們打開阿里雲。
右上角,登錄
支持多種方式登錄
可用阿里系旗下的淘寶、支付寶、釘釘等帳號登錄而無需注冊呵,真是方便啊
不過當中,還夾了一個微博登錄,不知是什么個情況,本人不用這個,不管也罷。
選擇淘寶登錄
消息隊列MQ
咦,不是要說MQTT嗎?怎么扯到MQ消息隊列了呢?這是因為阿里雲的MQTT服務自身沒有持久化功能,需要依托MQ服務的持久化,所以我們需要先開通MQ服務。
登錄阿里雲后,找到管理控制台,在如下位置,找到MQ相關服務
阿里雲中的產品太多,筆者摸索了半天才找到的呵。
開通RocketMQ服務
選擇消息隊列MQ
單擊消息隊列 RocketMQ 進入消息隊列 RocketMQ 的產品主頁。
在消息隊列 RocketMQ 的產品主頁上,單擊立即開通進入消息隊列 RocketMQ 服務開通頁面,根據提示完成開通服務。
注:開通服務不收費!!!
創建資源
資源類型說明
一個新的應用接入消息隊列 RocketMQ 需要先創建相關的消息隊列 RocketMQ 資源,包括:
- 實例:用於消息隊列 RocketMQ 服務的虛擬機資源,會存儲消息主題(Topic)和客戶端 ID(Group ID)信息。
- 消息主題(Topic):在消息隊列 RocketMQ 的消息系統中,消息生產者將消息發送到某個指定的 Topic ,而消息消費者則通過訂閱該指定的 Topic 來獲取和消費消息。
- Group ID:用於消息消費者(或生產者)的標識
- 阿里雲 AccessKey:用於收發消息時進行賬戶鑒權
MQ服務管理界面如下
微消息隊列MQTT
在阿里雲中,MQTT被稱為微消息隊列,大家入鄉為俗吧。
點擊 消息隊列 RocketMQ ,出現下拉列表
哦,原來MQTT服務你躲在這里啊(產品中直接搜索MQTT是找不到的哦)
各位同學,看到的界面可能與我有所不同,可能在看到上述界面之間,未開通相關服務的同學,可能會看到一個開通相關服務的界面,點擊開通就行了呵。(已開通的話,相關界面是不會再顯示的呵)
僅開通服務,不創建相關資源,是不會收費的呵。
創建MQTT實例
創建MQTT實例
彈出購買界面
很多同學可能看到這里就准備要走人了呵,別急,往下看
我們選擇最右側的按量付費套餐。
該收費方式按使用收費!!!
除了頂級Topic是按每天每條2元錢收取資源占用費,其余的內容,按實際使用量收費。
如測試階段,頂級Topic可以使用時創建,用完刪除,僅收費使用日的資源占用費。
我們繼續。
購買后,系統自動生成一個MQTT服務實例
系統顯示我們已成功創建了一個實例
同時,系統給出了第二步的向導:
消息存儲配置
阿里雲中的MQTT服務沒有提供存儲功能,需要一個MQ服務來提供支持。
控制台給出的選項中,Kafka和AMQP目前均不可用
只有RocketMQ可選。
好吧,這也算是選擇的話(我有得選嗎?)
我們選擇新建共享實例,我們以共享單車應用為例,取一個 bike 的實例名
確認,系統生成RocketMQ實例
系統完成MQTT實例的配置,並給出了公網接入點地址。
創建Topic
阿里雲的MQTT主題訂閱要求必需創建一個頂級的主題資源,這點可能與一些自行搭建的MQTT Broker有所區別,筆者分析可能是出於管理的需要。
我們創建一個項級Topic
我們選擇普通消息,其他的消息類型,大家可自行查看相應的說明。
創建組ID
組ID也是阿里雲MQTT通訊中的一定規定,ClientID需要使用組ID為前綴。
RAM資源訪問控制
在服務創建過程中,阿里雲系統會提示我們需要配置RAM管理
RAM應是資源訪問管理的意思,大家可以自行查閱。
創建用戶
我們創建一個名為bike的用戶
點擊確定,系統提示需要手機驗證,我們獲取驗證碼后填入並確定(如不需要該用戶具有管理功能,只選擇編程訪問,僅用於程序訪問,可無需短信驗證)
系統生成用戶信息,生成了用戶名和密碼
大家切記,一定要點制復制,將用戶信息進行妥善保存,否則,你會發現,前面一頓操作猛如虎,沒有AccessKeySecret白瞎杵。
一旦關閉此頁面,AccessKeySecret是無法再找回的。
不過,系統中雖然不能查看AccessKeySecret,但是還是允許為用戶創建新的AccessKey和AccessKeySecret,萬一AccessKeySecret丟失,只有新創建了。
授權
創建用戶后,需要對用戶進行授權
對用戶添加權限
我們授與創建用戶的MQ訪問權限。
MQTT服務驗證
到這里MQTT服務的使用准備工作基本就緒,如何進行程序訪問使用呢?且聽下回分解。