kafka的副本以及分区与副本的关系

这篇具有很好参考价值的文章主要介绍了kafka的副本以及分区与副本的关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一 副本的作用

1.Kafka 副本作用:提高数据可靠性。

2.Kafka 中副本分为:Leader 和 Follower。Kafka 生产者只会把数据发往 Leader, 然后 Follower 找 Leader 进行同步数据。

读写由leader来完成,follower只备份,和leader同步数据,leader发生故障,follower顶上去。

leader副本:可以理解为某个分区中,除了不是副本的那个分区。

3.Kafka 分区中的所有副本统称为 AR(Assigned Repllicas)。

AR = ISR + OSR

4.ISR:表示和 Leader 保持同步的 Follower 集合。如果 Follower 长时间未向 Leader 发送通信请求或同步数据,则该 Follower 将被踢出 ISR。该时间阈值由 replica.lag.time.max.ms参数设定,默认 30s。Leader 发生故障之后,就会从 ISR 中选举新的 Leader。

5.OSR:表示 Follower 与 Leader 副本同步时,超时的副本集合。

二 副本与分区的作用

2.1 案例描述

假设创建4个节点,5个分区,2个副本,那么分区,副本的关系,如下图所示:

root@VM_15_71_centos kafka_2.11-1.0.0]# bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic test-part
[2019-06-28 01:23:50,646] INFO Accepted socket connection from /127.0.0.1:41204 (org.apache.zookeeper.server.NIOServerCnxnFactory)
[2019-06-28 01:23:50,646] INFO Client attempting to establish new session at /127.0.0.1:41204 (org.apache.zookeeper.server.ZooKeeperServer)
[2019-06-28 01:23:50,649] INFO Established session 0x16b99ec1ce1000c with negotiated timeout 30000 for client /127.0.0.1:41204 (org.apache.zookeeper.server.ZooKeeperServer)
Topic:test-part PartitionCount:5    ReplicationFactor:2 Configs:
        Topic: test-part    Partition: 0    Leader: 0   Replicas: 0,2   Isr: 0,2
        Topic: test-part    Partition: 1    Leader: 1   Replicas: 1,3   Isr: 1,3
        Topic: test-part    Partition: 2    Leader: 2   Replicas: 2,0   Isr: 2,0
        Topic: test-part    Partition: 3    Leader: 3   Replicas: 3,1   Isr: 3,1
        Topic: test-part    Partition: 4    Leader: 0   Replicas: 0,3   Isr: 0,3
[2019-06-28 01:23:50,899] INFO Processed session termination for sessionid: 0x16b99ec1ce1000c (org.apache.zookeeper.server.PrepRequestProcessor)
[2019-06-28 01:23:50,904] INFO Closed socket connection for client /127.0.0.1:41204 which had sessionid 0x16b99ec1ce1000c (org.apache.zookeeper.server.NIOServerCnxn)

通过以上信息我们可以分析得出:

1.opic:test-part PartitionCount:5    ReplicationFactor:2 Configs:

一个主题: test-part, 5个分区,2个副本。

2.Partition这一列竖着看,【0,1,2,3,4】共5个分区。

3.Replicas 这一列竖着看,将所有boker的id去重后【[0,2],[1,3],[2,0],[3,1],[0,3]】,得到的集合个数为节点的数目【0,1,2,3】

4.Replicas 这一列,选择任意一行横着看,boker的id的集合大小为,副本的个数,如【0,2】副本数为2。

梳理存储分布图: 

kafka的副本以及分区与副本的关系

三 kafka的分区的leader副本选举

3.1 leader选举思想

按照:在 isr中存活为前提,按照 AR中排在前面的优先顺序,比如

选举规则:在 isr 中存活为前提,按 照AR中排在前面的优先。例如 ar[1,0,2], isr [1, 0 2] ,那么 leader 就会按照1 0 2 的顺序轮询。
1. 创建一个新的 topic 4 个分区, 4 个副本
kafka的副本以及分区与副本的关系

2.查看 Leader 分布情况

kafka的副本以及分区与副本的关系 3.停止掉 hadoop105 kafka 进程,并查看 Leader 分区情况

kafka的副本以及分区与副本的关系

 可以看到按照AR中的顺序,3021中3挂掉,0成为主节点。

 四 leader与follower发生故障处理

 4.1 follower发生故障

1.LEO和HW

LEO Log End Offset ): 每个副本的最后一个 offset LEO 其实就是最新的 offset+ 1
HW High Watermark ): 所有副本中最小的 LEO
kafka的副本以及分区与副本的关系

2.流程

1.Follower发生故障后会被临时踢出ISR

2.这个期间Leader和Follower继续接收数据(不管follower是否还能接收到,二者还是在通信同步数据)

3.待该Follower恢复后,Follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向Leader进行同步。

4.等该Follower的LEO大于等于该Partition的HW,即Follower追上Leader之后,就可以重新加入ISR了。

  4.2 leader发生故障

1.LEO和HW

LEO Log End Offset ): 每个副本的最后一个 offset LEO 其实就是最新的 offset+ 1
HW High Watermark ): 所有副本中最小的 LEO

2.流程

kafka的副本以及分区与副本的关系

  五  手动调试分区副本存储

  5.1 需求描述 

kafka的副本以及分区与副本的关系

 5.2  操作步骤

1.创建一个新的 topic ,名称为 three
kafka的副本以及分区与副本的关系

2.查看分区副本存储情况。

kafka的副本以及分区与副本的关系

3. 创建副本存储计划(所有副本都指定存储在 broker0broker1 中)。

kafka的副本以及分区与副本的关系

 4.执行副本存储计划。

kafka的副本以及分区与副本的关系

5.验证副本存储计划。

kafka的副本以及分区与副本的关系 6.查看分区副本存储情况

kafka的副本以及分区与副本的关系

   六  生产经验——Leader Partition 负载平衡(了解)

正常情况下, Kafka 本身会自动把 Leader Partition 均匀分散在各个机器上 ,来保证每台机器的读写吞吐量都是均匀的。但是如果 某些broker 宕机 会导致 Leader Partition 过于集中在其他少部分几台 broker ,这会导致少数几台 broker 的读写请求压力过高,其他宕机的 broker重启之后都是 follower partition ,读写请求很低, 造成集群负载不均衡。 

 kafka的副本以及分区与副本的关系

kafka的副本以及分区与副本的关系文章来源地址https://www.toymoban.com/news/detail-405479.html

到了这里,关于kafka的副本以及分区与副本的关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • kafka如何在运行中增加分区并重新分配副本

    1.扩容 在新的物理机上安装kafka程序,修改config/server.properties文件里的broker.id必须在集群中唯一,修改其他必要的配置项,其中zookeeper.connect配置项,写上kafka集群现在使用的zookeeper集群的地址。 然后启动kafka就可以加入到集群中了。 但是新加入的机器只能对新产生的topic起作

    2024年02月10日
    浏览(40)
  • Kafka3.0.0版本——手动调整分区副本示例

    四台服务器 原始服务器名称 原始服务器ip 节点 centos7虚拟机1 192.168.136.27 broker0 centos7虚拟机2 192.168.136.28 broker1 centos7虚拟机3 192.168.136.29 broker2 centos7虚拟机4 192.168.136.30 broker3 2.1、先启动zookeeper集群 启动zookeeper集群 2.2、再启动kafka集群 启动kafka集群 3.1、手动调整分区副本的前提

    2024年02月11日
    浏览(56)
  • kafka 动态扩容现有 topic 的分区数和副本数

    文档内出现的 ${KAFKA_BROKERS} 表示 kafka 的连接地址, ${ZOOKEEPER_CONNECT} 表示 zk 的连接地址,需要替换成自己的实际 ip 地址 创建一个演示 topic 查看 topic 详情 总共是六个 kafka 节点,三分区一副本,分散在三个不同的 kafka 节点 关于输出内容的概念 分区(Partition) : 主题(Topi

    2024年02月10日
    浏览(45)
  • kafka2.x常用命令:创建topic,查看topic列表、分区、副本详情,删除topic,测试topic发送与消费

    原创/朱季谦 接触kafka开发已经两年多,也看过关于kafka的一些书,但一直没有怎么对它做总结,借着最近正好在看《Apache Kafka实战》一书,同时自己又搭建了三台kafka服务器,正好可以做一些总结记录。 本文主要是记录如何在kafka集群服务器上创建topic,查看topic列表、分区、

    2024年02月03日
    浏览(48)
  • [AIGC_coze] Kafka 的主题分区之间的关系

    在 Kafka 中,主题(Topics)和分区(Partitions)是两个重要的概念,它们之间存在着密切的关系。 主题是 Kafka 中用于数据发布和订阅的逻辑单元。每个主题可以包含多个分区,每个分区都是一个独立的有序数据集。生产者将数据发送到特定的主题,而消费者通过订阅主题来接收

    2024年02月19日
    浏览(33)
  • Kafka中的主题(Topic)和分区(Partition)是什么?它们之间有什么关系?

    在Kafka中,主题(Topic)和分区(Partition)都是用于组织和存储消息的概念,它们有密切的关系。 主题(Topic):主题是消息的逻辑分类。可以将主题理解为一个逻辑上的消息容器,类似于一个消息类别或者话题。在Kafka中,生产者(Producer)将消息发布到特定的主题,而消费

    2024年02月15日
    浏览(46)
  • Kafka 原理以及分区分配策略剖析

    一、简介 Apache Kafka 是一个分布式的流处理平台(分布式的基于发布/订阅模式的消息队列【Message Queue】)。 流处理平台有以下3个特性: 可以让你发布和订阅流式的记录。这一方面与消息队列或者企业消息系统类似。 可以储存流式的记录,并且有较好的容错性。 可以在流式

    2023年04月08日
    浏览(40)
  • 05、Kafka ------ 各个功能的作用解释(主题和分区 详解,用命令行和图形界面创建主题和查看主题)

    Kafka 主题虽然也叫 topic,但它和 Pub-Sub 消息模型中 topic 主题及 AMQP 的 topic 都不同(AMQP 的 topic 只是 Exchange 的类型)。 Kafka 的主题只是盛装消息的逻辑容器(注意是逻辑容器),主题之下会分为若干个分区,分区才是盛装消息的物理容器。 ▲ 消息组织方式实际上是三级结构

    2024年02月03日
    浏览(44)
  • 全网最详细地理解Kafka中的Topic和Partition以及关于kafka的消息分发、服务端如何消费指定分区、kafka的分区分配策略(range策略和RoundRobin策略)

    最近在学习kafka相关的知识,特将学习成功记录成文章,以供大家共同学习。 首先要注意的是, Kafka 中的 Topic 和 ActiveMQ 中的 Topic 是不一样的。 在 Kafka 中, Topic 是一个存储消息的逻辑概念,可以认为是一个消息集合。每条消息发送到 Kafka 集群的消息都有一个类别。 物理上

    2024年01月25日
    浏览(43)
  • Kafka3.0.0版本——消费者(分区的分配以及再平衡)

    1.1、消费者分区及消费者组的概述 一个consumer group中有多个consumer组成,一个 topic有多个partition组成。 1.2、如何确定哪个consumer来消费哪个partition的数据 Kafka有四种主流的分区分配策略: Range、RoundRobin、Sticky、CooperativeSticky。 可以通过配置参数 partition.assignment.strategy ,修改分

    2024年02月07日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包