1、如果没有该机制,消费端从leader副本poll了一批消息消费之后,leader副本挂机了,之后从ISR选举出的副本中的消息可能是比leader少了的。如果此时consumer处理完这批数据提交offset,有可能将producer在选举之后到提交offset这段时间内,新生产的而且自己未消费的数据置为已消费。也就是消费端会丢失这部分新产生而在kafka中实实在在保存着的数据。这时候消费端很难区分队列中的这部分存在然而没有被消费的数据的。
2、那设置了HW机制,在ack模式为1的情况下其实也是丢失了数据的。但是这部分数据的丢失是可以通过将ack模式改为-1,producer使用同步发送来解决的。
3、对比两种丢失数据的情况。个人理解,第2种丢失的场景排查起来应该会更容易一些。因为可以明确的看到kafka中没有这些消息。第1种丢失数据的场景,明明数据在kafka中有,但是消费端就是没有消费,应该会很让人摸不到头脑。
kafka HW机制的作用
最新推荐文章于 2024-07-18 09:08:55 发布