本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
KPL 重要概念
下列各節包含了解 Kinesis Producer Library () 並從中獲益所需的概念和術語KPL。
記錄
在本指南中,我們會區分KPL使用者記錄 和 Kinesis Data Streams 記錄 。當我們使用沒有限定詞的術語記錄時,我們會參考KPL使用者記錄 。當我們參照 Kinesis Data Streams 記錄時,我們明確地說 Kinesis Data Streams 記錄。
KPL 使用者記錄是對使用者具有特定意義的資料 Blob。範例包括代表網站上 UI JSON 事件的 Blob,或從 Web 伺服器輸入日誌。
Kinesis Data Streams 記錄是 Kinesis Data Streams 服務 定義的Record
資料結構執行個體API。此種記錄包含分割區索引鍵、序號和資料 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 記錄,並在單一HTTP請求中透過呼叫API操作 傳送它們PutRecords
,而不是在自己的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--|