Я исследую Flink уже больше недели. Мы потребляем события из Kafka и хотим, чтобы события принадлежали определенному идентификатору объекта, который необходимо обработать в порядке времени события. Пока мое исследование подсказывает мне, что я должен использовать keyby и timeWindows, правильно ли я понимаю?
Другой вопрос, когда один диспетчер задач выходит из строя, только эти события будут принадлежать этому диспетчеру задач, будут остановлены обработки, пока диспетчер задач не появится? Знает ли механизм контрольной точки о событиях, которые не обрабатываются, как он будет запрашивать Kafka об этих событиях?
Вопрос с вариантом использования ниже
В CallCenter агент будет принимать звонки и переходить в разные состояния. Для каждого действия агента, например входа в систему, ожидания, занятости и т. Д., Мы получаем событие агента этого действия как состояние через Kafka. Требование состоит в том, что мы должны обрабатывать события по порядку агента, мы не можем обрабатывать событие простоя агента перед событием входа в систему. Нам нужно обработать их, чтобы в то же время масштабировать.
В кластере Flink с параллельным процессом мы не должны завершать обработку информации агента в разных разделах / TaskSlots с плохим состоянием агента. Мой вопрос: keyBy agentId разделит поток на подпотоки и все время будет обрабатывать их в назначенном разделе, таким образом сохраняется порядок обработки событий.
Кроме того, еще один вопрос: если для раздела, обрабатывающего данные конкретного агента, отключается диспетчер исключений / задач, как Flink знает, что после восстановления нужно запрашивать только эти события агента.