在刷ACE题的过程中,感觉对于消息队列部分的理解不是很深刻,这里来学习一下。
例行还是先走一遍阿里云大学的一些视频课程扫扫盲,选择如下课程:
阿里消息队列MQ简介:阿里巴巴中间件技术部自主研发的专业消息中间件。高可用、分布式,集群技术企业级互联网架构核心产品,双十一核心产品,面向万亿级洪峰的消息引擎。设计目标为应用解耦、削峰填谷;特征为海量消息堆积、高吞吐、可靠重试
特色功能:顺序消息、事务消息、定时消息;广播消费、集群消费;消息过滤、消息??滚进
上个图,图示说明了其能力。
MQ的三种发送方式:
方式一,可靠同步发送:发送方收到MQ端同步响应应答后发送下一条消息,这个应答从发送方看起来是MQ客户端SDK提供的的回调函数。
应用场景:重要通知邮件、报名短信通知、营销短信系统
方式二,可靠异步发送:发送方不等待MQ端响应后发送下一条消息,MQ端异步应答,这个应答从发送方看起来是MQ客户端SDK提供的的回调函数。
应用场景:用于链路耗时较长,对RT响应时间较为敏感的业务场景,例如用户视频上传后通知启动转码服务,转码完成后通知推送转码结果。
方式三,单向发送:发送方不等待MQ端响应后发送下一条消息,MQ不会应答,也即MQ客户端SDK不会出发应答的回调函数。
应用场景:适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。
MQ三种方式发送消息比较:
发送TPS | 发送结果反馈 | 可靠性 | |
同步发送 | 快 | 有 | 不丢失 |
异步发送 | 快 | 有 | 不丢失 |
单向发送 | 最快 | 无 | 可能丢失 |
MQ消费模式
基于发布-订阅模型。订阅方通过关于Topic消费消息
使用相同ConsumerID的订阅者属于同一个消费集群,同一个集群下的订阅消费逻辑必须完全一致,包括TAG的使用也是一致的,这些订阅者在逻辑上可以认为是一个消费节点。
集群消费模式:MQ认为任意一条消息只要被集群内任意一个消费者处理即可,如下图所示:
广播消费模式:MQ会将每条消息推送给集群注册过的所有客户端,保证消息至少被每台机器消费一次,如下图所示:
HTTP接入功能:
跨语言、跨网络,解决异构网络情况下的服务互访,没有SDK也可以搞,简单上手快
这个有Python和PHP的实例,可以去官网参考之。
事务消息:
MQ事务消息:帮助用户实现类似X/Open XA的分布事务功能,通过MQ事务消息能达到分布式事务的最终一致。先上个图:
打断点,学习了一下什么叫Open XA分布事务,总结成文:关于分布式事务
消息过滤:
MQ允许消费者按照Tag对消息进行过滤,确保消费者只消费到他关心的消息类型。
举例说明:从客户下单到收到商品这一过程会产生一系列消息,比如订单创建、支付、物流消息,这些消息会发送到Topic为Trade_Topic的队列中,被各个不同的系统所接收,比如支付系统、物流系统、交易成功率分析系统、实时计算系统等。其中,物流系统只需要接收物流类型消息(logistics),而实时计算系统需要接收所有和交易相关(order、pay、logistics)的消息。
顺序消息:
MQ提供的一种按照顺序进行发布的消息类型。顺序消息由两个部分组成,顺序发布和顺序消费;顺序消息类型一共分为两种,全局顺序和分区顺序。
顺序发布:对于指定的一个Topic,客户端将按照一定的先后顺序进行发送消息。
顺序消费:对于指定的一个Topic,按照一定的先后顺序进行接收消息,即先发送的消息一定会先被客户端接收到。
全局顺序:对于指定的一个Topic,所有消息将按照严格的先入先出的顺序,进行顺序发布和顺序消费。
分区顺序:对于指定的一个Topic,所有消息根据sharding key进行区块分区,同一个区块的信息将按照严格的先入先出的顺序,进行顺序发布和顺序消费。
sharding key:顺序消息中,区分不同区块的关键字段。sharding key于普通消息的key是完全不同的。
全局顺序性能低些,分区顺序性能高。阿里集团内部很多系统都采用分区顺序。
MQTT介绍:
- MQ支持标准MQTT协议,应用方无技术捆绑,可以无缝迁移。
- 可以支持移动端MQTT消息和MQ消息的相互流转。
- 无需自己维护MQTT服务端,稳定性和可靠性更高。
- 完全兼容任何支持MQTT标准协议的SDK。
- 终端数据采集支持顺序,例如同一辆车,同一台设备采集的数据有序。
场景:
架构:
消息轨迹:
提供消息从生产者发出到消费者消费处理的整个过程中的相关节点的时间、地点等数据汇聚而成的完整链路信息。
其使用场景为生产环境的消息收发不符合预期时,可以使用消息轨迹工具排查问题,通过消息属性如MessageID、MessageKey甚至Topic、时间范围来搜索相关的消息轨迹,找到消息的实际收发状态,帮助诊断问题。
消息报表:查看消息的生产情况和消费的情况。
MQ中继:未来将会提供的功能,跨网络、跨防火墙、跨NAT,甚至跨多个云厂商的解决方案。
MQ+ARMS物联网解决方案:
这个视频课程听完,感觉作用也就是扫扫盲,后续有时间再找详细的教程学习和实操吧。