卡夫卡有信息丢失的问题。消息丢失可能发生在代理、生产者和消费者。
1不能让内存的缓冲池太满。如果满了,内存溢出,也就是卡夫卡的缓冲池中数据写入太快,数据下降速度太慢,肯定会造成数据丢失。2尽量保证生产者的数据始终处于线程阻塞状态,这样就可以在写内存的同时丢弃磁盘。3对于异步写,也可以设置类似于flume rollback类型的批量,即根据累计消息数、累计时间间隔、累计数据大小来设置批量大小。
卡夫卡支持数据回放功能(更改消费组),在目的地清除所有数据,重新消费。如果数据在消费端丢失,出现同样结果的概率很低。如果写端数据丢失,每次结果应该完全一样(前提是写端没有问题)。
kafka的数据从一开始就存储在PageCache上,定期刷新到磁盘。也就是说,并不是每条消息都存储在磁盘上。如果停电或机器故障,PageCache上的数据会丢失。