kafka 副本复制参数理解笔记

本文探讨了Kafka如何通过副本复制确保数据不丢失,分析了不同acks配置下的数据安全性和min.insync.replicas参数的作用。在acks=all时,即使部分副本宕机,只要满足min.insync.replicas条件,数据仍可保证安全。然而,如果leader和副本同时宕机,仍存在数据丢失风险。
摘要由CSDN通过智能技术生成

kafaka有几个参数来保证数据在异常情况下不丢失。一直以来都没有搞的太清楚,后来又一次看了官方的文档,然后理解了,但不知昨天又想这个事情的时候,发现又模糊了。所以还是写下来,以来加深理解,而来做个思维备份吧。(说到思维备份,突然想到了黑镜里面的意识副本,什么时候我们的现实生活中也能有一种工具,可以把这个时候的想法瞬间保存起来,这貌似就不用我手动备份了。不过这种东西要是真实现了,貌似也很恐怖,呵呵)

 

kafka 的partition通过增加副本机器来防止宕机造成的数据丢失。partition中有leader角色 和 副本角色。leader负责处理producer 和 consume的请求,而副本机器只负责sync leader收到的消息。

按照正常的思维,当producer发消息给leader后,leader需要复制给其他副本,如果复制成功,那么数据就可以在至少一台机器不宕机的情况下,保证数据的不丢失。

但是有没有想过,不管是leader 还是 副本机器,他们都是将消息写log的,也就是已经持久化了,那么宕机了,按说也不会丢失啊。那是因为根本没有持久化。kafka的broker收到消息后,确实写的log,但是只是写到了page cache中,并没有刷到磁盘上。刷磁盘的动作是一个批处理的策略,会通过消息量,间隔时间来定期定量来刷,所以如果在刷之前宕机了(物理机宕机,进程挂掉其实并不会导致未刷到磁盘的数据丢失),消息就有可能宕机。其实就是每次broker收到了消息,然后立马将消息刷的磁盘(通过系统调用sync,来强制刷磁盘),这也不能保证数据不会丢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值