Неблокирующая операция в потоке Flink или Sparks vs Akka

Я изучаю и оцениваю Sparks и Flink, прежде чем выбрать одну из них для проекта, который у меня есть.

В своей оценке я придумал следующие простые задачи, которые я могу понять, как реализовать это в обоих фреймворках.

Скажем так

1- / У меня есть поток событий, которые представляют собой просто информацию о том, что какой-то элемент был изменен где-то в базе данных.

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

3- / применить некоторую трансформацию

4- / подключаемся к другому БД и пишем, что результаты.

Мой вопрос здесь следующий:

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

Я пришел из scala / Akka, где обычно мы избегаем блокирующих вызовов и используем future все способы для такого рода ситуаций. Поток Akka обеспечивает такой уровень детализации для потоковой обработки, например Интеграция потока с внешней службой. Это позволит избежать истощения нитей. Пока я жду операции io, поток можно использовать для чего-то еще.

Короче говоря, я не понимаю, как работать с фьючерсами в обоих фреймворках.

Так что я считаю, что каким-то образом это можно воспроизвести с помощью обоих фреймворков.

Может ли кто-нибудь объяснить, как это должно быть обработано во Flink или Sparks.

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


person MaatDeamon    schedule 25.05.2016    source источник
comment
Вопрос немного открытый. Единственное, что я могу предложить, - это реализовать прототип во всех технологиях и посмотреть, что работает лучше всего.   -  person Rüdiger Klaehn    schedule 26.05.2016


Ответы (1)


Начиная с версии Flink 1.2.0, теперь вы можете использовать API асинхронного ввода-вывода для достижения этой цели.

person bp2010    schedule 09.07.2018