Kafka架构 数据发送保障

producer是如何确定分区已经成功的将这条消息保存起来了?

其实就是produce发送消息,leader收到这条消息,并且成功的保存下来了,那么会给producer回复叫做ACK,producer在收到了这样回复之后就认为分区把消息成功保存下来了。

如果producer没有收到这样的消息,那么producer会重复的发送这条消息,再次发送,直到收到为止。这就是kafka中发送数据的保障。

leader在将消息存储到本地之后,follower需要向leader做消息的同步,副本的同步方式有下面两种策略。kafka采用的是第二种策略,当所有的follower同步完成之后才会发送ACK给producer。

第二个策略当中,单反有一个follower没有同步完成,这个时候leader就得一直等下去,直到同步完成才会给producer发ack。这样是不行的,不能让leader死等下去。

leader维护了一个动态的列表,副本同步队列,也就是有哪些follower可以和leader建立联系。这样follower就会存在ISR队列里面。如果follower长时间没有和leader进行同步那么也不会死等下去了,会将follower踢出isr的队列,当剩下的follower将数据同步完成leader就可以向producer发送ack了。

kafka为了保证数据可以成功的写入分区当中会有一个ack的应答机制。

1 不需要等待副本的同步,leader只要将消息写下来了就会返回ack,producer就可以发送下一条消息了。

相关推荐
头茬韭菜6 小时前
第 1 篇:「Glass-Box 的骨架」——全景架构与六层数据流水线
架构·agent·semantica
奔跑的架构师7 小时前
[A-50]ARMv9/v8-DVFS系统架构
linux·arm开发·架构·系统架构·arm
隐擎fox7 小时前
高性能网络爬虫架构设计:基于 Python 的长连接复用与分布式会话池调度实践
分布式·python·网络协议·tcp/ip·高并发·网络爬虫、
闲云自留地8 小时前
动手玩 Nova:Hypervisor、主机聚合、可用分区、虚拟机生命周期实操
运维·架构·openstack
一航jason8 小时前
Android平台推理框架及试用场景模型对比
android·人工智能·ai·架构·ai编程·llama
Leo.yuan9 小时前
2026年多数据库实时同步的四种架构方案及工具推荐
数据库·架构
yychen_java10 小时前
第二篇:从世界模型到 Physical AI——一套可落地的工业智能体架构
人工智能·架构
六面体混凝土移动师12 小时前
我把 Cloudflare 开源了
架构·云计算·agent
闲云自留地14 小时前
云平台存储管理员:Cinder 创建挂载卷 + Swift 分布式存储原理
分布式·wpf·swift