kafka-broker配置参数详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31617409/article/details/81836831

1. num.partitions
    含义:指明了新创建的主题将会有多少个分区数量。
    **如何选择分区数量?
    1):考虑主题吞吐量,100k or 1G?
    2):单个分区读取数据的最大吞吐量是多少,例如,每个分区一般都会有一个消费者,
        该消费者写入数据库的速度是每秒50M,那么以为这从一个分区读取数据的速度不
        需要超过50M/s
    3):与2类似的方法估算生产者的吞吐量,不过生产者的吞吐量一般大于消费者
    4):broker包含的分区数量,可用磁盘空间以及网络带宽等因素。
    5):如果消息是按照不同的键来写入分区的,那么为已有的主题增加分区是困难的,例如,
        消息的分区是对键进行hash取模运算,那么增加分区将会影响对这之前的数据的hash定位
    6):单个broker对分区是有限制的,分区越多,占用内存越多,完成领袖选举的过程也就越慢。
    example:
        如果每秒钟从主题上写入和读取1GB的数据,并且每个消费者每秒可以处理50MB的数据,
        那么至少需要20个分区,这样就可以同时让20个消费者读取这些分区数据,从而达到每秒钟1GB
        的吞吐量。

2. log.retention.ms
    含义:数据保留多长时间。默认使用log.retention.hours参数配置时间,默认是168小时,就是一周的时间。
        另外还有两个参数log.retention.minutes和log.retention.ms作用是一样的。推荐使用log.retention.ms

3. log.retention.bytes
    含义:通过保留字节数量判断消息是否过期。作用在每一个分区上,假设一个包含8分区的主题,
        并且log.retention.bytes设置为1GB,那么该主题将会保留8GB的数据,1GB * 8;
    
    **log.retention.ms & log.retention.bytes
        二者只要一个条件满足以后,消息数据将会被删除。也就是在log.retention.ms时间内,log.retention.bytes设置的值
        达到了,那么消息会被删除;消息大小没有达到log.retention.bytes设置的值,但是时间已经到了log.retention.ms
        设置的值,那么消息仍然会被删除。

4. log.segment.bytes
    含义:日志片段达到该属性设置的值,那么当前的日志片段将会被关闭,一个新的日志片段将会被打开。
        注意:一个日志片段被关闭以后,将会等待过期,这个参数设置越小,那么将会越频繁的关闭和分配
        新文件,从而降低了磁盘写入的整体效率。
    ** 如果消息量不大, 调整该参数变得很重要,一个主题每天只接受100MB消息,但是log.retention.bytes使用
        默认配置,那么也就是需要大约10天(1GB/100M)才会将该“日志片段” 填满,而“日志片段被关闭之前是不会过期的”,
        所以,如果log.retention.ms被设置为604 800 000(一周时间),那么日志片段真正过期时间是17天(10 + 7),
        也就是,填满日志片段时间 + 日志片段失效时间

5. log.segment.ms
    含义:该参数也是控制”日志片段“的参数,指定了多长时间日志片段将会被关闭。
        log.retention.ms & log.retention.bytes 这两个参数只要满足任意一个条件,
        那么日志片段将会被关闭。不过,默认情况下,log.segment.ms没有被设定值,
        所以只根据log.segment.bytes设置的日志片段大小来关闭日志片段。

6. message.max.bytes
    含义:限制单个消息的大小,默认值是:1 000 000,也就是大约1MB。当消息超过这个设定值,那么
        消息将不会被接受,还将收到broker返回的错误信息。该参数指的是压缩后的消息大小。
    
    

猜你喜欢

转载自blog.csdn.net/qq_31617409/article/details/81836831