设计理念
- nameserver替代zookeeper成为注册中心,接受分钟级数据不一致,实现最终一致性,nameserver之间数据不复制,降低实现复杂度
- 高效的io存储机制,文件组,组内单个文件固定大小,顺序写,方便引入内存映射机制,兼顾查找,引入消费队列文件和索引文件
- 允许设计缺陷,不保证消息重复消费,让消费者去保证,让设计变得更简单
设计目标
-
架构模式,发布订阅,发送者,存储者,消费者,路由发现, 顺序消息,消费者按照消息到达存储服务器顺序消费,全局一致、分区一致
-
消息过滤,支持服务器过滤和消费端过滤
-
消息存储,考虑消息堆积和消息存储性能,引入内存映射机制,所有主题的消息在一个文件中,顺序写,引入消息过期机制和文件存储空间报警机制
-
消息高可用,同步刷盘机制保证
1)broker正常关机,2)broker异常crash,3)os crash 4)机器断电,但是立即恢复 不丢消息, 单点情况下不保证 5)机器无法开机,cpu、主板、内存损坏 6)磁盘损坏 不丢消息,利用多节点备份保证 -
消息消费低延迟 push模式保证
-
确保消息必须被消费一次 ,通过消息ack机制,有重复消费可能
-
回溯消息,支持按照事件回溯,可向前向后
-
消息堆积,所有消息按照顺序存储的文件中,按照offset消费,默认保留3天
-
定时消息,通过延时队列保证,支持特定基本延迟
-
消息重试机制,指消息消费时,发送一次,消费者可以重新投递回去