消息队列学习 | 青训营笔记

113 阅读2分钟
这是我参与「第五届青训营」伴学笔记创作活动的第 13 天

概念

历史

消息队列是存储消息的容器,本质是一个队列,要支持高吞吐,高并发,高可用。

消息队列最早用于金融机构和新闻机构,而后经过不断发展形成了许多商业化的产品。

消息队列对比

Kafka是分布式,多分区,多副本的日志提交服务,在高吞吐场景发挥出色。

RocketMQ是低延迟,强一致,高性能,高可靠,亿万级容量,有灵活的扩展性。

Pulsar是下一代云原生分布式消息流平台,采用存算分离的架构。

BMQ也是存算分离,定位是高吞吐的离线业务。

Kafka介绍

使用场景

在搜索服务,直播服务,订单服务,支付服务等服务中有所应用。

使用方法

先创建集群,再新增topic,编写生产者逻辑和编写消费者逻辑。

基本概念

Topic是逻辑队列。

Cluster是物理集群。

Producer是生产者,Consumer是消费者。

消息的流程

消息由生产者产生,再到Broker,最后到消费者。

磁盘

数据从broker开始,发送批量的Message,最后存储到本地磁盘。

BMQ 介绍

文件结构

BMQ的文件由DataNode组成。

与Kafka对比

Kafka的消息由生产者到broker,而BMQ的消息由生产者到达DataNode。

RocketMQ 介绍

使用场景

电商业务线,涉及注册,订单,库存,物流等场景 在业务的峰值时刻也会有所应用,如秒杀活动,定期优惠等活动有大量用户访问时。

概念

RocketMQ也有topic的概念,它的消息是Message,分区叫ConsumerQueue。集群是ConsumerGroup。集群控制器是Nameserver。

存储

存储是由生产者提交消息,生成提交日志,到ConsumerQueue,最后到消费者。

特性

RocketMQ支持事务消息,延迟发送,可以在前一天编辑好,在第二天到点发送。支持处理失败,消费重试和死信队列。