基本特点
- 异步解耦、削峰填谷
- Topic
- 分区/分区备份,集群互为某分区备份
- broker控制,分区leader/follower
- 单分区保证消息时间顺序
- offset,分区内消息编号,便于不同消费者记录读写位置
- consumerGroup 同一逻辑消费者,设置小于分区数,均分分区消费消息
高并发的几个原因
- 分区: 分治思想,支持并发读写
- 顺序写: 只调用了FileChannel.write(ByteBuffer),而没有调用过带offset参数的write方法,说明它不会执行随机写操作,效率高
- zeroCopy: 利用现代操作系统pageCache使得消息直接写入内存,由内核刷新至磁盘,发送消息时直接从pageCache至socket buffer发送给消费者,因此实现了不经用户空间发送消息,避免了用户空间和内核空间之间的拷贝消耗