如何將日誌區段複製到 Amazon MSK 主題的分層儲存 - Amazon Managed Streaming for Apache Kafka

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如何將日誌區段複製到 Amazon MSK 主題的分層儲存

為新主題或現有主題啟用分層儲存後,Apache Kafka 會從主要儲存將關閉的日誌區段複製到分層儲存。

  • Apache Kafka 僅複製關閉的日誌區段。它會將日誌區段中的所有訊息複製到分層儲存。

  • 作用中區段不符合分層的資格。日誌區段大小 (segment.bytes) 或區段滾動時間 (segment.ms) 控制區段關閉的速率,以及 Apache Kafka 之後將它們複製到分層儲存的速率。

啟用分層儲存之主題的保留設定,有別於未啟用分層儲存之主題的設定。下列規則會控制在已啟用分層儲存之主題中訊息的保留:

  • 定義 Apache Kafka 中的保留有使用兩種設定:log.retention.ms (時間) 和 log.retention.bytes (大小)。這些設定會決定 Apache Kafka 在叢集中保留的資料總持續時間和大小。無論是否啟用了分層儲存模式,都可以在叢集層級設定這些組態。您可以使用主題組態覆寫主題層級的設定。

  • 啟用分層儲存後,您可以另外指定主要高效能儲存層儲存資料的時間長度。例如,如果主題的整體保留 (log.retention.ms) 設定為 7 天而本機保留 (local.retention.ms) 為 12 小時,則叢集主要儲存只會保留資料 12 小時。低成本的儲存層會保留資料滿 7 天。

  • 一般保留設定適用於完整日誌。這包含其分層儲存部分和主要儲存部分。

  • local.retention.ms 或 local.retention.bytes 設定會控制主要儲存中訊息的保留。Apache Kafka 會在關閉時 (根據 segment.bytes 或 segment.ms) 將關閉的日誌區段複製到分層儲存,不受本機保留設定影響。將區段複製到分層儲存之後,它們會保留在主要儲存中,直到達到 local.retention.ms 或 local.retention.bytes 閾值為止。此時,資料會從主要儲存體中刪除,但仍可在分層儲存體中使用。這可讓您將最新的資料保留在高效能主要儲存上,以便快速存取,同時從低成本分層儲存提供較舊的資料。

  • Apache Kafka 將日誌區段中的訊息複製到分層儲存後,它會根據 retention.ms 或 retention.bytes 設定,從叢集中移除訊息。

Amazon MSK 分層儲存案例範例

此案例說明啟用分層儲存後,在主要儲存中具有訊息之現有主題的行為方式。將 remote.storage.enable 設定為 true 後,可以在此主題上啟用分層儲存。在此範例中,retention.ms 設定為 5 天,local.retention.ms 設定為 2 天。以下是一個區段到期時的事件序列。

時間 T0 - 啟用分層儲存之前。

在您啟用此主題的分層儲存之前,有兩個日誌區段。其中一個區段在現有主題分區 0 中處於作用中狀態。

時間 T0 - 啟用分層儲存之前。
時間 T1 (< 2 天) - 已啟用分層儲存。將區段 0 複製到分層儲存。

啟用本主題的分層儲存後,Apache Kafka 會在關閉日誌區段 0 時立即將其複製到分層儲存。區段會根據 segment.bytes 或 segment.ms 設定關閉,而不是根據保留設定。Apache Kafka 也會在主要儲存體中保留副本。作用中區段 1 不符合複製到分層儲存的資格,因為它仍然作用中且尚未關閉。在此時間軸中,Amazon MSK 尚未針對區段 0 和區段 1 中的任何訊息套用任何保留設定。(local.retention.bytes/ms,https://retention.ms/bytes)

時間 T1 (< 2 天) - 已啟用分層儲存。將區段 0 複製到分層儲存。
時間 T2 - 本機保留生效。

2 天後,達到區段 0 的本機保留閾值。local.retention.ms 為 2 天的設定決定了這一點。區段 0 現在已從主要儲存體中刪除,但仍可在分層儲存體中使用。請注意,區段 0 已在時間 T1 關閉時複製到分層儲存,而不是在本機保留過期時複製到時間 T2。作用中區段 1 不符合刪除資格,也不符合複製到分層儲存的資格,因為它仍然處於作用中狀態。

時間 T2 - 本機保留生效。
時間 T3 - 整體保留生效。

5 天後,保留設定生效,Kafka 會從分層儲存中清除日誌區段 0 及關聯的訊息。區段 1 既不符合到期資格,也尚未符合複製到分層儲存的資格,因為區段 1 處於作用中狀態。區段 1 尚未關閉,因此不符合區段滾動的資格。

時間 T3 - 整體保留生效。