假设我用一个分区配置了一个kafka代理
log.retention.bytes=80000
log.retention.hours=6
如果我尝试用producerapi向代理发送一条记录,而主题的日志在保留期之前就已满,会发生什么情况?
我的留言会被删除吗?或者Kafka会从旧信息中释放一些空间,并添加我的信息?
如何知道主题是否已满,日志是否已被删除,然后才能使用?
有没有一种方法可以在主题已满时监视或公开度量?
假设我用一个分区配置了一个kafka代理
log.retention.bytes=80000
log.retention.hours=6
如果我尝试用producerapi向代理发送一条记录,而主题的日志在保留期之前就已满,会发生什么情况?
我的留言会被删除吗?或者Kafka会从旧信息中释放一些空间,并添加我的信息?
如何知道主题是否已满,日志是否已被删除,然后才能使用?
有没有一种方法可以在主题已满时监视或公开度量?
2条答案
按热度按时间ghhaqwfi1#
这不完全是真的,一个主题永远不会满,至少在默认情况下是这样。
我说默认是因为像@mukesh说的
cleanup.policy
将在达到保留时间或大小限制时丢弃旧段,但默认情况下没有大小限制只有时间限制和处理该限制的属性retention.bytes
(默认设置为-1
).它只会让消息有时间限制,注意
retention.bytes
值是按分区设置的,因此要指定主题的限制,必须乘以该主题上的分区数。编辑:kafka导出了大量的度量(在jmx中),在这些度量中,您可以找到关于片段的全局度量(总数、每个主题的编号、大小、滚动片段的速率等等)。
nhhxz33t2#
如果我尝试用producerapi向代理发送一条记录,而主题的日志在保留期之前就已满,会发生什么情况?我的留言会被删除吗?或者Kafka会从旧信息中释放一些空间,并添加我的信息?
cleanup.policy
属性,默认情况下为delete
,表示“当达到保留时间或大小限制时,删除策略将丢弃旧段。”因此,如果您发送带有producer api的记录并且主题已满,它将丢弃旧的段。
如何知道主题是否已满,日志是否已被删除,然后才能使用?有没有一种方法可以在主题已满时监视或公开度量?
您可以使用以下脚本获取分区大小:
您需要开发一个脚本,该脚本将在脚本之上运行,以获取主题的当前大小,并定期将其发送给datadog。在datadog中,您可以创建小部件,一旦大小达到特定阈值,它将触发适当的操作(例如发送电子邮件警报)。