• Kafka分区管理


    1.优先副本的选举

    优先副本是为了解决负载失衡的情况,是指在AR集合列表中的第一个副本,比如分区0的AR集合列表为[1,2,0],那么分区0的优先副本即为1。理想情况下优先副本就是该分区的leader副本

    优先副本的选举是指通过一定的方式促使优先副本选举为leader副本,来促进集群的负载均衡,也称为分区平衡

    分区平衡并不意味着Kafka集群的负载均衡,因为还要考虑集群中的分区分配是否均衡。更进一步,每个分区的leader副本的负载也是各不相同的

    Kafka中提供了分区自动平衡的功能,默认参数为auto.leader.rebalance.enable,默认值为true,开启该功能后,Kafka控制器会启动一个定时任务,该任务会轮询所有broker节点,计算每个节点的分区不平衡率(非优先副本的leader个数/分区总数)是否超过leader.imbalance.per.broker.percentage的值,默认为10%,超过则自动执行优先副本的选举动作,执行周期由leader.imbalance.check.interval.seconds控制,默认300秒

    生产中不建议设置自动分区平衡,可能会引起客户端一定程度的阻塞,因为不能自主控制选举操作

    kafka-preferred-replica-election.sh脚本提供了对分区leader副本进行重新平衡的功能

    2.分区重分配

    kafka-reassign-partitions.sh脚本提供了执行分区重分配的功能

    首先创建一个包含主题清单的文件,其次根据主题清单和broker节点清单生成一份重分配方案,最后根据方案执行

    3.分区数的选择

    1.性能测试

    kafka-producer-perf-test.sh

    kafka-consumer-perf-test.sh

    2.分区数和吞吐量之间的关系

    首先创建分区数为1、20、50、100、200、500、1000的主题,副本因子都设置为1

    生产者测试:

    bin/kafka-producer-perf-test.sh --topic topic-1 --num-records 100000 --records-size 1024 --throughput -1 --producer-props bootstrap.servers=localhost:9092 acks=1
    

    发送速度分别为:

    31.10 MB/sec、98.25 MB/sec、104.33 MB/sec、106.38 MB/sec、105.46 MB/sec、93.36 MB/sec、84.92 MB/sec
    

    可以看出并不是分区数越多吞吐量越大,所以可以通过测试找出一个合理的临界值区间,消费者也可以同样验证

  • 相关阅读:
    java并发编程
    Linux C++服务器端进程SDK
    定时器SDK
    Redis3.0集群方案分析
    DES
    生成验证码
    MVC Ajax.BeginForm 提交上传图片
    EF LIKE 查询
    JS 60秒后重发送验证码
    EF 指定字段修改
  • 原文地址:https://www.cnblogs.com/jordan95225/p/13394614.html
Copyright © 2020-2023  润新知