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应该是被删除掉的,现在还存在,先不理。

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

相关推荐
橙子圆1233 小时前
RabbitMQ知识1
分布式·rabbitmq
(Charon)4 小时前
【Kafka】消息队列学习(一):为什么需要Kafka?从消息队列到整体架构
学习·架构·kafka
clz13145214 小时前
风险特征系统 EPC 子系统:基于 Kafka 数据源与数据集配置的 Flink 指标清洗加工
分布式·flink·kafka
富士康质检员张全蛋4 小时前
Kafka实战 生产阶段 消费阶段的拦截器
kafka
海上小飞龙5 小时前
分布式和微服务,一次讲清
分布式·微服务·架构
clz13145216 小时前
用 Akka Actor 模拟消费 Kafka 加工处理并发送到 Flink Out Kafka 的完整示例
flink·kafka·linq
(Charon)6 小时前
【Kafka】消息队列学习(二):Topic、Partition与Offset,消息到底存在哪里
分布式·学习·kafka
陈皮波比茶21 小时前
分布式任务调度xxl-job
java·分布式
敲代码的嘎仔1 天前
从集群锁失效到异步领券:我用分布式锁 + Redisson + MQ 把领券接口 RT 从 200ms 压到 15ms
java·数据库·redis·分布式·缓存·ai·wpf
lauo1 天前
FDE的终极形态:从“一个人”到“一个网络”
人工智能·分布式