玩轉MQTT-阿里雲之MQTT使用(上)


引言

       前兩年買一款物聯網控制板,當時把玩了一陣之后,驗證了下串口通訊、MODBUS協議實現、TCP/UDP/DNS/MQTT通訊(基於GPRS)后,就放到角落里吃灰了呵。

最近收到阿里雲的優惠推送,說是什么每月百萬條次使用免費,於是想起了這套吃灰裝備,是不是也高大上一把,體驗下支持高可用、高並發的阿里雲,玩下阿里雲的MQTT服務呢?

      說干就干。

阿里雲服務

      許多人對雲服務一知半解,以為知道個ECS/雲主機,就是雲服務的全部了。其實,雲服務有許多內容,消息中間件服務也是其中一種。

      本次我們要使用的MQTT消息服務也是消息中間件的一種。

      筆者所知道的消息中間件

      ActiveMQ

      Aopllo

      RabbitMQ

      Kafka

      RocketMQ

      

      消息隊列在實際應用中常用的使用場景。異步處理,應用解耦,流量削鋒和消息通訊四個場景,具體內容園中相關文章不少,筆者不再此獻丑了呵。

      本文主要對阿里雲提供的MQTT服務進行具體實戰配置應用進行說明。

 

MQTT簡介

 MQTT是基於二進制消息的發布/訂閱編程模式的消息協議,最早由IBM提出的,如今已經成為OASIS規范。由於規范很簡單,非常適合需要低功耗和網絡帶寬有限的IoT場景,比如:

  • 遙感數據
  • 汽車
  • 智能家居
  • 智慧城市
  • 醫療醫護

 由於物聯網的環境是非常特別的,所以MQTT遵循以下設計原則:

  1. 精簡,不添加可有可無的功能。
  2. 發布/訂閱(Pub/Sub)模式,方便消息在傳感器之間傳遞。
  3. 允許用戶動態創建主題,零運維成本。
  4. 把傳輸量降到最低以提高傳輸效率。
  5. 把低帶寬、高延遲、不穩定的網絡等因素考慮在內。
  6. 支持連續的會話控制。
  7. 理解客戶端計算能力可能很低。
  8. 提供服務質量管理。
  9. 假設數據不可知,不強求傳輸數據的類型與格式,保持靈活性。

運用MQTT協議,設備可以很方便地連接到物聯網雲服務,管理設備並處理數據,最后應用到各種業務場景,如下圖所示:

 

 

 

 

.登錄阿里雲

首先,我們打開阿里雲。

https://www.aliyun.com/

右上角,登錄

 

 

支持多種方式登錄

可用阿里系旗下的淘寶、支付寶、釘釘等帳號登錄而無需注冊呵,真是方便啊

不過當中,還夾了一個微博登錄,不知是什么個情況,本人不用這個,不管也罷。

 

選擇淘寶登錄

 

 

消息隊列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服務的使用准備工作基本就緒,如何進行程序訪問使用呢?且聽下回分解。

 

>>>玩轉MQTT-阿里雲之MQTT使用(下)

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM