高性能
1. 顺序写
如何实现顺序写?
kafka的写入会直接写入内核态磁盘缓存Page Cache,PageCache往磁盘写的时候采用顺序写,节省了大量的寻道时间
2. 零拷贝
Producer写入了Page Cache的数据可以直接通过零拷贝的方式transferTo Socket Cache,而被消费者读取,没有内核态到用户态的切换
可靠性
1. 确保broker收到
通过ISR的机制,设置acks=1时只需要一个节点收到写入就会回复确认,要保证写入一次可以设置acks=all,这样就可以确保写入不会丢失,即使有broker节点宕机。
2. EOS(Exactly Once)
0.11做了改进,写入端生成一个消息唯一id,这样即时写入broker成功后ack失败导致重新发送也不会重发消息