使用 Amazon Kinesis Producer Library (KPL) 開發生產者 - Amazon Kinesis Data Streams

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

使用 Amazon Kinesis Producer Library (KPL) 開發生產者

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

您可以使用 Amazon KPL 監控 CloudWatch。如需詳細資訊,請參閱使用 Amazon 監控 Kinesis 生產者程式庫 CloudWatch

注意

建議您升級至KPL最新版本。 KPL 會定期更新為較新的版本,其中包含最新的相依性和安全性修補程式、錯誤修正和回溯相容的新功能。如需詳細資訊,請參閱 https://github.com/awslabs/amazon-kinesis-producer/releases/

檢閱 的角色 KPL

KPL 是高度可設定的程式庫 easy-to-use,可協助您寫入 Kinesis 資料串流。它可做為生產者應用程式程式碼與 Kinesis Data Streams API動作之間的媒介。KPL 將執行以下主要任務:

  • 利用可設定的自動重試機制對一個或多個 Kinesis 資料串流進行寫入

  • 收集記錄並於每次請求時使用 PutRecords 將多筆記錄寫入多個碎片

  • 彙整使用者記錄以增加承載大小並提高傳輸量

  • Kinesis Client Library (KCL) 無縫整合,以取消彙總消費者上的批次記錄

  • 代表您提交 Amazon CloudWatch 指標,以提供生產者效能的可見性

請注意, KPL 與 中API提供的 Kinesis Data Streams 不同AWS SDKs。Kinesis Data Streams API可協助您管理 Kinesis Data Streams 的許多層面 (包括建立串流、重新分片,以及放置和取得記錄),同時 KPL提供專門用於擷取資料的抽象層。如需 Kinesis Data Streams 的相關資訊API,請參閱 Amazon Kinesis API參考

了解使用 的優點 KPL

下列清單代表使用 KPL開發 Kinesis Data Streams 生產者的一些主要優點。

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

效能優勢

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

消費者端易用性

對於使用 KCL 的 Java 消費者端開發人員來說,KPL 整合毫不費力。當 KCL擷取包含多個KPL使用者記錄的彙總 Kinesis Data Streams 記錄時,會自動叫用 KPL來擷取個別使用者記錄,然後再傳回給使用者。

對於不使用 KCL但GetRecords直接使用 API操作的消費者端開發人員,KPLJava 程式庫可在將個別使用者記錄傳回給使用者之前擷取這些記錄。

生產者監控

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

非同步架構

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

了解何時不使用 KPL

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