2017-05-08 25 views
1

我正在尋找關於體系結構的一些高級指導。我有一個供應商向Kinesis管道(約1MM /天)寫「交易」。我需要關閉這些事務,一次一個,驗證數據,訪問其他SOAP或Rest服務以獲取更多信息,應用一些業務邏輯並將結果寫入S3。亞馬遜網絡服務:Spark Streaming或Lambda

已經提出的一種方法是使用永久運行的Spark作業,在Spark環境中提取數據並對其進行處理。這些好處被列舉爲可共享的緩存數據,SQL的可用性以及Spark的內部知識。

我的想法是有一系列的Lambda函數來處理數據。據我瞭解,我可以讓Lambda在Kinesis管道上查看新數據。我想通過一些小步驟(lambda)運行拉取的數據,每個步驟都在這個過程中進行一步。這似乎是一個理想的使用步驟功能。關於高速緩存,如果需要的話,我認爲可以使用ElastiCache上的Redis。

這可以使用Lambda和Step Functions(使用lambdas)的組合來完成嗎?如果可以做到,這是最好的方法嗎?我應該考慮哪些其他選擇?

回答

0

這可以使用Lambda和Step Functions的組合來實現。正如你所描述的那樣,lambda會監視流並啓動狀態機的新執行,並將事務數據作爲輸入傳遞給它。你可以在這裏看到更多關於kinesis的文檔:http://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html。 狀態機然後將數據從一個Lambda函數傳遞到數據將被處理並寫入S3的下一個數據。您需要聯繫AWS以增加默認的每秒2次StartExecution API限制,以支持1MM /天。

希望這會有所幫助!