首页 > 其他分享 >14_Kafka高级_生产者ISR

14_Kafka高级_生产者ISR

时间:2022-11-17 12:37:06浏览次数:47  
标签:副本 14 zk ISR Kafka 同步 kafka leader


生产者数据的可靠性保证。

刚才已经讲完了,数据发到哪个分区,但是,数据生产者已经发过去了,但是kafka有没有接到,那就是另一个问题。现在就准备讲,生产者数据的可靠性保证怎么实现的。

生产者发送数据一般是和leader进行交互的,怎么才能保证数据不丢失呢?

14_Kafka高级_生产者ISR_生产环境


14_Kafka高级_生产者ISR_生产环境_02


正常来说生产者是给leader来发消息的,follower向leader同步数据。

那什么时候发送ack呢?

14_Kafka高级_生产者ISR_生产环境_03


14_Kafka高级_生产者ISR_kafka_04


比较半数机制和全部机制:

14_Kafka高级_生产者ISR_kafka_05

14_Kafka高级_生产者ISR_生产环境_06


14_Kafka高级_生产者ISR_kafka_07


kafka选择了这种:

14_Kafka高级_生产者ISR_kafka_08


但是这种方案有个问题就是,同步的时候,有个副本挂了,而且很久才能好起来,那就需要等很长的时间。

所以选择第二种方案的时候,做了一个优化。(提出ISR机制)

去查看topic

14_Kafka高级_生产者ISR_kafka_09


14_Kafka高级_生产者ISR_kafka_10


14_Kafka高级_生产者ISR_kafka_11


什么是ISR?

叫做同步副本。

14_Kafka高级_生产者ISR_kafka_12


主要是解决刚才说的问题,防止所有副本再同步的时候,这个突然坏的副本怎么处理呢。从而影响整个团队。

10个副本:1个leader和9个follower

之前说的等待所有副本都同步结束之后再发送ack不行,而应该把部分副本放到ISR里面,等ISR里面的所有副本全部同步结束之后再发送ack。

问:需要把哪几个副本放到ISR里面呢?看什么选择?

答:ISR,就是为了数据可靠性。为了保证数据不丢失。ISR核心作用就是:

leader挂掉之后,从这里面选取新的leader

你想进ISR的条件:

1、你的通信必须快,通信时间,leader刚写完,你这个副本就写完了,good。

2、数据量高的。比如leader写了10条,其他的有些同步了7条,6条。肯定选择那些同步数据量多的优先选择。

在高版本当中,我们只保留了一个。

实际上保留的是:时间的。也就是最看重的还是你的延迟时间。

14_Kafka高级_生产者ISR_kafka_13


默认时间=10s

14_Kafka高级_生产者ISR_kafka_14


为什么移除另外一个参考因素同步的数据量呢,而采用时间呢?

因为:

1、生产者这里是批量发送数据的。

2、ISR这个队列维护的时候。在生产环境中,kafka是维护在内存中的。同时kafka还需要将数据写到zk中去。在kafka集群中维护了内存中的队列。如果全部的follower的差值都大于10,那这时候全部的follower都需要从ISR中剔除。

但是之后又会拉进来,可能会频繁的操作ISR,剔除ISR,加入ISR,在内存中操作,因为数据还存放在zk中,所以你还要频繁的去操作zk。

因为下图的信息,我们连接了zk才拿到的。所以,还要频繁的操作zk。ISR的频繁进出和频繁操作zk,所以新版本就移除掉了。

14_Kafka高级_生产者ISR_数据_15


标签:副本,14,zk,ISR,Kafka,同步,kafka,leader
From: https://blog.51cto.com/u_15881639/5860641

相关文章

  • 12_Kafka高级_文件存储
    实际上能看到的就是topicName+partitionID这个文件。这个文件下有两个东西很重要。.log结尾的文件是真正存储数据的。.index是存放索引的。先看看.log文件:默认会存储7......
  • 11_Kafka高级_工作流程
    kafka的工作流程和文件存储机制:当生产者往一个不存在的主题发送数据的时候,也可以发送。自己会帮你创建主题,一个分区,一个副本。是server.properties文件里面配置的。这是默......
  • 13_Kafka高级_生产者分区策略
    刚才主要讲的是存储的内容,主要的index和.log两个文件。kafka的生产者:有个分区策略:分区的原因:1、可以以partition为单位进行读写2、提高集群的负载能力。生产者分区的原......
  • 09_Kafka入门_数据日志分离
    关闭kafka但是会有延时,关闭的比较慢。之后再看一下就没了,需要等待一下。我们删除每台机器的logs文件夹:我们希望把数据和logs分开来放。这时候,就相当于kafka新装的一样......
  • 15_Kafka高级_生产者ACk机制
    3)ack应答机制对于某些不太重要的数据,对数据的可靠性要求不是很高,能够容忍数据的少量丢失,所以没必要等ISR中的follower全部接收成功。所以Kafka为用户提供了三种可靠性级别......
  • 16_Kafka高级_数据一致性问题
    (1)follower故障follower发生故障后会被临时踢出ISR,待该follower恢复后,follower会读取本地磁盘记录的上次的HW,并将log文件高于HW的部分截取掉,从HW开始向leader进行同步。等......
  • zk,kafka,redis哨兵,mysql容器化
    1.zookeeper,kafka容器化1.1zookeeper+kafka单机docker模式dockerpullbitnami/zookeeper:3.6.3-debian-11-r46dockerpullbitnami/kafka:3.1.1-debian-11-r36dock......
  • 计算机网络14 Internet网络层主要功能 IP协议 路由协议 ICMP协议
    1 主机、路由器网络层主要功能 2IP数据报2.1图示 2.2字段详细介绍1)版本号占4位:IP协议的版本号。4表示IPv4,6表示IPv6。 2)首部长度占4位:表示IP分......
  • 场效应管SI7114DN-T1-GE3(11.7A)SM3323NHQAC-TRG(54A)MOSFET NCH 30V
    1、型号:SM3323NHQAC-TRGSM3323NHQAC描述:N沟道30V54A封装:DFN3x3D-82、型号:SI7114DN-T1-GE3SI7114DN描述:MOSFETN-CH30V11.7APPAK1212-8FET类型:N通道技术:MOSFET(金......
  • Day14.1:递归
    递归理解:当A方法调用A方法,也就是方法自身调用自身。案例:定义阶乘的方法,并求出5!。publicclassDemo{publicstaticvoidmain(String[]args){System.out......