KPL 主要概念 - Amazon Kinesis Data Streams

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

KPL 主要概念

以下各節包含了解 Kinesis Producer Library (KPL) 並從中獲益所需的概念和術語。

記錄

本指南區分了 KPL 使用者記錄Kinesis Data Streams 記錄。當使用不帶限定詞的記錄一詞時,指的就是 KPL 使用者記錄。當我們參照 Kinesis Data Streams 記錄時,我們明確地說 Kinesis Data Streams 記錄

KPL 使用者記錄是對使用者具有特別含意的資料 Blob。例子包括代表網站 UI 事件或 web 伺服器某個日誌項目的 JSON Blob。

Kinesis Data Streams 記錄是 Kinesis 資料串流服務 API 所定義之 Record 資料結構的執行個體。此種記錄包含分割區索引鍵、序號和資料 Blob。

批次處理

批次處理是指對多個項目執行單一動作,而不是對每個單獨項目重複執行該動作。

就此處而言,「項目」是一筆記錄,「動作」則是將記錄傳送至 Kinesis Data Streams。在非批次處理的情況下,您會將每筆記錄放入單獨的 Kinesis Data Streams 記錄中,然後發出一次 HTTP 請求將其傳送至 Kinesis Data Streams。透過批次處理,每次 HTTP 請求可攜帶多筆記錄而不只有一筆。

KPL 支援兩種批次處理方式:

  • 彙整 – 將多筆記錄存放於單筆 Kinesis Data Streams 記錄中。

  • 收集 – 使用 API PutRecords 操作,將多筆 Kinesis Data Streams 記錄傳送至 Kinesis 資料串流中的一個或多個碎片。

KPL 兩種批次處理方式的設計彼此共存並可單獨啟用或停用。預設情況下,兩者將一併啟用。

聚合

彙整是指將多筆記錄儲存於單筆 Kinesis Data Streams 記錄中。彙整使得客戶能夠增加每次 API 呼叫所傳送的記錄筆數,進而有效地提高生產者傳輸量。

Kinesis Data Streams 碎片支援每秒多達 1,000 筆 Kinesis Data Streams 記錄或 1 MB 輸送量。Kinesis Data Streams 每秒記錄筆數限制綁定記錄在 1 KB 以內的客戶。記錄彙整使得客戶能夠將多筆記錄合併為單筆 Kinesis Data Streams 記錄。客戶可藉此提高其每一碎片傳輸量。

試想以下情況:區域 us-east-1 內的某個碎片目前正以每秒 1,000 筆記錄的固定速率執行,其中每筆記錄的大小為 512 位元組。透過 KPL 彙整,您可以將這 1,000 筆記錄壓縮成只有 10 筆 Kinesis Data Streams 記錄,進而使 RPS 降至 10 (每次 50 KB)。

收集

收集是指批次處理多筆 Kinesis Data Streams 記錄並透過對 API 操作 PutRecords​ 呼叫的單次 HTTP 請求來傳送記錄,而非以各自的 HTTP 請求來傳送每個 ​Kinesis Data Streams 記錄。

這與不使用收集相比可提高傳輸量,因為其減少了發出多次個別 HTTP 請求的額外負擔。事實上,PutRecords 本身即是專為達到此目的而設計。

收集與彙整不同,其將處理 Kinesis Data Streams 記錄群組。正在收集的 Kinesis Data Streams 記錄仍可包含來自使用者的多筆記錄。兩者間的關係可用以下視覺化方式表達:

record 0 --| record 1 | [ Aggregation ] ... |--> Amazon Kinesis record 0 --| ... | | record A --| | | ... ... | | record K --| | record L | | [ Collection ] ... |--> Amazon Kinesis record C --|--> PutRecords Request ... | | record S --| | | ... ... | | record AA--| | record BB | | ... |--> Amazon Kinesis record M --| ... | record ZZ--|