1

我需要處理高峯期每秒100秒的記錄。這些記錄是簡單的JSON體,它們應該被收集,然後處理/轉換成數據庫。Kinesis是我需要的正確工具嗎? (和其他各種問題)

的幾個問題...

1)是該室壁運動吧?或者SQS更適合?

2)當使用kinesis時,我想使用如下所示的python示例:https://aws.amazon.com/blogs/big-data/snakes-in-the-stream-feeding-and-eating-amazon-kinesis-streams-with-python/還是應該在KCL中實現我的生產者和消費者?有什麼不同?

3)Kinesis是否向消費者的管理提供任何東西,或者我只是在EC2實例上運行它們並自己管理它們?

4)什麼是訪問數據的正確模式 - 我不能錯過任何記錄,所以我假設我會從「TRIM_HORIZON」而不是「最新」獲取記錄。如果是這樣,我如何管理重複?換句話說,我的消費者如何從流中獲取記錄並處理消費者的關注等,並且始終知道他們正在獲取所有記錄?

謝謝!

+0

你打算做什麼樣的處理?你關心維護他們訂單的消息嗎? –

+0

嗨 - 消息不必維護訂單,消費者所做的唯一處理就是轉換爲不同的格式並轉發到其他服務。 –

回答

2
  1. Kinesis對流式傳輸數據或當您需要在消息之間進行嚴格排序時更有用。另一方面,您的使用案例似乎更像是兩項服務之間的緩衝解決方案。所以,我寧願SQS去Kinesis。 SQS也更便宜,更簡單,並且應該輕鬆處理您所需的規模。
  2. 您共享的示例使用Kinesis的低級API。但是,您應該更願意分別使用KPLKCL來實現您的生產者和消費者,因爲它們提供更易於使用的更高級別的構造。
  3. 您可以在EC2或上運行Kinesis和SQS生產者和消費者。在後者中,AWS會照顧您的硬件管理。
  4. 是的,你應該去TRIM_HORIZON。如果您的數據中存在重複,則您的消費者應該通過自己做一些簿記來照顧他們。至於消費者下降等,KCL優雅地處理這些案件。
+0

感謝您的回答。問題:1)我將重新考慮SQS作爲解決方案。謝謝。 2)KPL和KCL看起來更「複雜」,以比SDK API更少的文檔運行。此外,它看起來像只在Redhat/RHEL上運行。 (至少從我的快速閱讀安裝文檔)。 3)明白了,這是有道理的,還需要閱讀。 4)因此,如果我使用TRIM_HORIZON,消費者將在流的開始處開始閱讀......如何標記我在流中的位置。那是我會跟蹤的shard_iterator還是別的? –

+0

我不知道您是否使用低級API。但KCL會自動在DynamoDB中寫入檢查點,因此您不必自行擔心 –

相關問題