看了很多遍源码整理的 一张图进阶 RocketMQ 图片,关于 RocketMQ 你只需要记住这张图!
消息传递责任已移交至Broker,接下来如何处理?首先,我们需要确保消息的持久化,避免因宕机导致的数据丢失。那么,消息该如何存储呢?是采用二进制、JSON、还是Protocol Buffers(PB)?虽然这些格式在功能上都是可行的,但RocketMQ究竟选择了哪种?
在确定了存储结构之后,消息应该存放在哪里呢?我们可以选择数据库、本地文件系统或者对象存储服务。虽然从功能角度来看,这些选项都有可能实现,但考虑到性能,哪家数据库能够处理每秒十万级的消息吞吐量呢?如果我们选择直接存储到数据库,是否真的可行?而RocketMQ又是如何通过本地文件系统实现高效存储的?它是否拥有某些独门绝技?
今天,我们将探讨Broker如何存储消息。我们的首要目标是了解RocketMQ的存储结构,即消息是如何组织的。理解了这一点,我们才能更好地掌握存储流程,明白为什么RocketMQ的流程设计如此。最后,我们将探索RocketMQ能够支撑单机十万级吞吐量的机制。