zoukankan      html  css  js  c++  java
  • kafka topic制定规则

    kafka topic的制定,我们要考虑的问题有很多,比如生产环境中用几备份、partition数目多少合适、用几台机器支撑数据量,这些方面如何去考量?笔者根据实际的维护经验,写一些思考,希望大家指正。

    1.replicas数目

     

      可以从上图看到,备份越多,性能越低,因为kafka的写入只写入主分区,备份相当于消费者从主分区pull数据,这样势必会造成性能的损耗,故建议在生产环境中使用一主一备即可。

    2. partition数量

      (1)设置partition数量的时候我们需要注意:kafka的partition可以在创建时候指定,也可以alter(kafka-topic.sh里面的参数),但是,这个修改只能增加partition数目,并不能减少。这带来的直接影响就是我们在设置按照日志数量回滚数据的时候(即:设置log.retention.bytes控制日志清除),需要考虑大小,因为log.retention.bytes设置的是partition的日志大小。

      (2)partition的数目并不是越多越好,以下是笔者所做的性能测试。

        //todo

        可以看到,当partition数目是broker数目的整数倍的时候,它的TPS较高,非整数倍的时候,由于数据不均衡,所以TPS会有不同程度的影响。

    3.消费速度

      消费速度需要进行性能测试做相应评估,消费者/生产者加机器,都可以带来性能的线性增加。

      

             

    4.制定规则

       综上考虑,笔者在生产环境中的实践规则如下:

    • Partition数量=broker数量*2[这个作为预先设置,设置小一点,如果线上机器不够,增加机器的话,同时topic也会增加2,增量不要设置太大]
    • partition数量需要大于consumer数量
    • partition数量过多会给consumer带来额外的开销,建议consumer线程数(消费者个数)设置为partition数目,或略小于即可。
    • broker数量 =目标吞吐量/max(producer吞吐量,consumer吞吐量)

    5.reference

    如何确定Kafka的分区数、key和consumer线程数

    kafka benchmark

    kafka深度解析

    How to choose the number of topics/partitions in a Kafka cluster?

    关注我的技术公众号,第一时间获取新鲜技术文章:

  • 相关阅读:
    Canvas与Paint的0基础使用
    PHP经常使用功能
    java枚举在android项目应用
    POJ1833 & POJ3187 & POJ3785 next_permutation应用
    usb芯片调试经验
    Equals和==比較
    JSTL标准标签库具体解释
    零基础学python-3.3 标识符
    用react native 做的一个推酷client
    Linux异常关机后,Mysql启动出错ERROR 2002 (HY000)
  • 原文地址:https://www.cnblogs.com/acceml/p/5655081.html
Copyright © 2011-2022 走看看