zoukankan      html  css  js  c++  java
  • 玩转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使用(下)

     

     

  • 相关阅读:
    [LeetCode] 1474. Delete N Nodes After M Nodes of a Linked List
    [LeetCode] 1836. Remove Duplicates From an Unsorted Linked List
    [LeetCode] 1642. Furthest Building You Can Reach
    [LeetCode] 872. Leaf-Similar Trees
    [LeetCode] 1720. Decode XORed Array
    445. 两数相加 II
    83.删除链表中的重复元素
    笔试题常见的需要模板
    背包问题
    62.63 不同路径
  • 原文地址:https://www.cnblogs.com/flyfire-cn/p/10633995.html
Copyright © 2011-2022 走看看