KafKa 分区,副本实战

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

一主多从

5个broker (1主4从)
安装目路/config/server.properties, 额外复制4份为 server-2.properties,server-3.properties,server-4.properties,server-5.properties

主要配置不同

  • server.properties
broker.id=0
listeners=PLAINTEXT://127.0.0.1:9092
log.dirs=安装目路/logs/kafka-logs
zookeeper.connect=127.0.0.1:2181
  • server-2.properties
broker.id=2
listeners=PLAINTEXT://127.0.0.1:9095
log.dirs=安装目路/logs/kafka-logs2
zookeeper.connect=127.0.0.1:2181
  • server-3.properties
broker.id=3
listeners=PLAINTEXT://127.0.0.1:9097
log.dirs=安装目路/logs/kafka-logs3
zookeeper.connect=127.0.0.1:2181
  • server-4.properties
broker.id=4
listeners=PLAINTEXT://127.0.0.1:9099
log.dirs=安装目路/logs/kafka-logs2
zookeeper.connect=127.0.0.1:2181
  • server-5.properties
broker.id=5
listeners=PLAINTEXT://127.0.0.1:9101
log.dirs=安装目路/logs/kafka-logs2
zookeeper.connect=127.0.0.1:2181

运行这5个broker

.\bin\windows\kafka-server-start.bat  .\config\server.properties
.\bin\windows\kafka-server-start.bat .\config\server-2.properties
.\bin\windows\kafka-server-start.bat .\config\server-3.properties
.\bin\windows\kafka-server-start.bat .\config\server-4.properties
.\bin\windows\kafka-server-start.bat .\config\server-5.properties

创建一个主题test,8个分区,3个副本

kafka-topics.bat --create --topic test --bootstrap-server localhost:9092 --partitions 8 --replication-factor 3

bootstrap-server 参数还可以接受多个服务器地址,以逗号分隔。这样可以指定多个 Kafka 服务器,以提供高可用性和负载均衡,如 --bootstrap-server localhost:9092,localhost:9095,
–replication-factor 副本数是在创建主题时指定的,并且不能大于可用的 Broker 数量,即副本数<=可用broker数,否则会报错如:Error while executing topic command : Replication factor: 4 larger than available brokers: 3

##查看特定主题的详细信息
kafka-topics.bat --bootstrap-server localhost:9092,localhost:9095 --describe --topic test
# 分布情况
Topic: test     TopicId: 6jZrYsAxQOm7aFJwM--Uhw PartitionCount: 8       ReplicationFactor: 3    Configs:
        Topic: test     Partition: 0    Leader: 3       Replicas: 3,0,5 Isr: 3,0,5
        Topic: test     Partition: 1    Leader: 0       Replicas: 0,5,4 Isr: 0,5,4
        Topic: test     Partition: 2    Leader: 5       Replicas: 5,4,2 Isr: 5,4,2
        Topic: test     Partition: 3    Leader: 4       Replicas: 4,2,3 Isr: 4,2,3
        Topic: test     Partition: 4    Leader: 2       Replicas: 2,3,0 Isr: 2,3,0
        Topic: test     Partition: 5    Leader: 3       Replicas: 3,5,4 Isr: 3,5,4
        Topic: test     Partition: 6    Leader: 0       Replicas: 0,4,2 Isr: 0,4,2
        Topic: test     Partition: 7    Leader: 5       Replicas: 5,2,3 Isr: 5,2,3

在 Apache Kafka 中,副本数是指每个分区的备份数量。副本数是在创建主题时指定的,并且不能大于可用的 Broker 数量,否则会报错,

kafka-topics.sh--create --bootstrap-server 127.0.0.1:9092  --replication-factor 4 --partitions 4 --topic test2
.

旧版本

./kafka-topics.sh --create --topic my-topic --zookeeper zookeeper:2181 --partitions 8 --replication-factor 3

如果使用旧版本api 会报 Exception in thread "main" joptsimple.UnrecognizedOptionException: zookeeper is not a recognized option

在最新的 Apache Kafka 版本中/,--zookeeper 参数已被弃用,使用--bootstrap-server,因为 Kafka 已经从 ZooKeeper 转移到使用内置的 Kafka Controller 进行集群管理。因此,在运行 Kafka 命令时不再支持 --zookeeper 参数。


如果你想采用轮询机制将副本和分区分布在5台 Broker 上,可以按照以下步骤进行:

确定每个分区的首领副本(Leader Replica):首先,从 Broker 列表中选择一个 Broker 作为每个分区的首领副本。

轮询分配副本到其他 Broker:对于每个分区,从未被选为首领副本的 Broker 中按照轮询机制选择两个副本(复制副本)。确保每个 Broker 所分配的副本数量尽可能相等,以实现负载均衡

确定副本的位置:根据上述分配过程,确定每个分区的首领副本和复制副本所在的 Broker。

下面是一个具体的示例分配方案:

Topic: topic-1
分区数:8
副本数:3
Broker列表:broker-1、broker-2、broker-3、broker-4、broker-5
具体分区和副本的分布如下:

分区 0:首领副本 - broker-1,复制副本 - broker-2,broker-3
分区 1:首领副本 - broker-2,复制副本 - broker-3,broker-4
分区 2:首领副本 - broker-3,复制副本 - broker-4,broker-5
分区 3:首领副本 - broker-4,复制副本 - broker-5,broker-1
分区 4:首领副本 - broker-5,复制副本 - broker-1,broker-2
分区 5:首领副本 - broker-1,复制副本 - broker-2,broker-3
分区 6:首领副本 - broker-2,复制副本 - broker-3,broker-4
分区 7:首领副本 - broker-3,复制副本 - broker-4,broker-5
根据轮询机制,每个 Broker 上的副本数量都相等,并且每个分区的副本尽量分布在不同的 Broker 上。

需要注意的是,这是一种示例分配方案,实际情况会受多个因素影响,如可用的 Broker 数量、负载情况、网络拓扑等。

你可以使用 Kafka 提供的工具或管理API来执行这种分配策略。请确保在进行任何更改之前进行全面的测试,并备份关键数据以防意外情况发生。文章来源地址https://www.toymoban.com/news/detail-516035.html

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

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

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

相关文章

  • 【大数据工具】Kafka伪分布式、分布式安装和Kafka-manager工具安装与使用

    Kafka 安装包下载地址:https://archive.apache.org/dist/kafka/ 1. Kafka 伪分布式安装 1. 上传并解压 Kafka 安装包 使用 FileZilla 或其他文件传输工具上传 Kafka 安装包: kafka_2.11-0.10.0.0.tgz 解压安装包 2. 编辑配置文件 3. 拷贝并修改配置文件 分别修改 server2.properties、server3.properties 4. 创建日志

    2024年02月14日
    浏览(45)
  • 分布式消息服务kafka

    什么是消息中间件? 消息中间件是分布式系统中重要的组件,本质就是一个具有接收消息、存储消息、分发消息的队列,应用程序通过读写队列消息来通信。 例如:在淘宝购物时,订单系统处理完订单后,把订单消息发送到消息中间件中,由消息中间件将订单消息分发到下

    2024年02月01日
    浏览(43)
  • 【分布式应用】kafka集群、Filebeat+Kafka+ELK搭建

    主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection 错误,引发雪崩效应。 我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队

    2024年02月16日
    浏览(45)
  • 【分布式技术】消息队列Kafka

    目录 一、Kafka概述 二、消息队列Kafka的好处 三、消息队列Kafka的两种模式 四、Kafka 1、Kafka 定义 2、Kafka 简介 3、Kafka 的特性 五、Kafka的系统架构 六、实操部署Kafka集群  步骤一:在每一个zookeeper节点上完成kafka部署 ​编辑 步骤二:传给其他节点 步骤三:启动3个节点 kafka管理

    2024年01月23日
    浏览(51)
  • 分布式 - 消息队列Kafka:Kafka 消费者的消费位移

    01. Kafka 分区位移 对于Kafka中的分区而言,它的每条消息都有唯一的offset,用来表示消息在分区中对应的位置。偏移量从0开始,每个新消息的偏移量比前一个消息的偏移量大1。 每条消息在分区中的位置信息由一个叫位移(Offset)的数据来表征。分区位移总是从 0 开始,假设一

    2024年02月12日
    浏览(46)
  • 分布式 - 消息队列Kafka:Kafka生产者架构和配置参数

    生产者发送消息流程参考图1: 先从创建一个ProducerRecord对象开始,其中需要包含目标主题和要发送的内容。另外,还可以指定键、分区、时间戳或标头。在发送ProducerRecord对象时,生产者需要先把键和值对象序列化成字节数组,这样才能在网络上传输。 接下来,如果没有显式

    2024年02月13日
    浏览(45)
  • 分布式 - 消息队列Kafka:Kafka生产者发送消息的方式

    不管是把Kafka作为消息队列、消息总线还是数据存储平台,总是需要一个可以往Kafka写入数据的生产者、一个可以从Kafka读取数据的消费者,或者一个兼具两种角色的应用程序。 Kafka 生产者是指使用 Apache Kafka 消息系统的应用程序,它们负责将消息发送到 Kafka 集群中的一个或多

    2024年02月13日
    浏览(40)
  • 分布式 - 消息队列Kafka:Kafka 消费者消息消费与参数配置

    01. 创建消费者 在读取消息之前,需要先创建一个KafkaConsumer对象。创建KafkaConsumer对象与创建KafkaProducer对象非常相似——把想要传给消费者的属性放在Properties对象里。 为简单起见,这里只提供4个必要的属性:bootstrap.servers、key.deserializer 和 value.deserializer。 ① bootstrap.servers 指

    2024年02月12日
    浏览(42)
  • 分布式 - 消息队列Kafka:Kafka 消费者消费位移的提交方式

    最简单的提交方式是让消费者自动提交偏移量,自动提交 offset 的相关参数: enable.auto.commit:是否开启自动提交 offset 功能,默认为 true; auto.commit.interval.ms:自动提交 offset 的时间间隔,默认为5秒; 如果 enable.auto.commit 被设置为true,那么每过5秒,消费者就会自动提交 poll() 返

    2024年02月12日
    浏览(43)
  • 分布式 - 消息队列Kafka:Kafka消费者和消费者组

    1. Kafka 消费者是什么? 消费者负责订阅Kafka中的主题,并且从订阅的主题上拉取消息。与其他一些消息中间件不同的是:在Kafka的消费理念中还有一层消费组的概念,每个消费者都有一个对应的消费组。当消息发布到主题后,只会被投递给订阅它的每个消费组中的一个消费者

    2024年02月13日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包