后端与 Go| 青训营笔记

80 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天。

消息队列-RocketMQ

RocketMQ是阿里巴巴旗下一款开源的MQ框架,使用Java编程语言实现,有非常好完整生态系统。RocketMQ作为一款纯java、分布式、队列模型的开源消息中间件,支持事务消息、顺序消息、批量消息、定时消息、消息回溯等。

1、使用场景:
针对电商业务线,其业务涉及广泛例如:注册、订单、库存、物流等,同时,也会涉及许多业务峰值时刻,如秒杀活动、周年庆、定期特惠。

2、基本概念:
逻辑队列:Kafka和RocketMQ都是Topic;
消息体:Kafka和RocketMQ都是Message;
标签:Kafka:无,RocketMQ:Tag;
分区:Kafka:Patition,RocketMQ:ConsumersQueue;
生产者:Kafka和RocketMQ都是Producer;
生产者集群:Kafka:无,RocketMQ:Producer Group;
消费者:Kafka和RocketMQ都是Consumer;
消费者集群:Kafka和RocketMQ都是Consumer Group;
集群控制器:kafka:Controller,RocketMQ:Nameserver;\

3、高级特性:
事务场景,事务消息,延迟发送,延迟消息,处理失败,消费重试和死信队列

4、特性:
订阅与发布,消息顺序(一类消息消费时,能按照发送的顺序来消费,包括全局顺序和分区顺序),消息过滤,消息可靠性,每个消息至少必须投递一次,回溯消费,事务消息,定时消息,消息重试,消息重投,流量控制(生产者流控,因为 broker 处理能力达到瓶颈;消费者流控,因为消费能力达到瓶颈),死信队列(处理无法被正常消费的消息)。

5、影响消息的可靠性的几种情况:

  1. Broker 非正常关闭;
  2. Broker 异常 Crash;
  3. OS Crash;
  4. 机器掉电,但是能立即恢复供电情况;
  5. 机器无法开机(可能是 cpu、主板、内存等关键设备损坏);
  6. 磁盘设备损坏。 在1,2,3,4情况下,RocketMQ能保证消息丢失少量数据或者不丢失,5,6情况下,无法恢复,在此单点上的数据全部丢失,RocketMQ在这两种情况下通过异步复制可以保证99%的消息不丢失,通过同步双写技术可以完全避免,但会影响性能,适合对消息可靠性高的场合。

引用参考

RocketMQ—(总结)一篇就搞懂RocketMQ_IT巅峰技术_InfoQ写作社区
RocketMQ保姆级教程 - 掘金 (juejin.cn)
消息队列- RocketMQ - 掘金 (juejin.cn)

总结

本文接上文,是青训营学习中关于消息队列的学习笔记,本文主要是RocketMQ的有关笔记,并参考了文章RocketMQ—(总结)一篇就搞懂RocketMQ_IT巅峰技术_InfoQ写作社区RocketMQ保姆级教程 - 掘金 (juejin.cn)中的内容。