MQ 介绍|学习笔记

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习 MQ 介绍

开发者学堂课程【分布式消息中间件 MQ 开发教程:MQ 介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/364/detail/4349


MQ 介绍

内容介绍:

一、MQ 的由来

二、MQ 产品总览

三、MQ 三种发送方式

四、MQ 三种方式发送消息比较

五、MQ 消费模式

六、HTTP 接入

七、事务消息

八、消息过滤

九、顺序消息

十、MQTT 介绍

十一、MQTT 应用场景介绍

十二、消息轨迹-快速定位问题

十三、MQ 中继

十四、总结-MQ 阿里双11使用的消息中间件

十五、MQ 广泛应用于各行业

十六、MQ+ARMS 物联网解决方案


一、MQ 的由来

MQ 产品简介

阿里内部产品名:MetaQ、Notify

开源社区产品名:RocketMQ

阿里内部1000+核心应用使用,每天流转几千亿条消息,稳定可靠

多次经过双11阿里交易、商品、营销等核心链路真实场景验证

image.png

消息队列 MQ 产品解析:消息队列以及 MQ 是阿里巴巴集团中间件技术部自主研发的专业消息文件,基于高可用分布式集群技术的企业级互联网架构的核心产品。

 MQ 的历史超过九年,为分布式应用系统提供不竭于削峰平谷的能力,同时具备海 量消息堆积,高通透可靠从事等互联网业务所需的特性,是阿里巴巴双11使用的核心产品。阿里内部有上千个核心应用使用,每天流转几千亿条消息,稳定可靠,并且MQ 多次经过双11案例交易、商品营销等核心内容的真实场景验证。

MQ 也有很多特色功能,包括顺序消息、事务消息、定时消息,同时支持广播消费与集体消费、消息过滤消息轨迹等。


二、MQ 产品总览

MQ 是一种支持万亿级数据洪峰的分布式消息引擎,是一种面向消息系统的高性能、高可靠、低延迟的分布式消息系统,可以提供面向终端场景的安全的、可靠的、高效的消息传输服务。也是一种面向广和网络环境下跨语言跨平台的应用互联互通的专有解决方案。为了达成这些目标,MQ 提供专有云输出专业版、企业铂金版、物联套件

公共云服务-同城多机房多份备份公有云、金融云。

MQ 提供管理控制台,提供多协议接入,提供运维系统以及远程运维服务。

用户在控制台上可以做到发布/订阅管理、授权管理、消息查询、生产与消费报表、监控报警、回溯消费、消息轨迹、OPEN API、mqadmin 命令集。

同时通过运维系统可以做到统计监控安装不属于升级产品配置诊断排查。在遇到使用问题也提供一定的运营服务,用户可以通过的热线电话得到远程支持,也可以通过反馈工单性故障处理同时。甚至提供现场的专家服务。

在产品层面,MQ 也支持多协议接入,包括 TCP 协议 SDK 接入、HTTP 协议简单接入、MQTT 协议物联接入。

在客户端使用方面,MQ 提供三种消息发送机制,包括同步可靠、异步可靠、oneway 方式、Topic、消息订阅。

消息类型只支持普通消息、定时(延时)消息、事务消息、顺序消息。

运维系统包括统计监控、安装部署/升级、产品配置、诊断排查。

运维服务包括客户热线电话/远程支持、工单/故障处理、现场专家服务。


三、MQ 三种发送方式

MQ 的三种发送方式,第一种是可靠同步发送,是指消息发送方发送出去后会再收到接收方发回响应,之后才能发送下一个数据包的通讯方式。

如果需要发送三条消息,首先需要发送消息一,得到消息的同步响应,然后发送消息二,得到消息二同步响应,最后发送消息三,得到调节三的同步响应。

第二种模式是可靠的异步发送,异步发送是指发送方发出数据后,不等接收方发送响应,接着发送下一个数据包的通讯方式。MQ 异步发送需要用户实现异步发送,回到接口。在执行消息的异步发送时,应用不需要等待服务器响应即可直接返回,通过回到接口,接着服务器响应,并对服务器的响应结果进行处理。同样,如果需要发送三条消息,首先消息发送出去,不需要等待响应,立即发送消息二、同时立即发出消息三,通过异步的方式来接收这三条消息响应。

第三种方式是弯位方式,也叫单向发送,单向发送特点是为此负责发送消息,不等待服务器响应,且没有回调函数,触发即止发送请求不等待应答。此类方此方式发送消息过程耗时非常短,一般在微妙级别。同样,如果需要发送三条消息可以并发地进行消息,三个消息发送,而无需等待服务端响应。


四、MQ 三种方式发送消息比较

适用场景:

1.同步发送:此种方式应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。

2.异步发送:异步发送一般用于链路耗时较长,对RT响应时间较为敏感的业务场景,例如用户视频上传后通知启动转码服务,转码完成后通知推送转码结果等。

3.单向发送:适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。

发送 TPS

同步发送:快

异步发送:快

单向发送:最快

发送结果反馈

同步发送:有

异步发送:有

单向发送:无

可靠性

同步发送:不丢失

异步发送:不丢失

单向发送:可能丢失


五、MQ 消费模式

1.集群消费模式

image.png

MQ 是基于发布订阅模型的消息系统,在 MQ 消息系统当中,消息订阅方订阅关注Topic 以获取并消费消息,订阅方应用一般是分公司系统,以集群方式部署有多台机器。

MQ 约定以下概念,首先,集群 N 个约定使用相同 ID 的定位只属于同一个相对集群,同一个集群下的定位,消费模型必须完全一致。这些订阅者在逻辑上可以认为是一个消费节点。

集群消费,当使用集群消费模式时,MQ 认为任意一条消息,只需要被集群内的任意一个消费者处理即可。

2.广播消费模式

image.png

当使用广播消费模式时,MQ 会将每条消息推送给集群内的所有注册


六、HTTP 接入

使用 HTTP 协议有以下有以下几个优点,首先消息对 HTTP 接入模式的最大优势是跨语言,跨网络,可以解决异构网络环境下的服务相互访问屏障。

对于没有提供相关操作消费SDK的环境当中,使用 HTTP 方式记录更方便,同时消息对面 HTTP。接触方式在使用上简单上手快。

HTTP 接入应用的场景: 首先,接入方的应用场景主要依托于客户的业务场景,假设客户的业务场景或者部分模块是基于 HTTP 协议,并且需要通信服务,可以使用 MQ 服务。目前提供的消息队列服务提供了 python 和 python 和 PHP 的事例相关方法相关的使用方法,请参考,具体的示例程序。


七、事务消息

MQ 事务消息:帮助用户实现类似 X/Open XA 的分布事务功能,通过 MQ 事务消息能达到分布式事务的最终一致。

半消息: 暂不能投递的消息,发送方已经将消息成功发送到 MQ 服务端,但是服务端未收到生产者对该消息的二次确认,此时该消息被标记成为暂不能投递的状态。

处于该状态的消息,即为半消息,半消息回查,由于网络闪断,生产者应用统计的原因导致某条事故消息,确认丢失。

MQ服务端通过扫描,发现某条消息长期处于半消息状态时,会主动向消费者询问该消息的最终状态,来决定对该消息是一个 commit 或者 rollback 的操作该过程也就是消息回厂过程。

事故消息使用的场景是能够帮助用户实现类似于二分差异的分布式事务功能,通过MQ 事务消息能达到分布式事务的最终一致。


八、消息过滤

MQ 允许消费者按照 Tag 对消息进行过滤,确保消费者最终只消费到他关心的消息类型。

从客户下单到收到商品这一过程会生产一系列消息,比如订单创建消息 ( order) 、支付消息 (pay) 、物流消息( logistics )。这些消息会发送到 Topic 为 Trade_Topic 的队列中,被各个不同的系统所接收,比如支付系统、物流系统、交易成功率分析系统、实时计算系统等。其中,物流系统只需接收物流类型的消息、(logistics) ,而实时计算系统需要接收所有和交易相关( order、pay、logistics )的消息。

MQ 提供的消息过滤是直接在 MQ 服务端完成的,通过服务端消息过滤,提高消息投递的有效性,降低消费端业务系统的压力,也能提升整体的服务性能。


九、顺序消息

顺序消息︰MQ 提供的一种按照顺序进行发布消费的消息类型。顺序消息由两个部分组成,顺序发布和顺序消费﹔顺序消息类型一共分为两种,全局顺序和分区顺序。

顺序发布∶对于指定的一个 Topic,客户端将按照一定的先后顺序进行发送消息。

顺序消费︰对于指定的一个 Topic,按照一定的先后顺序进行接收消息,即先发送的消息一定会先被客户端接收到。

全局顺序︰对于指定的一个 Topic,所有消息将按照严格的先入先出的顺序,进行顺发布和顺序消费。

分区顺序︰对于指定的一个 Topic,所有消息根据 sharding key 进行区块分区,同一个区块的消息将按照严格的先入先出的顺序,进行顺发布和顺序消费。

sharding key: 顺序消息中,区分不同区块的关键字段。sharding key 于普通消息的key 是完全不同的。

1.全局顺序

使用全局顺序的业务应该是对性能要求不高,所有的消息都必须严格按照先入先出的原则进行消息发布。

2.分区顺序

image.png

MQ 分区顺序消息适用于如下场景,性能要求高,以 sharding key 可以作为分区字段。

在同一个分区中,严格按照先入先出的原则进行消息发布与消费的场景。举例说明,首先,如果用户注册需要发送验证码,以用户ID作为sharding key,那么,同一个用户发送消息都会按照先后顺序来发布和订阅。再比如,电商的订单创建订单ID作为 sharding key,那么同一个订单相关的创建订单下,那么同一个订单相关的创建订单、消息、订单、支付消息,订单退款消息,订单物流消息都会按照先后顺序来发布订阅。

阿里集团内部的电商系统均使用此种分区数据消息,既能保证业务上的顺序,同时又能保证业务的高性能。


十、MQTT 介绍

MQ 支持标准的 MQTT 协议,应用方无技术捆绑,可以无缝迁移。

可以支持移动端 MQTT 消息和 MQ 消息的相互流转。

无需自己维护 MQTT 服务端,稳定性和可靠性更高。

完全兼容任何支持 MQT T标准协议的 SDK。

终端数据采集支持顺序,例如同一辆车、同一台设备采集的数据有序。

典型场景

物联:车联网、智能电器、智能穿戴等

社交:即时通信、社群类

视频互动:弹幕、直播红包、投票、广告

推送:APP推送、终端推送


十一、MQTT 应用场景介绍

MQTT 支持主流的 Java ios android 的平台,能够非常方便的应用于车联网领域、IM通讯领域、视频直播领域、智能家居领域、金融、物流等领域。


十二、消息轨迹-快速定位问题

消息轨迹指的是一条消息从生产方发出到消费方消费处理整个过程中的各个相关节点的时间、地点等数据汇聚而成的完整内幕信息、消息轨迹这一产品功能的使用场景在于在生产环境的消息收发不符合预期,是可以使用消息轨迹工具排查问题。通过消息的属性,找到消息的实际生活状态,帮助诊断问题。

如图所示,是一个线上的一个消息查询结果,可以看出,从生产者到消费者的全面的状态,都可以在控制台上进行查询并可视化展示。

如果在业务上发现有一条消息一直没收到,业务方如果根据业务日志里的信息判断某一条消息一直没有收到,此时可以使用消息轨迹工具来进行确认的情况。

通过以下步骤,首先收集怀疑的消息和信息。MessageKey 、MessagelD 、topic,以及大概的发送时间范围,然后进入 MQ 控制台,根据余额信息新建查询任务,查询相关的消息轨迹。第三步,查看结果并分析判断原因。如果轨迹显示尚未消费,则可以去订阅管理页面查询,确认是否有堆积导致消息商务消费。如果发现消息已经消费,请根据消费端的信息,找到对应的客户端机器与时间登录查看相关日志。


十三、MQ 中继

MQ 中继功能为用户提供一种跨网络、跨防火墙、跨 NAT 甚至跨不同的云产云厂商的一种互联互通的解决方案。


十四、总结-MQ 阿里双11使用的消息中间件

消息丰富

MQ 提供4种消息类型︰

普通消息、定时消息、事务消息、顺序消息

MQ 提供3种消息发送方式︰

可靠同步/可靠异步/Oneway

管理多维

具有消息查询、消息回溯、消息轨迹、堆积监控报警功能

服务健壮

99.9999976%数据可靠性

99.99999999...%以上服务可用性

消费失败定时重试

多机房多份存储

性能优越

百亿级堆积能力

低延迟、毫秒级投递

支持高并发

生能集群支持


十五、MQ 广泛应用于各行业

MQ 产品在金融领域、互联网领域、网络里面都有完整的解决方案,尤其在金融领域方面,通过专有云输出在各大银行批的渗透,逐步替换金融领域的 IBMQ,同时也提供MQTT物联网组件,来覆盖物联网、车联网等场景。

云方案提供商、物流、IM、大型企业、移动应用、监控、车联网、电力、物联网、电商、视频互动、金融


十六、MQ+ARMS 物联网解决方案

MQ 海量接入包括:MQTT 协议、808协议、三级推送、消息订阅、鉴权认证、设备状态

IAAS 阿里云飞天平台的应用和数据库框架包括: 分布式服务框架 EDAS、分布式事务TXC、分布式数据库 DRDS

通过 MQ 的海量接入,将汽车电器终端、手机、WEB 端、其他设备的所有数据支持多种协议的形式,发送到 MQ broker 端,ARMS 可以对其进行一个业务上的监控,包括日志、网关、日志模块、数据存储、实时计算、监控展现等,同时也提供丰富的报表可视化展示以及一些高级的支持。

相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7月前
|
消息中间件 存储 算法
RocketMQ学习笔记
RocketMQ学习笔记
159 0
|
7月前
|
传感器 网络协议 中间件
Mqtt学习笔记--交叉编译移植(1)
Mqtt学习笔记--交叉编译移植(1)
130 0
|
消息中间件 存储 缓存
RibbitMQ学习笔记之MQ练习(三)
RibbitMQ学习笔记之MQ练习
51 0
|
消息中间件 网络协议 数据中心
RabbmitMQ学习笔记-RabbitMQ集群架构模式
RabbmitMQ学习笔记-RabbitMQ集群架构模式
88 0
|
消息中间件 Java
RabbmitMQ学习笔记-RabbitMQ与SpringBoot2.0整合实战
在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两种方式用来控制消息的投递可靠性模式。
117 0
|
消息中间件 中间件
RibbitMQ学习笔记之MQ发布确认
RibbitMQ学习笔记之MQ发布确认
58 0
|
消息中间件 网络协议
RibbitMQ学习笔记之MQ练习(二)
RibbitMQ学习笔记之MQ练习
37 0
|
消息中间件 网络协议 Java
RibbitMQ学习笔记之MQ练习(一)
RibbitMQ学习笔记之MQ练习
81 0
|
消息中间件 存储 网络协议
RibbitMQ学习笔记之MQ 的相关概念
RibbitMQ学习笔记之MQ 的相关概念
86 0
|
消息中间件 存储 缓存
RocketMQ 5.0 可观测能力升级: Tracing 链路追踪介绍|学习笔记
快速学习 RocketMQ 5.0 可观测能力升级: Tracing 链路追踪介绍
829 0
RocketMQ 5.0 可观测能力升级: Tracing 链路追踪介绍|学习笔记