当前位置:   article > 正文

复习篇-kafka_kafka生产者设置ack超时时间

kafka生产者设置ack超时时间

Kafka优点:

吞吐量、低延迟、高并发、高性能的消息中间件。Kafka 集群甚至可以做到每秒几十万、上百万的超高并发写入

为什么吞吐量大?

磁盘顺序写(通过偏移量查找)+零拷贝技术+分区

kafka一个主题需要设置分区和分区副本数,一个分区有一个leader和对应的副本数-1个follower

kafka的message格式是什么样的

一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成

Kafka Producer 消息发送有两种方式:

1.同步方式
acks=0: producer 不等待 Leader 确认,只管发出即可;最可能丢失消息,适用于高吞吐可丢失的业务;
acks=1(默认值): producer 等待 Leader 写入本地日志后就确认;之后 Leader 向 Followers 同步时,如果 Leader 宕机会导致消息没同步而丢失,producer 却依旧认为成功;(延迟低)
acks=all/-1: producer 等待 Leader 写入本地日志、而且 Leader 向 Followers 同步完成后才会确认;最可靠。(延迟高)
2.异步方式
优点是可批量发送消息(消息个数达到 batch.num.messages=200 或时间达到 “ 时发送)、吞吐量佳,缺点是发送不及时可能导致丢失;

消息重复根本原因:已经消费了数据,但是 offset 没提交。
外在原因:(1)消费数据后、提交 offset 前,线程被杀;

消息丢失根本原因
(1)已经提交了 offset,但数据在内存中尚未处理,线程就被杀掉。
(2)生产者利用同步提交设置ack=0或者1的时候会出现

kafka如何保证数据的顺序消费?

严格说,kafka是无法保证全局消息有序的,没有这个机制,只能分区内有序。
但是如果只有一个分片和一个消息的生产者,那么就相当于消息全局有序了。
如果有多个消息生产者,就算只有一个分片,如果这些生产者的消息都发给这个分片,那kafka中的消息连局部有序都没有办法了。

kafka的数据重复消费怎么处理?

设当增加自动提交偏移量的时间,排查业务逻辑并优化业务处理速度。

如何保证kafka中数据不丢失?

同步模式下,确认机制设置为-1(不可为1),即让消息写入Leader和Follower之后再确认消息发送成功;
异步模式下,设置为不限制阻塞超时时间(不可为acks=0),当缓冲区满时不清空缓冲池,而是让生产者一直处于阻塞状态;

isr列表

isr列表维护的是同一个分区所有跟得上leader同步速度的follower的副本分区,每个分区都会维护一个最大的LEO(数据偏移量),
isr列表里LEO最小的那个值被称为高水位,只有高水位之前的数据才可以被客户端访问到。
ISR的方式有效的权衡了数据的可靠性和性能之间的关系。

isr列表都崩了会怎么样?

1.等待ISR中任一Replica(副本分区)恢复,并选它为Leader。(默认模式)
或ISR中的所有Replica都无法恢复或者数据丢失,则该Partition将永不可用(可用性低)
2.选择第一个恢复的Replica为新的Leader,无论它是否在ISR中
并未包含所有已被之前Leader Commit过的消息,因此会造成数据丢失(可用性高)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/734921
推荐阅读
相关标签
  

闽ICP备14008679号