本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Kinesis Data Streams 生產者是將使用者資料記錄放入 Kinesis 資料串流 (又稱為資料擷取) 的應用程式。Kinesis Producer Library (KPL) 簡化了生產者應用程式開發,讓開發人員能夠實現 Kinesis 資料串流的高寫入輸送量。
您可以使用 Amazon CloudWatch 對 KPL 進行監控。如需詳細資訊,請參閱使用 Amazon CloudWatch 監控 Kinesis Producer Library。
主題
注意
建議您升級至最新 KPL 版本。KPL 會定期更新為更新的版本,其中包括最新的相依性和安全性修補程式、錯誤修正,以及向後相容的新功能。如需詳細資訊,請參閱 https://github.com/awslabs/amazon-kinesis-producer/releases/
檢閱 KPL 的角色
KPL 是一套具高度可設定性的易用程式庫,能協助您對 Kinesis 資料串流進行寫入。此程式庫在您的生產者應用程式的程式碼與 Kinesis Data Streams API 動作之間擔任媒介。KPL 將執行以下主要任務:
-
利用可設定的自動重試機制對一個或多個 Kinesis 資料串流進行寫入
-
收集記錄並於每次請求時使用
PutRecords
將多筆記錄寫入多個碎片 -
彙整使用者記錄以增加承載大小並提高傳輸量
-
與 Kinesis Client Library (KCL) 無縫整合以取消彙整取用者上的批次記錄
-
代表您提交 Amazon CloudWatch 指標以提供關於生產者效能的資訊
請注意,KPL 與 AWS SDK
了解使用 KPL 的優點
以下清單舉出使用 KPL 開發 Kinesis Data Streams 生產者的一些主要優點。
KPL 可用於同步或非同步使用案例。建議您使用具有較高效能的非同步界面,除非有具體的原因需要使用同步操作。如需以上兩種使用案例的詳細資訊及範例程式碼,請參閱使用 KPL 寫入 Kinesis 資料串流。
- 效能優勢
-
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
KPL 可能引發程式庫中額外的處理延遲,最高達到 RecordMaxBufferedTime
(使用者可設定)。RecordMaxBufferedTime
的值愈大,壓縮效率以及效能愈高。無法容忍此額外延遲的應用程式可能需要直接使用 AWS SDK。如需搭配 Kinesis Data Streams 使用 AWS SDK 的詳細資訊,請參閱 使用 Amazon Kinesis Data Streams API 搭配 開發生產者 AWS SDK for Java。如需 RecordMaxBufferedTime
以及 KPL 可供使用者設定的其他各項屬性的詳細資訊,請參閱 設定 Kinesis Producer Library。