06、Kafka ------ 各个功能的作用解释(ISR 同步副本、非同步副本、自动创建主题、修改主题、删除主题)

目录

  • [CMAK 各个功能的作用解释](#CMAK 各个功能的作用解释)
    • [★ ISR副本 (同步副本)](#★ ISR副本 (同步副本))
    • [★ 非同步副本](#★ 非同步副本)
    • [★ 自动创建主题](#★ 自动创建主题)
    • [★ 修改主题](#★ 修改主题)
    • [★ 删除主题](#★ 删除主题)

CMAK 各个功能的作用解释

★ ISR副本 (同步副本)

简单来说 ,ISR 副本 就是 Kafka 认为与 领导者副本 同步的副本。

ISR(In Sync Replicas )副本就是Kafka认为与领导者副本的数据同步的副本,根据该定义可看出,领导者副本天然就是ISR副本,毕竟它自己与自己肯定是同步的。甚至在某些情况下,ISR副本集中只有领导者一个副本。

判断一个副本是否符合ISR标准,取决于server.properties文件中replica.lag.time.max.ms配置参数,

该参数的默认值为30000(即30s),Kafka建议将该参数配置在10~30s之间

只要一个追随者副本滞后领导者副本的时间不连续超过replica.lag.time.max.ms 参数值,那Kafka就认为该追随者副本满足ISR标准

就是追随者副本要在30s之内与领导者副本有进行数据同步的操作,这个副本才能被称为 ISR 同步副本。

追随者分区,基本上我们的程序是没办法直接去操作它的,因为追随者分区只是领导者分区的一个后备,因此,追随者分区会自动的和领导者分区保持数据的一致,进行数据同步。

就是这个:

在 server.properties 文件里面添加这个配置。

追随者副本要在20s之内与领导者副本进行同步数据的操作

每个节点都加上这个配置

Kafka官方文档

对这个配置的解释:

领导者分区有几个追随者分区,取决于我们设置的复制因子有多少,如果复制因子是3,那么就意味着每个领导者分区 2个 追随者分区。

复制因子是3 ,就表明有3个分区,其中1个是领导者分区,2个是追随者分区。

★ 非同步副本

默认:非同步副本不应该被选作领导者副本。

Kafka将所有不符合ISR的副本称为非同步副本。

通常而言,非同步副本落后领导者副本太多,当领导者副本挂掉时,非同步副本不适合被选举成领导者副本,否则会造成数据丢失,这也是Kafka的默认设置。

▲ 剥夺了非同步副本被选为领导者副本的资格,势必会造成可用性降低的问题。

比如将复制因子设为4,这意味着一个分区有1个领导者副本和3个追随者副本,

当领导者副本挂掉时,有可能这3个追随者副本都不符合ISR标准,那就没法选出新的领导者副本了,那这个分区就不可用了。

▲ 启用"非同步副本被选为领导者副本"

将 unclean.leader.election.enable 参数 设为 true 即可开启 "Unclean领导者选举"------允许非同步副本被选为领导者副本。

【注意】:开启"Unclean领导者选举"可以提高Kafka的可用性,但可能会造成数据丢失。

要开启的话,可以在配置文件中配置开启:

开启这个,在 Kafka 没有 ISR 同步副本可选的情况下,才会在非同步副本里面选择一个作为领导者副本。

★ 自动创建主题

当发送消息的主题不存在且希望Kafka能自动创建主题时,可在config/server.properties文件中增加如下配置:

设置是否允许自动创建主题(原默认值为true)

allow.auto.create.topics=true

设置自动创建主题时默认的复制因子为3(原默认值为1)

default.replication.factor=3

设置自动创建主题时默认默认分区数(原默认值为1)

num.partitions=2

把设置也添加进去:

★ 修改主题

如果要修改主题的分区数、复制因子、以及额外配置参数等,可使用kafka-topics.bat命令的--alter选项,例如如下命令:

kafka-topics.bat --alter ^

--bootstrap-server localhost:9092 ^

--partitions 5 ^

--topic test1

上面命令将test1主题的分区数改为5,

test1 这个 kafka 主题节点,原本是3个分区

修改分区数量:

记得要指定修改哪个broker节点,这里是修改端口号为 9092的kafka节点。

修改成功

★ 删除主题

如果要删除主题,则使用kafka-topics.bat的--delete选项,例如如下命令可删除test1主题。

kafka-topics.bat --delete ^

--bootstrap-server localhost:9092 ^

--topic test1

删除该主题后,该主题所包含的全部分区被删除、该主题下的所有消息也被删除了。

CMAK 界面删除主题:

命令删除主题:

按理说这个test1应该是被删除掉的,现在还存在,先不理。

直接界面删除,感觉没删除干净,先不理这个,后续再研究。

相关推荐
孙克旭_6 小时前
第三章 分布式缓存Redis
redis·分布式·缓存
SlothLu9 小时前
Debezium-BinaryLogClient
java·mysql·kafka·binlog·多线程·debezium·数据迁移
天冬忘忧10 小时前
Kafka 消费者全面解析:原理、消费者 API 与Offset 位移
大数据·kafka
jlting19510 小时前
《智慧教育实时数据分析推荐项目》详细分析
大数据·redis·sql·kafka·database
好看资源平台10 小时前
网络爬虫——分布式爬虫架构
分布式·爬虫·架构
_Matthew11 小时前
学习Zookeeper
分布式·zookeeper·云原生
JoyousHorse11 小时前
单体架构、集群架构和分布式架构概述
分布式·架构·软件工程·软考·系统架构设计师
油头少年_w12 小时前
Hadoop进阶原理(HDFS、MR、YARN的原理)
大数据·hadoop·分布式
圆蛤镇程序猿14 小时前
【什么是RabbitMQ】
分布式·rabbitmq
张彦峰ZYF14 小时前
接口性能优化宝典:解决性能瓶颈的策略与实践
java·redis·分布式·后端·算法·性能优化·架构