RabbitMQ/RocketMQ/Kafka 消息存储

本文介绍了RabbitMQ、RocketMQ和Kafka的消息存储方式。RabbitMQ使用内存存储,RocketMQ采用磁盘存储的CommitLog,Kafka则将消息分布在多个分区的日志文件中,同时配有索引文件。文章还探讨了这些存储方式对性能的影响,如RocketMQ在Topic数量增加时性能影响较小,而Kafka的并发读写可能导致磁盘IO竞争成为瓶颈。
摘要由CSDN通过智能技术生成

RabbitMQ

 

1.RabbitMQ的消息堆积模式为内存(不是绝对的,当内存不足时会出现换页现象)。所以,在生产者发生消息至Exchange,Exchange根据规则将消息在复制到匹配的队列中,所以每个Queue拥有所有的消息。

2.Exchange/Queue/msg 都可以分为临时和永久的。这个需要根据业务设置持久化方式。

3.对于Queue中的每个消息,只能被一个消费者消费。且无法回溯。

RocketMQ

1.RocketMQ 的消息堆积模式为磁盘,堆积能力更强。 RocketMQ采用的单一的CommitLog文件进行消息存储(同一个broker的所有topic消息存储在一个文件)。同时通过consumeQueue 记录每个队列的消息的偏移量和物理地址。

2.commitLog生成规则:

    (1)文件的默认1G,超过这个值(或者其他因数),重新建一个日志

    (2)名字长度为20位,左边补零,剩余为起始偏移量。eg:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值