消息队列(MQ)可应用在多个领域,包括异步通信解耦、企业解决方案、金融支付、电信、电子商务、快递物流、广告营销、社交、即时通信、移动应用、手游、视频、物联网、车联网等。近期,消息队列(MQ)推出顺序消息消息、MQTT移动物联套件、Kafka企业级消息服务。下述内容将解析消息队列(MQ)顺序消息、车联网、Kafka企业级消息服务的应用场景。
基于发布订阅模型,分布式应用异步解耦,可以增加应用的水平扩展性,增加前端应用快速客户反应能力。
大促等流量洪流突然来袭时,MQ可以缓冲突发流量,避免整个系统崩溃。
做为重要日志的监控通信管道,将应用日志监控对系统性能影响降到最低。
消息队列秉持开放、共享的原则拥抱开源生态,无技术绑定,2016年阿里巴巴正式宣布将 MQ 内核引擎 RocketMQ 捐赠给 Apache 软件基金会;与此同时,全面融合 kafka 生态,做到无缝迁移,打造更安全、更可靠、更易运维的 kafka 企业级消息服务。
此次我们总结了几款业界主流消息中间件产品的对比报告:
| 项目 | 消息队列(MQ) & Kafka 企业级消息服务 | Apache RocketMQ(开源) | Apache Kafka(开源) | RabbitMQ(开源) |
|---|---|---|---|---|
| 安全防护 | √ | ×ばつ | ×ばつ | ×ばつ |
| 主子账号支持 | √ | ×ばつ | ×ばつ | ×ばつ |
| Low Latency | √ | ×ばつ | ×ばつ | ×ばつ |
| 定时消息 | √(支持秒级,最长可支持40天) | √(只支持18个固定Level) | ×ばつ | √ |
| 事务消息 | √(支持HA) | √(不支持HA) | ×ばつ | ×ばつ |
| 全链路消息轨迹 | √ | ×ばつ | ×ばつ | ×ばつ |
| 消息堆积查询 | √ | √ | ×ばつ | ×ばつ |
| 消息回溯 | √ | √ | ×ばつ | ×ばつ |
| 可靠性 | 非常好,99.99999999% | 好 | 一般 | 一般 |
| 可用性 | 非常好,99.99%,Always Writable | 好 | 好 | 好 |
| 性能(常规 < 128字节 ) | 非常好 ~= 50w/sec | 非常好 ~= 50w/sec | 非常好 ~= 23w/sec | 一般 ~= 6w/sec |
| 性能(万级Topic场景) | 非常好 | 非常好 | 低 | 低 |
| 性能(海量消息堆积场景) | 非常好 | 非常好 | 低 | 低 |
| 最大队列数(理论值) | ~= 10w | ~= 10w | ~= 1k | ~= 1k |
| 服务支持 | 阿里云平台统一运维 | 用户运维成本高 | 用户运维成本高 | 用户运维成本高 |
消息队列(MQ)提供 MQ-MQTT 移动物联套件,连接端(如移动设备、智能家电、汽车、机器人等)和云,实现双向通信,可支撑亿级设备连接与百万消息并发;
一般来说车联网系统是一个端到云的多层体系,其数据流主要分为2类:
为什么选择消息队列 MQTT 移动物联套件
下面,将介绍消息队列(MQ)新推出的顺序消息的应用场景:
在金融行业中,外汇/证券交易有一个顺序性原则:1. 价格优先 2.时间优先,价格不同则价格优先,价格相同则时间优先;很明显,在这种情况下,买卖交易双方都是有严格顺序性的。消息队列的顺序消息可以很好的处理此类场景。
比如外汇交易中,可以指定不同的Topic对应不同的外汇兑换币种交易,同一类外汇兑换币种交易时采用全局顺序消息。
在电商领域里面,每天都会有大量的交易发生,万万亿条数据已无法通过单一实例数据库进行处理,因此都会对数据库进行拆分,根据特定的key进行分库分表。为了提高数据更新与查询的效率,尽可能的避免全库全表扫描,买家库会根据买家ID进行拆分,卖家库则需要根据卖家ID进行拆分。那么,由此就会产生多种不同维度的数据异构复制的场景。
异构数据复制的过程中,目标数据库的数据必须严格按照源数据库中数据的增、删、改顺序才能保证数据的正确性。消息队列的分区顺序就可以很好的解决此类场景。
全局顺序为了严格保证顺序,消息的发布与订阅都必须是单并发,这会导致性能受到单并发的影响。而分区顺序则则可以根据分区的数量进行并发处理,从而提高整体的性能。由于在订单交易过程中,不同卖家的交易订单是不会有顺序关联的,只有在相同卖家、相同订单的情况下才必须保证顺序。因此,我们可以根据 seller_id 进行分区。
消息队列提供的 Kafka 企业级消息服务包括以下特点:
业务系统基于现有的 Kafka 代码与生态进行开发,无需任何改造,即可无缝迁移到阿里云消息队列(MQ)提供的 Kafka 消息服务。
消息队列(MQ)提供的 Kafka 消息服务利用 SASL 机制对用户身份进行认证,并利用 SSL 对通道进行加密,提供更加安全的消息服务;
消息持久化落盘到消息队列,支持数多副本以及主备自动切换,可靠性达99.99999999%,服务可用性高达99.9%。
支持在万级Topic,以及海量的消息堆积的情况下,也始终保持超高的性能。
提供一整套包括资源申请、资源授权、消息堆积查询、消息全链路轨迹、监控告警等运维服务,提升用户的产品体验。
用户可以通过 Kafka Client 发送消息,MQ Client 订阅消息,反之亦然,真正做到消息队列(MQ)与 Kafka 消息完全互通。