微消息队列 MQTT 版是阿里云推出的一款面向移动互联网以及物联网领域的轻量级消息中间件。如果说传统的消息队列中间件一般应用于微服务之间,那么适用于物联网的微消息队列 MQTT 版则实现了端与云之间的消息传递和真正意义上的万物互联。本文介绍微消息队列 MQTT 版的系统架构、应用场景和产品优势。

核心概念

  • Topic:消息主题,一级消息类型,生产者向其发送消息。
  • 生产者:也称为消息发布者,负责生产并发送消息至 Topic。
  • 消费者:也称为消息订阅者,负责从 Topic 接收并消费消息。
  • 消息:生产者向 Topic 发送并最终传送给消费者的数据。
  • 规则微消息队列 MQTT 版与其他阿里云产品实现数据互通的资源。

消息收发模型

微消息队列 MQTT 版主要包含以下两种消息收发模型:

  • 设备端自发自收模型
    该模型适用于移动端 App 或者设备之间的数据通信,典型场景是 IM 通信场景中两个用户直接聊天消息,以及智能设备场景中 App 端控制智能设备。在该模型中消息的生产者和消费者都是分布在移动端环境,通过 MQTT 协议连接到微消息队列 MQTT 版产品。model_1
  • 设备端与后台服务交互模型

    该模型下,微消息队列 MQTT 版与其他阿里云产品的交互是通过规则实现的,适用于以下两种场景:

    • 设备端发布消息,后台服务接收消息:适用于数据上报的场景,典型场景是智能设备的状态数据上报或者移动 App 的应用数据采集上报。在该模型中消息的发送方是海量的移动设备,一般按照业务场景发送数据,消息的接收方是后台服务,一般部署在云上,例如阿里云 ECS,批量消费上报的数据。微消息队列 MQTT 版根据数据流出规则将数据导出至其他阿里云产品。
    • 后台服务发布消息,设备端接收消息:适用于指令下发场景,典型场景是智能设备的云端控制或者是移动 App 推送信息。在该模型中消息的发送方是后台应用,一般部署在云上,例如阿里云 ECS,消息的接收方是移动端设备或者 App。微消息队列 MQTT 版根据数据流入规则接收其他阿里云产品导入的数据。
    model_2
说明 当前,规则仅适用于实现与消息队列 RocketMQ 版的数据互通。规则详情请参见规则管理

根据这两种消息收发模型,可以将使用微消息队列 MQTT 版的开发人员分为终端和云端两大类。终端开发人员对应收发模型图中的设备端,云端开发人员对应图中的业务后台应用。两类开发人员所需的二次开发内容请分别参见终端开发指南云端开发指南

系统技术栈

微消息队列 MQTT 版在数据传输层支持原生 TCP 长连接、SSL 加密、WebSocket 等传输形式,支持包括 C/C++、Java、iOS、Android 等主流开发语言和平台。微消息队列 MQTT 版的系统技术栈如下所示。

stack_v3.x.x

应用场景

微消息队列 MQTT 版拥有多协议、多语言和多平台的支持能力,且广泛应用于移动互联网以及物联网领域,覆盖移动直播、车联网、金融支付、智能餐饮、即时聊天等多种应用场景。

下图展示了微消息队列 MQTT 版的主要应用场景。

scenario_latest

产品优势

微消息队列 MQTT 版相当于一个具备无限扩展能力的连接网关,不仅提供了自闭环的消息收发和存储能力,还提供了规则转入转出能力。您可以通过配置规则搭配阿里云其他产品,例如传统服务端消息中间件(消息队列 RocketMQ 版、消息队列 Kafka 版等)来实现云和端的数据双向互通。

微消息队列 MQTT 版系统采用分布式理念进行设计,无单点瓶颈,各组件之间均可以无限水平扩展,保证容量可以随着您的在线使用量进行调整,并且对用户完全透明。

下图展示了微消息队列 MQTT 版的产品优势。

图 1. 产品优势
product_advantage_without_808

相比其他移动端消息服务,微消息队列 MQTT 版具有以下优势:

  • 支持的都是标准协议,例如 MQTT、STOMP,应用方无技术捆绑,使用绝大多数开源的 SDK 即可无缝迁移到云上。
  • 作为一个海量移动终端长连接网关,后端通过规则引擎和阿里云其他消息产品数据打通,应用可以无需搭建自己的网关即可实现端和云的双向通信。
  • 支持设备级权限控制,并支持 SSL/TLS 加密通信,数据传输更安全可靠。