2016-06-10 3 views
1

나는 현재 아파치 플 링크를 사용하고 있으며 그 안에 RxJava를 사용하고있다. 나의 질문은 : 두 가지 모두를 사용하는 것이 적절한가? 내 플랭크 작업은 항상지도 함수이므로 내부에서 플럭스의 튜플을 가져 와서 비동기 작업을 수행하는 것처럼 (DB로 이동하고 대기열에 쓰기 등) Rx를 집중적으로 사용하므로 내부적으로 끝나지 않습니다. Rxjava가 처리를 끝내면 나에게 플랭크되는 대부분의 메소드를 사용하여 내 프로그램 단계가 json을 반환합니다.아파치 플 링크와 RxJava의 사용

그것이 올바른 사용법인지 또는 더 나은 방법이 필요한지를 말해 줄 수 있습니까? (그것을 사용하지만 같은 플랭크 단계 또는 그 사이에 관측 값을 전달하는 것).

감사합니다.

답변

1

Flink는 상태 (예 : Windows) [1,2]를 처리 할 수있는 강력한 도구를 가지고있어 다른 시스템으로의 호출을 피할 수 있습니다. 예를 들어, 외부 키 - 값 저장소에서 상태를 처리하는 대신 Flink에서 (Checkpointed) 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