kafka 有几种数据保留的策略?
在 Apache Kafka 中,有几种数据保留策略用于定义消息保存的时长和数据保留的规则。这些策略主要影响 Kafka 中的 Topic。
以下是 Kafka 中常见的数据保留策略:
-
保留时间策略(
retention.ms
):- 该策略定义了消息在 Topic 中的保留时长,超过指定的时间后将被删除。
- 使用配置项
log.retention.hours
或log.retention.ms
来设置保留的小时数或毫秒数。
-
保留大小策略(
retention.bytes
):- 该策略定义了消息在 Topic 中的保留大小,超过指定的大小后将被删除。
- 使用配置项
log.retention.bytes
来设置保留的字节数。
-
Compact 策略(
cleanup.policy
):cleanup.policy
用于定义是否启用 Log Compaction,以及使用何种策略进行 Compaction。- 设置为
"compact"
表示启用 Compaction,即保留最新的消息以及具有相同 key 的最新消息。
下面是一个简单的 Kafka 配置文件示例,展示了如何配置数据保留策略:
# Kafka 配置文件示例# 设置消息在 Topic 中的最大保留时间为 7 天
log.retention.hours=168# 设置消息在 Topic 中的最大保留大小为 1 GB
log.retention.bytes=1073741824# 启用 Log Compaction,并使用 Compact 策略
cleanup.policy=compact
在上述配置中,消息将在 Topic 中保留最多 7 天,超过这个时间的消息将被删除。同时,如果消息大小超过 1 GB,也将被删除。另外,启用了 Log Compaction 以确保消息中相同 key 的最新消息被保留。
请注意,这里只是一个简单的配置示例,实际配置可能会根据具体需求进行调整。