

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

# KPL 關鍵概念
<a name="kinesis-kpl-concepts"></a>

下列各節包含了解和受益於 Amazon Kinesis Producer Library (KPL) 的必要概念和術語。

**Topics**
+ [記錄](#kinesis-kpl-concepts-records)
+ [批次處理](#kinesis-kpl-concepts-batching)
+ [聚合](#kinesis-kpl-concepts-aggretation)
+ [收集](#kinesis-kpl-concepts-collection)

## 記錄
<a name="kinesis-kpl-concepts-records"></a>

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

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

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

## 批次處理
<a name="kinesis-kpl-concepts-batching"></a>

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

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

KPL 支援兩種批次處理方式：
+ *彙整* – 將多筆記錄存放於單筆 Kinesis Data Streams 記錄中。
+ *收集* – 使用 API `PutRecords` 操作，將多筆 Kinesis Data Streams 記錄傳送至 Kinesis 資料串流中的一個或多個碎片。

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

## 聚合
<a name="kinesis-kpl-concepts-aggretation"></a>

*彙整*是指將多筆記錄儲存於單筆 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)。

## 收集
<a name="kinesis-kpl-concepts-collection"></a>

*收集*是指批次處理多筆 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--|
```