当前位置:   article > 正文

kafka(三): 数据生产流程,数据复制与Replica Failover

数据生产流程

【这是一篇7月份躺在草稿箱的文章,今天翻出来整理一下。】

数据生产流程

1.发送到kafka的数据会封装为ProducerRecord对象,包含topic、partition、key、value信息;
2.调用send()方法后,将数据序列化为字节数组,如果没有指定分区 ,那么分区器会根据ProducerRecord 对象的键来计算一个分区;
3.当消息达到一个批次设定的量(消息放在缓冲区中),通过网络发送到不同的主题,不同的分区;
4.如果消息成功写入 Kafka,就返回 一 个
RecordMetaData 对象,它包含了主题和分区信息,以及记录在分区里的偏移量。如果写入
失败, 则告知生产者尝试重新发送消息,达到最大重试次数就抛出异常。

数据复制

第一个注册到Zookeeper的broker为Contrllor,除了具有一般 broker 的功能之外,还负责加入集群的broker上的分区首领的选举(以及离开集群的broker上的首领分区的重新选举)。

  1. kafka中,每一个partition,有一个leader(所以集群并不是一定只有一个leader,可能有多个leader),其他follower去拉取数据。
  2. 考虑到数据的一致性,Kafka中,消费者只能读取被commit的数据,因为如果允许消费者读取非commit的数据,考虑消费者1读取机器A中的数据,而该数据只有A和leader中有数据,其他flower还没与pull复制,这个时候leader和A挂了

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

闽ICP备14008679号