2016-06-10 89 views
1

我目前使用的是Apache flink並使用裏面的RxJava,我的問題是:使用它們兩個都合適嗎?因爲我的flink操作總是地圖函數,在它們的內部,我使用Rx密集地使用,比如從flink取得元組並且與它們進行異步操作(轉到數據庫,寫入隊列等),但是我沒有結束使用大多數flink暴露給我的方法,當Rxjava以處理結束時,我的程序步驟返回json。Apache Flink和RxJava的使用

你能告訴我,如果這是一個正確的使用flink或如果有一個更好的方式做我需要做的。 (就像使用它,但通過flink之間的步驟或類似的東西)。

謝謝。

回答

1

Flink擁有強大的工具來處理狀態(例如在Windows中)[1,2],這通常可以避免對其他系統的調用。例如,您可以使用Flink中的(檢查點)KeyValueState,而不是在外部鍵值存儲中處理狀態。處理Flink內部的狀態通常比調用外部系統/數據庫更有效率/更快。

Flink程序中異步調用的問題可能在於Flink比被調用的系統更快,這導致開放式期貨數量增加,最終導致內存問題。所以,我認爲,通常建議在Flink運營商內部使用同步呼叫來將Flink減慢到被叫系統的速度以避免內存泄漏。

最後一點已在郵件列表中最近討論:http://mail-archives.apache.org/mod_mbox/flink-user/201606.mbox/%[email protected].com%3E

[1] https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/streaming/windows.html [2] https://ci.apache.org/projects/flink/flink-docs-release-1.0/apis/streaming/state.html