

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

# 使用 Amazon Kinesis Producer Library (KPL) 開發生產者
<a name="developing-producers-with-kpl"></a>

Amazon Kinesis Data Streams 生產者是將使用者資料記錄放入 Kinesis 資料串流 (又稱為*資料擷取*) 的應用程式。Amazon Kinesis Producer Library (KPL) 可簡化生產者應用程式開發，讓開發人員達到 Kinesis 資料串流的高寫入輸送量。

您可以使用 Amazon CloudWatch 對 KPL 進行監控。如需詳細資訊，請參閱[使用 Amazon CloudWatch 監控 Kinesis Producer Library](monitoring-with-kpl.md)。

**Topics**
+ [檢閱 KPL 的角色](#developing-producers-with-kpl-role)
+ [了解使用 KPL 的優點](#developing-producers-with-kpl-advantage)
+ [了解何時不使用 KPL](#developing-producers-with-kpl-when)
+ [安裝 KPL](kinesis-kpl-dl-install.md)
+ [從 KPL 0.x 遷移至 KPL 1.x](kpl-migration-1x.md)
+ [轉換至 KPL 的 Amazon Trust Services (ATS) 憑證](kinesis-kpl-upgrades.md)
+ [KPL 支援的平台](kinesis-kpl-supported-plats.md)
+ [KPL 關鍵概念](kinesis-kpl-concepts.md)
+ [整合 KPL 與生產者程式碼](kinesis-kpl-integration.md)
+ [使用 KPL 寫入 Kinesis 資料串流](kinesis-kpl-writing.md)
+ [設定 Amazon Kinesis Producer Library](kinesis-kpl-config.md)
+ [實作消費者取消彙總](kinesis-kpl-consumer-deaggregation.md)
+ [搭配 Amazon Data Firehose 使用 KPL](kpl-with-firehose.md)
+ [使用 KPL 搭配 AWS Glue 結構描述登錄檔](kpl-with-schemaregistry.md)
+ [設定 KPL 代理組態](kpl-proxy-configuration.md)
+ [KPL 版本生命週期政策](kpl-version-lifecycle-policy.md)

**注意**  
建議您升級至最新 KPL 版本。KPL 會定期更新為更新的版本，其中包括最新的相依性和安全性修補程式、錯誤修正，以及向後相容的新功能。如需詳細資訊，請參閱 [https://github.com/awslabs/amazon-kinesis-producer/releases/](https://github.com/awslabs/amazon-kinesis-producer/releases/)。

## 檢閱 KPL 的角色
<a name="developing-producers-with-kpl-role"></a>

KPL 是一套具高度可設定性的易用程式庫，能協助您對 Kinesis 資料串流進行寫入。此程式庫在您的生產者應用程式的程式碼與 Kinesis Data Streams API 動作之間擔任媒介。KPL 將執行以下主要任務：
+ 利用可設定的自動重試機制對一個或多個 Kinesis 資料串流進行寫入
+ 收集記錄並於每次請求時使用 `PutRecords` 將多筆記錄寫入多個碎片
+ 彙整使用者記錄以增加承載大小並提高傳輸量
+ 與 [Kinesis Client Library](https://docs.aws.amazon.com/kinesis/latest/dev/developing-consumers-with-kcl.html) (KCL) 無縫整合以取消彙整取用者上的批次記錄
+ 代表您提交 Amazon CloudWatch 指標以提供關於生產者效能的資訊

請注意，KPL 與 [AWS SDK](https://aws.amazon.com/tools/) 所提供的 Kinesis Data Streams API 不同。Kinesis Data Streams API 可協助您管理 Kinesis Data Streams 的許多層面 (包括建立串流、重新分片、放入與取得記錄)，而 KPL 提供專用於擷取資料的抽象層。如需 Kinesis Data Streams API 的相關資訊，請參閱 [Amazon Kinesis API 參考](https://docs.aws.amazon.com/kinesis/latest/APIReference/)。

## 了解使用 KPL 的優點
<a name="developing-producers-with-kpl-advantage"></a>

以下清單舉出使用 KPL 開發 Kinesis Data Streams 生產者的一些主要優點。

KPL 可用於同步或非同步使用案例。建議您使用具有較高效能的非同步界面，除非有具體的原因需要使用同步操作。如需以上兩種使用案例的詳細資訊及範例程式碼，請參閱[使用 KPL 寫入 Kinesis 資料串流](kinesis-kpl-writing.md)。

 **效能優勢**   
KPL 可協助建置高效能的生產者。試想以下情況：您的 Amazon EC2 執行個體擔任代理，從數以百計或千計的低功率裝置收集 100 位元組的事件並將記錄寫入 Kinesis 資料串流。這些 EC2 執行個體每秒均須將成千個事件寫入您的資料串流。為達到所需的傳輸量，生產者必須實作複雜的邏輯 (如批次處理或多執行緒) 和重試邏輯並在消費者端取消彙整記錄。KPL 將為您執行所有這些任務。

 **消費者端易用性**   
對於使用 KCL 的 Java 取用者端開發人員來說，KPL 整合毫不費力。當 KCL 擷取含有多筆 KPL 使用者記錄的彙整 Kinesis Data Streams 記錄時，會自動叫用 KPL 先擷取個別的使用者記錄，然後再將其傳回給使用者。  
取用者端開發人員若未使用 KCL 而是直接使用 API `GetRecords` 操作，則可利用 KPL Java 程式庫擷取個別的使用者記錄後再將其傳回給使用者。

 **生產者監控**   
您可使用 Amazon CloudWatch 和 KPL 收集、監控及分析您的 Kinesis Data Streams 生產者。KPL 將代表您向 CloudWatch 發出輸送量指標、錯誤指標及其他指標，並可設定成進行串流層級、碎片層級或生產者層級監控。

 **非同步架構**   
由於 KPL 可能會在將記錄傳送到 Kinesis Data Streams 之前緩衝記錄，因此不會強制發起人應用程式封鎖並等待確認記錄已送達伺服器，然後再繼續執行時間。將記錄放入 KPL 的呼叫一律立即傳回，不會等待傳送記錄或接收伺服器的回應。反而，其將建立 `Future` 物件用以稍後接收傳送記錄至 Kinesis Data Streams 的結果。這與 AWS SDK 中的非同步用戶端的行為相同。

## 了解何時不使用 KPL
<a name="developing-producers-with-kpl-when"></a>

KPL 可能引發程式庫中額外的處理延遲，最高達到 `RecordMaxBufferedTime` (使用者可設定)。`RecordMaxBufferedTime` 的值愈大，壓縮效率以及效能愈高。無法容忍此額外延遲的應用程式可能需要直接使用 AWS SDK。如需搭配 Kinesis Data Streams 使用 AWS SDK 的詳細資訊，請參閱 [使用 Amazon Kinesis Data Streams API 搭配 開發生產者 適用於 Java 的 AWS SDK](developing-producers-with-sdk.md)。如需 `RecordMaxBufferedTime` 以及 KPL 可供使用者設定的其他各項屬性的詳細資訊，請參閱 [設定 Amazon Kinesis Producer Library](kinesis-kpl-config.md)。