2.1 设计理念
RocketMQ设计是基于分布式集群订阅发布模式,其核心特点包括消息发送,消息存储和消息消费,追求简单高效。主要体现以下几个方面
1): 不依赖第三方如zookeeper的信息管理中心,而是自身设计NameServer实现元数据管理,如我们常见的AP模式,保证最终一致性。所不同的是:NameServer集群之间的节点并不通信,降低实现复杂度,减少网络开销,提高性能。
2): 高效的I/O存储机制,通过顺序I/O的写来提高消息存储效率,再通过Java的内存映射机制,提高读取性能。为了兼顾消息快速消费与查找,则引入了消息消费队列和索引文件。
3): 为了提高效率,能够容忍设计的缺陷。如:只能保证消息能够被消息,且至少消费一次,出现重复消费问题需要消费者自己处理。