所谓kafka异步刷盘机制是指kafka的生产者将消息发送到broker时,首先消息会被追加到日志文件segment中,此时数据是暂存到操作系统的页缓存中,并不是直接落盘;(页缓存是内存中的临时存储区域,由操作系统管理,提供低延迟的读写能力)
kakfa通过阈值或定时扫描触发刷盘操作,将页缓存中的数据刷到磁盘中,从而保证消息的持久化。
在刷盘时,broker会将多个消息合并成一个批次,批量追加写的方式刷盘;
优点
高吞吐量:跳过每次写入的磁盘I/O等待,单机可支持每秒数十万条消息处理
资源利用率:利用操作系统的页缓存管理,减少应用层直接操作磁盘的开销
缺点
数据丢失风险:若Broker宕机时页缓存未刷盘,未持久化的消息会丢失。
解决方案:
副本机制:通过多副本(ISR)冗余存储,即使单节点故障,其他副本仍可提供数据。
生产者ACK确认:设置acks=all,确保消息写入所有副本的页缓存后再返回成功