2016-06-10 79 views
3

我正在構建一個具有以下要求的應用程序,我剛剛開始使用flink。使用Apache Flink進行數據流傳輸

  • 提取數據到卡夫卡與說50個分區(呼入率 - 100,000封郵件/秒)從卡夫卡和處理每個數據
  • 讀取數據(做一些計算,與舊的數據等進行比較)實時
  • 將輸出存儲在卡桑德拉

我在尋找一個實時流媒體平臺,發現Flink非常適合實時和批量處理。

  • 您是否認爲flink最適合我的使用情況,還是應該使用Storm,Spark streaming或任何其他流媒體平臺?
  • 我是否需要在Google數據流中編寫數據管道來執行我在flink上的一系列步驟,或者是否有任何其他方式來執行實時流式傳輸的一系列步驟?
  • 說如果我的每次計算花費20毫秒,我怎麼能更好地設計它與flink並獲得更好的吞吐量。
  • 我可以使用Redis或Cassandra在flink中爲每個計算獲取一些數據嗎?
  • 我能夠在flink內部使用JVM內存中緩存嗎?
  • 我也可以基於某個時間窗口(例如5秒)的關鍵字聚合數據。例如,假設有100條消息進入,10條消息具有相同的密鑰,我可以將所有消息與同一個密鑰組合在一起並進行處理。
  • 有沒有關於使用flink的最佳實踐的教程?

謝謝,感謝您的幫助。

回答

1

根據您的任務描述,Apache Flink看起來很適合您的用例。

一般來說,Flink提供low latency and high throughput並有一個參數來調節這些參數。您可以讀取和寫入Redis或Cassandra的數據。但是,您也可以store state internally in Flink。 Flink也有sophisticated support for windows。您可以閱讀blog on the Flink website,查看documentation瞭解更多信息,或者按照此Flink training瞭解API。

+0

感謝您的回覆。我想澄清一件事。我應該使用谷歌數據流sdk創建一個管道並在flink上運行它嗎?或者flink本身有一些sdk,我可以在其中創建一個管道。我查看了數據流api,但並未完全弄清楚它是否具有與數據流類似的所有功能。謝謝你的幫助。 – Neoster

+0

Apache Beam(以前稱爲Google DataFlow API)runner是在Flink的DataStream API之上實現的。所以DataStream API(至少)和Beam API一樣具有表現力。 –