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就可以发送下一条消息了。

相关推荐
小短腿的代码世界1 小时前
Qt 3D 深度解析:QtQuick 与 Scene Graph 驱动的工业级 3D 渲染架构
qt·3d·架构
无尽冬.2 小时前
个人八股之三层架构
java·经验分享·后端·架构·异世界
zhojiew2 小时前
使用 Spark Connect 在 Amazon EMR on EC2 上实现远程 Spark开发
大数据·分布式·spark
花椒技术2 小时前
AI 协同开发落地复盘:1 小时生成首版后,为什么 Review 和修正又花了 2-3 天
前端·人工智能·架构
Walter先生3 小时前
中金所股指期货主力合约自动识别:一个接口搞定 IF/IC/IH 连续合约合成
后端·websocket·架构·实时行情数据源
庞轩px3 小时前
第二篇:RocketMQ事务消息——分布式事务的最终一致性方案
分布式·rocketmq
yongyoudayee3 小时前
AI CRM架构深度解析:销售易NeoAgent 2.0如何打破“AI+套壳“的技术困局
大数据·人工智能·架构
heimeiyingwang3 小时前
【架构实战】服务熔断与限流Sentinel:高可用服务的守护神
架构·sentinel
上海云盾第一敬业销售3 小时前
选择适合企业的高防CDN服务:架构解析与实践分享
安全·web安全·架构