kafka leo hw
时间: 2023-10-08 15:05:45 浏览: 182
Kafka知识汇总 18道
LEO(Log End Offset)是指副本底层log文件中下一条要写入的消息的位移。例如,如果LEO=10,那么当前文件已经写入了10条消息,位移范围是[0,10)。HW(High Watermark)是指所有分区已提交的位移,通常HW<=LEO。
对于多副本情况下,各个副本中的HW和LEO的演变过程如下:当Leader副本写入新的消息时,它会更新自己的LEO。Follower副本会从Leader副本中拉取消息,并更新自己的LEO为Leader副本的LEO值加1。同时,Follower副本还会更新自己的HW。更新HW的算法是比较当前LEO和Leader副本中传送过来的HW的值,然后取较小值作为自己的HW值。HW的更新会触发消费者端的位移提交和消息删除。
Kafka中的LEO和HW分别代表副本底层log文件中下一条要写入的消息的位移和所有分区已提交的位移。通过比较HW和消费者的位移,Kafka可以保证消息的顺序性。
关于分区器、序列化器和拦截器,分区器用于决定将消息发送到哪个分区,序列化器用于将消息对象序列化为字节流进行发送,拦截器则可以在消息发送前后进行一些处理。处理顺序是先经过拦截器,然后经过分区器和序列化器。
Kafka生产者客户端的整体结构包括一个或多个Producer线程、一个缓冲区、一个分区器、一个或多个拦截器和一个或多个序列化器。Producer线程负责将消息发送到Kafka集群中的Broker,缓冲区用于缓存待发送的消息,分区器决定消息被发送到哪个分区,序列化器将消息对象序列化为字节流进行发送,拦截器可以在消息发送前后进行一些处理。
阅读全文