Kafka-偏移量(含消费者事务)
Kafka概述https://img-blog.csdnimg.cn/direct/27241d1ccc77499e98bebbc887cd4ec5.png
1.什么是偏移量:
[*] 在 Kafka 中,每个分区的消息都会被分配一个唯一的偏移量(offset)。偏移量简单来说就是消息在分区中的位置标识。
[*] 偏移量从 0 开始递增,每条消息的偏移量都会比前一条消息的偏移量大 1。
[*] 消费者通过跟踪每个分区的偏移量来记录自己消费的进度,以便在重新启动或重试时可以或许正确地从上次停止的位置继续消费消息。
2.偏移量的作用:
(1)记录消费位置:
[*]消费者通过提交偏移量来告知 Kafka 自己已经成功消费了一批消息,Kafka 将会记录这个偏移量,以便在消费者重新参加时可以或许正确地从上次停止的位置继续消费。
(2)确保消息传递:
[*]Kafka 利用偏移量来确保消息被传递一次且仅一次。
[*]消费者可以通过控制偏移量的提交来制止重复消费消息。
(3)容错和规复:
[*]偏移量的存在使得消费者在发生故障或重启后可以或许正确地从停止的位置继续消费消息,而不会造成数据丢失或重复消费。
3.offset的默认维护位置
https://img-blog.csdnimg.cn/direct/42e9ed3a88754e61a1087690dc163b3c.png
[*]__consumer_offsets主题里面采用key和value的方式存储数据。
[*]key是group.id+topic+分区号,value就是当前offset的值。
[*]每隔一段时间,kafka内部会对这个topic进行compact,也就是每个group.id+topic+分区号就保存最新数据。
4.偏移量的管理:
(1)主动提交:
[*]消费者可以选择开启主动提交偏移量的功能,让 Kafka 在背景主动管理偏移量的提交。
[*]这种方式简化了偏移量的管理,但可能会导致一些题目,如消息重复消费。
https://img-blog.csdnimg.cn/direct/ef5fa1821f7d4e26894bb4d4e9adb14b.png
https://img-blog.csdnimg.cn/direct/e6d7bdb95c1c4c73a86c8964800b98c0.png
(2)手动提交:
[*]消费者也可以选择手动提交偏移量,以更准确地控制偏移量的提交时机。
[*]手动提交偏移量可以在处置惩罚每条消息后立即提交,也可以在一批消息处置惩罚完成后批量提交。
https://img-blog.csdnimg.cn/direct/2260fc9623bb44f8a32153606473be65.png
5.指定Offset消费
https://img-blog.csdnimg.cn/direct/bfacbdde4a3043989b4a6e6a78b7736e.png
5.漏消费和重复消费
[*] 重复消费:已经消费了数据,但是offset没提交。
https://img-blog.csdnimg.cn/direct/3d6912f85452404baeab68333f33bb61.png
[*] 漏消费:先提交offset后消费,有可能会造成数据的漏消费。
https://img-blog.csdnimg.cn/direct/014d487849ee46029b21fec405c5e9c5.png
怎么能做到既不漏消费也不重复消费呢?详看消费者事务。
6.消费者事务
https://img-blog.csdnimg.cn/direct/c97bee9e5277442e8ed7a6fa1961ed53.png
7.数据积压
https://img-blog.csdnimg.cn/direct/c87cbaa9c89b46ea8b6737b3cca41593.png
https://img-blog.csdnimg.cn/direct/af61090c9de446f6aab451686d589558.png
偏移量在 Kafka 中起着非常紧张的作用,它不仅记录了消费者消费消息的位置,还确保了消息的传递和消费者的容错规复本领。消费者必要适时地提交偏移量,以确保消费进度可以或许正确记录并在必要时可以或许正确地规复。
Tips:想了解更多相干知识,可以移步我的主页哦~
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]