在互联网高速发展的今天,对网络的接入已经不局限于桌面端的应用,更多的是移动端,网页端等场景。这些亿万级的设备和终端大多通过WiFi,4G等通讯媒介接入互联网,而这些海量设备终端之间如何实现相互通信是一个问题。在这个问题中消息服务是一个不可或缺的环节,通过消息系统可以很好的解决设备之间的信息互通问题,例如数据的上传和命令下发,以及端和端之间的即时通讯等。
一、背景介绍
Aliware MQ是阿里云商用的专业消息中间件,是企业级互联网架构的核心产品。针对移动端物联网等领域使用消息系统的场景,MQ通过支持标准MQTT协议的方式来满足需求。MQTT协议是一种轻量的,基于发布订阅模型的即时通讯协议。该协议设计开放,协议简单,平台支持丰富,几乎可以把所有联网物品和外部连接起来,因此在移动互联网和物联网领域拥有众多优势。通过比较可以发现,MQTT协议主要包括以下特点:
- 使用发布/订阅消息模式,提供一对多的消息分发,解除了端和端之间的耦合;
- 对负载内容屏蔽的消息传输;
- 使用 TCP/IP 提供基础的网络连接;
- 有三种级别的消息传递服务;
- 小型传输,开销很小,协议交换最小化,以降低网络流量;
二、系统架构
AliWare MQ完整支持MQTT3.1.1协议,通过在MQ Core基础上增加MQTT协议网关的方式对互联网上的客户端提供服务。整个系统架构如下图所示:
其中,MQ Core Service 负责底层的消息存储和分发,上层支持MQ私有协议服务器以及MQTT协议 网关服务器。MQTT网关负责对用户的 MQTT 客户端提供服务,同时负责 MQTT 协议和后端 MQ 私有协议的转换。主要工作如下:
- 提供 MQTT 服务,将用户的 MQTT 消息转换成后端 MQ 消息存储到 MQ 核心系统中,实现数据上行采集。
- 接收来自 MQ 的消息,并将消息转换成对应的 MQTT 消息,推送给 MQTT 客户端,实现数据下行推送。
基于Aliware MQ的MQTT服务相比其他物联网消息服务具有以下优势:
- 支持标准的 MQTT 协议,应用方无技术捆绑,可以无缝迁移。
- 可以支持移动端 MQTT 消息和服务端 MQ 消息的相互流转,实现服务端和移动端的双向打通。
- 支持设备级权限控制,并支持SSL/TLS加密通信,数据传输更安全可靠。
- 兼容任何支持 MQTT 3.1.1协议的 SDK,覆盖绝大多数移动端开发语言和平台。
三、应用场景
截止目前,Aliware MQ已经为数百位用户提供MQTT服务,每天支持千万级设备在线互动,十万级TPS的消息推送。这些用户的使用场景覆盖了直播互动,车联网,金融支付,即时聊天等多个场景。同时,MQTT服务端采用分布式理念进行设计,系统无单点瓶颈,各个组件都可以无限水平扩展,保证容量可以跟随用户在线使用量进行调整。
四、特色功能
MQ针对MQTT移动端开发流程中常见的问题,优化了资源申请创建等流程,提供包括Java,Android,IOS等多个端的一键运行demo,大大降低接入成本。同时,依托于MQ Core强大的消息处理能力,可以保证服务大量在线客户端的同时做到消息的低延迟推送,极大的优化了用户的消息传输体验。最后,为了方便用户进行日常开发和线上业务评估,在控制台上开放了包括设备在线状态统计,消息收发报表数据等一系列查询功能。
1.便捷的接入流程
使用Aliware MQ的MQTT服务仅仅需要申请消息收发的Topic和客户端分组GroupID,然后即可使用任何兼容MQTT3.1.1协议的客户端SDK编写程序进行消息收发。申请资源过程如下图所示:
具体流程请参考接入文档。
2.强大的推送能力
依托于MQ Core强大的消息处理能力,MQTT服务端可以提供千万级的客户端同时在线互动,同时能够做到消息的毫秒级推送延迟。具体的数据参考下图,在30w+TPS的推送下保持100ms级的推送延迟。
水平扩展
3.丰富的运维查询功能
MQ通过控制台和OpenAPI开放了丰富的运维查询功能,分别是设备维度的状态数据查询,分组维度的在线统计查询,以及消息维度的收发统计。
设备状态查询:
通过输入完整的设备ClientID即可定位该设备目前的在线状态,订阅关系等数据,可以清晰定位消息收发不正确的原因。
分组状态查询:
通过分组GroupID即可得到当前分组目前的在线终端数量,以及历史在线曲线,方便业务方进行准确的业务发展规模评估。
分组堆积查询:
通过对消息收发过程的埋点分析,MQ支持分组设备的消息堆积查询,可以第一时间对指定分组消息收发的异常进行预警。
消息维度报表查询:
MQTT消息支持完善的数据收发统计报表,用户可以配置多个过滤条件,比如子topic,qos,发布订阅类型等条件来统计自己关心的消息收发量和TPS。