2017-06-15 88 views
0

我有一個在AWS中運行的數據遷移作業,它將數據發送到Kinesis Stream和一個Lambda函數,充當將數據寫入DynamoDB的消費者(我將kinesis設置爲觸發器爲lambda)。AWS Kinesis Stream返回「ProvisionedThroughputExceededException」時數據是否丟失?

我的問題是當該室壁運動流開始打:

寫吞吐量突破(計數/請求) - 平均 - WriteProvisionedThroughputExceeded

,我看到上圖上尖峯200個或300計數即使lambda消費者從不停止讀取數據並將數據寫入DDB表,但是一旦遷移過程完成(沒有更多信息要發送給kinesis),我注意到有一些缺失的記錄(lambda消費者從未失敗),我的問題是:AWS Kinesis數據丟失Stream返回「ProvisionedThroughputExceededException」?這些數據將永遠不會發送給kinesis消費者嗎?

回答

3

你是對的,受限制的呼叫不被Kinesis處理;數據will be dropped by Kinesis

如果PutRecord請求不能因爲參與請求碎片供應不足吞吐量的處理,PutRecord拋出ProvisionedThroughputExceededException。

爲了避免這種情況,you should retry your PutRecord(s)呼叫使用(優選地)指數退避:

經過調節請求應該自動在短暫的延遲之後,使用指數退避策略被重試。