本文主要讲解RocketMQ的总体架构和设计思想,通过对RocketMQ的一个总览,以便于我们更好的学习和理解后面的每个章节。
1.设计理念
RocketMQ设计基于主题的发布和订阅模式,核心功能包括消息发送,消息存储,消息消费。
RocketMQ的设计追求简单和性能第一,主要体现在以下三个方面:
<1>NameServer设计及其简单。
RocketMQ摒弃了业界常用的zookeeper作为注册中心,而是使用自研的NameServer来实现元数据的管理,
因为Topic路由信息无须在集群间保持强一致性,追求最终一致性,并且能容忍分钟级的不一致,所以RocketMQ的NameServer集群间互不通信,极大降低了设计的复杂度,降低了对网络的要求,提升性能;
<2>高效的IO存储机制。
RocketMQ追求消息发送的高吞吐量,RocketMQ消息存储文件设计成文件组的概念,组内单个文件大小固定,方便引入内存映射机制;
所有主题的消息存储基于顺序写,提升写性能,同时为了兼顾消息消费与消息查找,引入了消息消费队列文件与索引文件。
<3>容忍存在的设计缺陷。
将某些工作下放给使用者,比如消费的消费只保证至少消费一次,而不保证只消费一次;