kafka 消息保留机制

  • log.retention.ms 消息时间
    Kafka通常根据时间决定数据可以保留多久。默认使用log.retention.hours参数配置时间,默认值是168小时,也就是一周。除此之外,还有其他两个参数,log.retention.minuteslog.retention.ms,这三个参数作用是一样的,都是决定消息多久以会被删除,不过还是推荐使用log.retention.ms,如果指定了不止一个参数,Kafka会优先使用最小值的那个参数。
  • log.retention.bytes 消息大小
    通过保留的消息字节数来判断小是否过期,它的值通过参数log.retention.bytes来指定,作用在每一个分区上,也就是说如果一个包含8个分区的主题,并且log.retention.bytes被设置为1GB,那么这个主题最多可以保留8GB的数据,所以,当主题的分区个数增加时,整个主题可以保留的数据也随之增加。

如果同时指定了两个参数没只要任意一个参数得到满足,消息就会被删除。例如,假设log.retention.ms为86400000(也就是一天),log.retention.bytes的值设置为1GB,如果消息字节总数在不到一天的时间就超过了1GB,那么堆出来的部分就会被删除,相反,如果消息字节总数小与1GB,那么一天之后这些消息也会被删除,尽管分区的数据总量小于1GB

  • log.segment.bytes 日志片段大小
    当消息来到broker是,它们就会被追加到分区的当前日志片段上,当日志片段大小到达log.segment.bytes指定的上限(默认是1GB)时,当前日志片段就会被关闭,一个新的日志片段就会被打开。如果一个日志之片段被关闭,就开始等待过期时间。这个参数的值越小们就会越频繁的关闭和分配新文件,从而降低了磁盘写入的整体效率。
  • log.segment.ms 日志片段时间
    指定了多长时间之后日志片段会被关闭,就像log.retention.byteslog.retention.ms这两个参数一样。log.segment.byteslog.segment.ms这两个参数之间也不存在互斥问题。日志片段会在大小或时间达到上限时被关闭,就看哪个条件晓得到满足。默认情况下log.segment.ms没有设定值,所以只根据大小来关闭日志片段
  • message.max.bytes 单条消息大小
  • broker通过设置message.max.bytes参数来限制单个消息的大小,默认值时1000000,也就是1MB。如果生产者尝试发送的消息超过1MB,不仅消息不会被接受,还会受到broker返回的错误信息。跟其他与字节相关的配置参数一样,该参数指的是压缩后的消息大小,也就是说,只要压缩后的消息小于message.max.bytes指定的值,消息的实际大小可以远大于这个值。

你可能感兴趣的:(kafka,java,分布式)