一 副本的作用

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,2Topic: test-part    Partition: 1    Leader: 1   Replicas: 1,3   Isr: 1,3Topic: test-part    Partition: 2    Leader: 2   Replicas: 2,0   Isr: 2,0Topic: test-part    Partition: 3    Leader: 3   Replicas: 3,1   Isr: 3,1Topic: 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的分区的leader副本选举

3.1 leader选举思想

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

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

2.查看 Leader 分布情况

 3.停止掉 hadoop105 的 kafka 进程,并查看 Leader 分区情况

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

四 leader与follower发生故障处理

4.1 follower发生故障

1.LEO和HW

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

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.流程

五  手动调试分区副本存储

  5.1 需求描述

5.2  操作步骤

1.创建一个新的 topic,名称为 three

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

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

4.执行副本存储计划。

5.验证副本存储计划。

 6.查看分区副本存储情况

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

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

kafka的副本以及分区与副本的关系相关推荐

  1. Kafka中broker,分区,副本的概念

    目录 (43条消息) Kafka的生成者.消费者.broker的基本概念_陈晨辰呀的博客-CSDN博客_broker 创建topic并查看topic情况 副本: 查看日志文件找到两个分区partiti ...

  2. 6.2.2 分区与副本

    6.2.2分区与副本 本章最开始分析底层的消息集时,主要专注物理层面的日志.日志分段.日志管理器,并没有过多考虑什么时候通过日志管理器去调用日志对象的相关方法.然后,在分析副本管理器时,我们知道日志管 ...

  3. kafka 分区和副本以及kafaka 执行流程,以及消息的高可用

    1.Kafka概览 Apache下的项目Kafka(卡夫卡)是一个分布式流处理平台,它的流行是因为卡夫卡系统的设计和操作简单,能充分利用磁盘的顺序读写特性.kafka每秒钟能有百万条消息的吞吐量,因此 ...

  4. kafka分区及副本在broker的分配

    kafka分区及副本在broker的分配 @(KAFKA)[kafka, 大数据] 部分内容参考自:http://blog.csdn.net/lizhitao/article/details/4177 ...

  5. kafka查看broker上主副本_kafka分区及副本在broker的分配

    kafka分区及副本在broker的分配 以下以一个Kafka集群中4个Broker举例,创建1个topic包括4个Partition,2 Replication:数据Producer流动如图所看到的 ...

  6. Kafka topic分区增加副本

    Kafka中topic的每个分区可以设置多个副本.如果副本数为1,当该分区副本的leader节点宕机后,会导致该分区不可用.故需要设置多副本来保证可用性. 实际项目中,存在项目初期创建了副本数为1的t ...

  7. Kafka系列之:深入理解Kafka 主题、分区、副本、LEO、ISR、HW、Kafka的主写主读和分区leader选举

    Kafka系列之:深入理解Kafka 主题.分区.副本.LEO.ISR.HW.Kafka的主写主读和分区leader选举 一.Kafka重要知识点提炼 二.详细介绍Kafka 主题.分区.副本.LEO ...

  8. Kafka从入门到精通(七)分区和副本机制

    1. 分区和副本机制 1.1 生产者分区写入策略 生产者写入消息到topic,Kafka将依据不同的策略将数据分配到不同的分区中 轮询分区策略 随机分区策略 按key分区分配策略 自定义分区策略 1. ...

  9. Kafka的分区和副本机制

    文章目录 Leader和Follower 生产者分区写入策略 轮询分区策略 随机策略(不用) 按key分配策略 乱序问题 自定义分区策略 消费者组Rebalance机制 消费者分区分配策略 Range ...

最新文章

  1. 参加java培训,要避免这几个误区!
  2. Unity NGUI ScrollView 苹果式滑动
  3. 爬虫python书籍-Python爬虫案例:抓取豆瓣编程类高评分书籍
  4. MapInfo数据到ARCGIS数据Shapefile的转换
  5. django ORM 操作
  6. 按键精灵bmp图片怎么导出_发光字怎么制作,招牌LED发光字工艺
  7. Tomcat8服务器在Cookie中添加当前系统时间报错
  8. Android开发如何去除标题栏title(转)
  9. Struts中提示Invalid result location value/parameter
  10. always on sql 收缩日志_啥?我写的一条SQL让公司网站瘫痪了...
  11. 远程访问用户 Kindle---通过电子书实现控制
  12. 【转】PLC编程软件: KW multiprog 和 codesys
  13. 配电室站房监控改造工程 环境辅助控制系统
  14. unity人物刚体移动_Unity3D 角色(物体) 移动方法 合集
  15. 中国个人企业征信体系介绍
  16. 利用paddlepaddle爬取丁香园实时统计数据,并生成疫情地图!!
  17. RS485——RS485通信基础理论与STM32测试
  18. excel柱形图/条形图怎能给正负值填充不同的颜色
  19. sphinx-for-chinese在windows下安装与使用方法
  20. 【python学习】如何将字典添加到字典

热门文章

  1. exp00091 oracle,EXP-00091错误的说明和解决方法
  2. 霍金去世-时间有没有尽头?Stephen William Hawking
  3. Java集合:ConcurrentHashMap详解
  4. 基于OP放大器的有源模拟滤波器设计--基础知识
  5. Ubuntu 上下左右键变成ABCD
  6. 为什么自学Java学不好?大概率是这3个原因
  7. 基于网络爬虫的负面信息搜集系统
  8. opengl光照效果的三棱锥+键盘上下左右控制旋转(学习笔记-仅供参考)
  9. matlab波门,一种距离波门拖引有源干扰的仿真设计方法与流程
  10. Linux系统安装rpm文件:error: can‘t create transaction lock on /var/lib/rpm/.rpm.lock