2016-06-10 4 views
1

Ich benutze derzeit Apache flink und mit RxJava drin, meine Fragen ist: Beide zu verwenden ist angebracht? weil meine flink-Operationen immer Kartenfunktionen sind und innerhalb von ihnen verwende ich Rx intensiv, wie nimm die Tupel von flink und mache asynchrone Operationen mit ihnen (gehe zu DB, schreibe in eine Warteschlange usw.), aber ich bin nicht gelandet mit den meisten Methoden, die flink expose zu mir und meine Programme Schritte gibt json zurück, wenn Rxjava mit der Verarbeitung endet.Verwendung von Apache Flink und RxJava

Können Sie mir sagen, ob das eine korrekte Verwendung von flink ist oder ob es einen besseren Weg gibt zu tun, was ich tun muss. (Wie benutze es, aber pass die Observablen zwischen Flinkschritten oder so).

Danke.

Antwort

1

Flink verfügt über leistungsfähige Tools zur Handhabung von Zuständen (z. B. in Windows) [1,2], wodurch es oft möglich ist, Anrufe an andere Systeme zu vermeiden. Anstatt beispielsweise den Status in einem externen Schlüssel/Wert-Speicher zu behandeln, könnten Sie KeyPalueState in Flink verwenden. Die Handhabung des Status innerhalb von Flink ist normalerweise effizienter/schneller als der Aufruf externer Systeme/Datenbanken. Ein Problem mit asynchronen Aufrufen in Flink-Programmen kann sein, dass Flink schneller ist als die gerufenen Systeme, was zu einer steigenden Anzahl offener Futures führt, was letztlich zu Speicherproblemen führt. Also, ich denke, es wird allgemein vorgeschlagen, synchrone Aufrufe innerhalb von Flink-Operatoren zu verwenden, um Flink auf die Geschwindigkeit der angerufenen Systeme zu verlangsamen, um Speicherlecks zu vermeiden.

Der letzte Punkt wurde auf der Mailing-Liste vor kurzem diskutiert: 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