2017-07-31 124 views
0

我需要使用aws kinesis流& lambda來實現某種流解決方案。我添加了第一個用於添加數據流的lambda。第一個Lambda本身每10秒調用一次,並添加100個數據請求(每個1kb)流。我運行了兩個調用lambda的腳本實例。aws kinesis流以較低的速率向lambda發送數據

第二個lambda使用上面的流作爲觸發器。在小容量數據/間隔第二個lambda上同時獲取數據。但是,在上述的數據中,數據的準確性會降低(在+1小時流播後,速度會降低10分鐘)。

我將兩個lambda結合起來並且能夠驗證第一個lambda邏輯的邏輯不會在將數據推送到流之前增加延遲。我還通過第二個lambda中的流包驗證了這一點,其中approxrivalTimestamp &當前時間顯然有增加的時間差距。

Kinesis本身沒有任何分析中顯示的問題/限制(我正在使用1個分片)。

他們的任何體系結構變化我需要使它更平滑,因爲我需要增加matrics至少10次,比如20個第一個帶有200個數據包的lambda的調用,超時1 - 10秒作爲後續基準。

我使用100批量大小。如果增加/減少它可以有優勢。

更新:當我更多地探索在線資源時,我得到了實現一些異步/前端lambda與kinesis誰實際上異步調用實際lambda的想法,所以lambda處理時間不會成爲瓶頸。然而這種方法也失敗了,因爲我有相同的延遲問題。我檢查執行時間,前面的lambda以1秒結束。但是我仍然在兩個lambda中的approxrivalTimestamp &當前時間之間有很大差距。

回答

0

對於一個碎片,將會有一個是第二個lambda的一個實例。

因此它適用於第二lambda。 lambda讀取從流中配置的記錄大小並對其進行處理。直到先前的記錄已成功處理,它纔會讀取其他記錄。

添加第二個分片,您將有2個lambda處理記錄。因此,我看到的擴展體系結構的方式是增加碎片數量,但要確保數據均勻分佈在碎片中。

+0

在閱讀aws文檔時,當數據大小超過限制並開始調節時,aws建議添加額外的分片。如果我缺少來自文檔的東西? –

+0

此外,我用另一種在線方式更新了我的問題(仍然失敗)。還有一件事我使用100批量大小。如果增加/減少它可以有優勢? –

相關問題