Синхронный ответ с Apache Flink - PullRequest
0 голосов
/ 13 июля 2020

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

Под синхронным ответом я имею в виду, например, наличие API конечная точка, в которую я отправляю свои данные, обработка выполняется Flink, и результат обработки возвращается (в какой форме) в теле ответа на вызов API, например 200

Я уже изучал RabbitMQ RP C, но мне не удалось его успешно реализовать. Я рад любому направлению или предложению. Спасибо, Джон

1 Ответ

1 голос
/ 18 июля 2020

Самое близкое, что приходит мне в голову, похоже, развертывает задание Flink с TcpSource, доступным в Apache Bahir. У вас может быть конечная точка HTTP, которая получит некоторые данные и вызовет Flink по указанному адресу, а затем обработает его и создаст ответ. Проблема в том, что в Bahir доступен только TcpSource, а это значит, что вам нужно будет создать большую часть кода (весь Sink) самостоятельно.

Могут быть и другие способы сделать это (например, пытаться назначить идентификатор каждому сообщению, а затем ждать сообщения с этим идентификатором, которое поступит в Kafka и отправить его в качестве ответа, но это кажется проблемным и подверженным ошибкам) ​​

Другой способ: чтобы сделать ответ асинхронным (я знаю, что в вопросе конкретно упоминается ответ syn c, но упоминается это только для полноты)

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

...