1. 批量发送消息
- 支持一次性发送多条消息,减少客户端与Broker的网络通信次数。
- 批量消息的Topic必须一致,不支持延迟和事务消息。
- 批量消息总大小默认不超过4MB。
2. 消息压缩
- 超过4KB的消息自动压缩,减少网络带宽压力和存储空间。
- 压缩消息在客户端进行,节省带宽但增加CPU压力。
3. 高性能网络通信模型
- 基于Netty实现,具有异步和事件驱动、高性能、可扩展性、简化API和安全性。
4. 零拷贝技术
- 减少CPU拷贝次数和上下文切换次数,提高磁盘文件读写性能。
- mmap()和sendfile()两种方式,mmap适用于需要修改文件内容的场景,sendfile适用于文件传输。
5. 顺序写
- 消息按顺序写入文件,减少磁头移动和寻道时间,提高写入速度。
6. 高效的数据存储结构
- CommitLog和ConsumeQueue配合,实现快速消息查找和拉取。
- CommitLog存储消息,ConsumeQueue作为索引文件。
7. 异步处理
- 异步刷盘和异步主从复制,提高消息存储效率,但可能增加不确定性。
8. 批量处理
- 消费者批量拉取消息,减少网络通信次数。 <