Apache flink - как заставить исходные функции ждать состояния обратной засыпки - PullRequest
0 голосов
/ 13 февраля 2019

Мы используем flink для обогащения наших потоков данных с помощью подключенного потока.

Например: наш поток данных может быть поездками на такси, а наше обогащение - водителями такси.

Подумайте о такой топологии:

BroadcastStream<TaxiDrivers> taxiDrivers = env.addSource(enrichments)
                                              .broadcast(MAP_DESCRIPTOR)

env.addSource(taxiRidesSource())
   .connect(taxiDrivers)
   .process(enrichWithTaxiDrivers())
   .output(someOutput())

Если по какой-то причине нам следуетпотеряв состояние Flink, мы можем повторно опубликовать сообщения в источнике taxiDriver, чтобы восстановить состояние снова.

Так что же не так?

Проблема при обратной засыпке нашего состояния, напримерэто происходит, когда новые таксомоторы прибывают до того, как мы закончим заполнение состояния.

Мы думали о буферизации в обогащении в функции enrichWithTaxiDrivers() или расширении наших функций источника до pause, но ни один из них не похож начистое решение.

Что было бы хорошим способом заставить основной поток (поездки на такси) ждать или приостанавливать, пока обратная засыпка не будет завершена?

...