美文网首页
kafka 复制与一致性

kafka 复制与一致性

作者: july2993 | 来源:发表于2018-06-23 13:50 被阅读24次

数据复制基于PacificA

对kafka为了吞吐返回客户端的时候不保证数据已经落盘了,所以后面不管怎么复制写多少个副本都不保证数据落盘持久(全部机器一起挂还是可能会丢数据)

Then it will write the new messages to local disk. On Linux, the messages are written to the filesystem cache and there is no guarantee about when they will be written to disk. Kafka does not wait for the data to get persisted to disk—it relies on replication for message durability.

kafka以partition为单位复制数据。
一些关键的配置:

  • unclean.leader.election.enable
    false表示leader只会从in-sync里选leader。0.11开始默认false。非leader不保证有最新数据,也就是acks=all的请求只保证发到了in-sync里的副本,如果后面在非in-sync里选leader, 这些没复制到这个副本的数据都会丢。如果in-sync里的副本都挂了,这时只能不可用或者选择在非in-sync里选leader但可能丢一些数据。
  • replication.factor
    复制个数
  • min.insync.replicas
    表示最后要insync集合最少要有多少个副本。对于acks=all写成功就表示最少有min.insync.replicas个副本收到了msg

客户端 producer 推数据的时候可以配置acks=all, all表示leader收到后要得到全部in-sync副本的ack才返回客户端成功了。
kafka会维护一个in-sync副本集合,leader会把落后太多的副本从in-sync集合里剔除。

  • kafka有没可能存在两个leader同时接受可写的情况(network partition),最后丢一部分数据?
    看PacificA论文是用lease来防止同时存在两个leader的,也就是如果zero clock drift是可以防止存在这种情况的。配置都存zk, 修改配置提交zk,版本号递增。leader有可能随时被剔除,其它in-sync副本修改配置成为leader, 但原来但leader还不知道仍然接受请求(如果ack=1他写成功了就返回成功了)。为了防止这种情况,leader会给fellower请求得到一个lease, 比如5s内你保证不去选举成leader, 这样leader只要得到这个lease在一定时间内就可以放心当不会自己已经被剔除成为leader了。

https://cwiki.apache.org/confluence/display/KAFKA/KIP-101+-+Alter+Replication+Protocol+to+use+Leader+Epoch+rather+than+High+Watermark+for+Truncation
https://stackoverflow.com/questions/48825755/how-does-kafka-handle-network-partitions
https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Replication
https://cwiki.apache.org/confluence/display/KAFKA/KIP-101+-+Alter+Replication+Protocol+to+use+Leader+Epoch+rather+than+High+Watermark+for+Truncation
https://stackoverflow.com/questions/48825755/how-does-kafka-handle-network-partitions?rq=1

相关文章

  • kafka 复制与一致性

    数据复制基于PacificA 对kafka为了吞吐返回客户端的时候不保证数据已经落盘了,所以后面不管怎么复制写多少...

  • 提升内功-kafka producer 小结

    目录 kafka producerkafka 分区策略kafka 数据可靠性保证 - ackkafka 数据一致性...

  • kafka-怎么保证消息的可靠性与一致性

    在kafka中主要通过ISR机制来保证消息的可靠性。下面通过几个问题来说明kafka如何来保证消息可靠性与一致性 ...

  • Kafka服务器端

    目录 kafka是如何维护集群成员关系 kafka集群中分区首领是如何选取的 kafka如何进行复制 kafka是...

  • Flink和kafka

    Flink + Kafka 整合数据一致性保证 1. Flink消费kafka数据起始offset配置:Flink...

  • kafka学习笔记

    kafka节点之间如何复制备份的? kafka使用Zookeeper实现leader选举。如果leader失败,c...

  • Kafka学习笔记02(安装部署)

    kafka安装部署 2.2.1 集群安装安装zk下载kafka 版本0.11复制到linux,解压修改 serve...

  • 深入分析Kafka高可用性

    本文主要内容:①kafka复制机制②分区leader副本宕掉怎么选新的leader③高水位与leader epoc...

  • MySQL-主从复制高级进阶

    半同步复制(了解) 3 解决主从数据一致性问题 半同步复制工作原理的变化 配置半同步复制 过滤复制 说明 主库: ...

  • raft 和 zab协议

    raft 是一个 副本一致性协议1, 我们可以类比的是 zookeper 的副本一致性机制2, kafka 的 I...

网友评论

      本文标题:kafka 复制与一致性

      本文链接:https://www.haomeiwen.com/subject/dqcbeftx.html