每日八股day33

本系列帖子为鼠鼠复习八股巩固记忆和个人理解所写,如有错误纯属本人实力不佳,欢迎各位大佬阅读指正

1.为什么选择RocketMQ的?

高可靠性,消息不会丢失,RocketMQ支持同步刷盘,主从同步机制,消息写到磁盘,并且主从副本备份,Broker挂掉可以切换从节点,保证消息尽量不丢失,适合订单,支付这类对数据可靠要求高的业务。

性能好支持高吞吐,基于顺序写磁盘,底层是CommitLog顺序存储,写入性能很高,可以支持大促场景海量消息。

功能齐全,贴合业务场景,支持事务消息,解决分布式事务场景,支持延迟消息,支持重试队列,死信队列,消息失败的信息可以重试,多次失败进入死信,方便排查问题。

支持消息堆积,当消费速度跟不上生产速度,消息可以大量堆积在Broker,不会直接崩溃,业务高峰期很有用。

2.RocketMQ和Kafka的区别是什么?如何做技术选型?

核心区别:

定位侧重点不同

RocketMQ面向业务消息,更注重消息可靠性,业务功能。

Kafka最初设计面向日志采集,大数据流处理,追求超高吞吐。

吞吐量

kafka吞吐更高,底层批量,零拷贝优化做的很深,适合每秒几十万上百万条日志。

RocketMQ吞吐也很高,足以满足大多是业务并发,但是极限吞吐弱于kafka。

功能支持

RockeMQ,原生支持延时信息,事务消息,死信队列,消息重试,消息查询,业务功能非常完善。

kafka,延时,事务消息支持很弱,没有死信队列,偏向简单的收发消息。

消息可靠度(两者都可做到高可靠)

Kafka通过多副本保证。

RocketMQ支持同步刷盘,异步刷盘+主从,对金融,订单类业务容错方案更友好。

消息堆积能力

都支持海量堆积,kafka底层分段日志,堆积性能更优。

技术选型怎么做?

选Kafka:

适合日志收集,用户行为埋点,大数据实时计算,流处理场景,追求机制高吞吐,不需要延迟,事务等复杂业务信息。

选RocketMQ:

业务解耦,异步通知,订单超时关闭,分布式事务,支付,电商业务消息,业务场景复杂,需要延时消息,重试,死信队列,优先RocketMQ。

3.RocketMQ延时消息的底层原理?

RocketMQ的延迟消息,并不是定时任务实时扫描,也不是等到指定时间才发送到目标队列。

生产者发送延迟消息,发送消息时候,指定延时级别,不会设置一个精确的时间戳。

消息不会直接投递到业务的Topic,Broker收到延迟信息之后,不会把消息放到我们业务的队列,而是转发到一个内部的延迟队列。

定时后台线程轮询,Broker内部开启一个定时任务,不断扫描这个延迟队列里面的消息,每一条消息会根据延时级别,计算出到期时间。

消费者这时才可以消费这条信息,消息到期转发之后,消费者才能拉取到消息进行消费。

相关推荐
hey you~17 小时前
云客服多渠道统一接入,消息队列技术实现方案
kafka·消息队列·rocketmq·系统集成·云客服·多渠道接入·接口对接
letisgo54 天前
JAVA 高级进阶10篇《消息队列实战:RocketMQ/Kafka选型与“不丢不重有序“三连解》
java·面试·kafka·消息队列·rocketmq
小楼昨夜又东风1265 天前
kafka、rocketmq、rabbitmq,有什么区别
kafka·rabbitmq·rocketmq
一本正经的不务正业7 天前
kafka与RocketMQ的不同
分布式·kafka·rocketmq
阿里云云原生8 天前
深入解析 RocketMQ LiteTopic:如何以百万级轻量主题实现用户级消息治理?
rocketmq
oliver_sys_log12 天前
RocketMQ 4.5.1 延迟消息"发送成功但消费不到"排查分析报告
后端·rocketmq
深念Y17 天前
视频平台架构重构:从微服务到可插拔基础设施
后端·微服务·云原生·架构·rabbitmq·音视频·rocketmq
阿里云云原生18 天前
深入解析 RocketMQ LiteTopic:从 Parent Topic 到会话级通道的架构演进
rocketmq
xbgRS19 天前
RocketMQ消费者消息获取
java·rocketmq·java-rocketmq
Arc星语19 天前
Linux服务器RocketMQ和RocketMQ Dashboard安装部署
rocketmq