Использование Apache Flink и RxJava

В настоящее время я использую Apache flink и использую RxJava внутри него, мои вопросы: использование обоих из них уместно? потому что мои операции flink всегда являются функциями карты, и внутри них я интенсивно использую Rx, например, беру кортежи из flink и выполняю с ними асинхронные операции (переход в БД, запись в очередь и т. д.), Но я не закончил использование большинства методов, которые открываются для меня, и шаги моей программы возвращают json, когда Rxjava завершает обработку.

Можете ли вы сказать мне, правильное ли это использование flink или есть лучший способ сделать то, что мне нужно сделать. (например, используйте его, но передавайте наблюдаемые между шагами мигания или что-то в этом роде).

Спасибо.


person Cristian Barrientos Montoya    schedule 10.06.2016    source источник


Ответы (2)


Flink имеет мощные инструменты для обработки состояния (например, в окнах) [1,2], что часто позволяет избежать обращений к другим системам. Например, вместо обработки состояния во внешнем хранилище значений ключей вы можете использовать KeyValueState (с контрольной точкой) во Flink. Обработка состояния внутри Flink обычно более эффективна / быстрее, чем вызов внешних систем / баз данных.

Проблема с асинхронными вызовами в программах Flink может заключаться в том, что Flink работает быстрее, чем вызываемые системы, что приводит к увеличению числа открытых фьючерсов, что в конечном итоге приводит к проблемам с памятью. Итак, я думаю, обычно рекомендуется использовать синхронные вызовы внутри операторов Flink, чтобы замедлить Flink до скорости вызываемых систем, чтобы избежать утечек памяти.

Последний пункт недавно обсуждался в списке рассылки: http://mail-archives.apache.org/mod_mbox/flink-user/201606.mbox/%3CCALrNVjVw=iu7PB76VmKk+BD6rDXfSDwxpMrtzk8=L5d8xE-o8Qmail.gmail.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

person snntrable    schedule 12.06.2016

Текущий ответ по-прежнему относится к сохранению состояния во Flink, где это возможно, хотя, если вам все еще нужен доступ к внешним системам, есть исполнитель Асинхронные методы ввода-вывода. Операторы Async подключаются к жизненному циклу Flink и управляют количеством одновременных запросов Async, надеясь уменьшить проблемы с памятью.

person austin_ce    schedule 20.11.2019