Kafka读写空中接力(Flying on Air)
- 当Producer push消息到Broker发生写操作时,Broker只是将数据写入Page Cache中,并将该页置上dirty标志。
- 当Consumer 从Broker pull消息发生读操作时,Broker会首先在Page Cache中查找内容,如果有就直接返回了,没有的话就会从磁盘读取文件再写回Page Cache。
- 可见,只要Producer 生产者与Consumer 消费者的速度相差不大,消费者会直接读取之前生产者写入Page Cache的数据,大家在内存里完成接力,根本没有磁盘读访问。而比起在内存中维护一份消息数据的传统做法,这既不会重复浪费一倍的内存,Page Cache又不需要GC(可以放心使用大把内存了),而且即使Kafka Broker重启了,Page Cache还依然在。