У меня есть два потока. Один - поток событий, другой - поток обновления базы данных. Я хочу обогатить поток событий информацией, созданной из потока обновления БД.Погрузочно-разгрузочный процесс
Поток событий очень объемный и разбит на 5 полей. Это дает мне хорошее распространение. Поток БД намного реже и разделен двумя полями. В настоящее время я соединяю два потока с использованием двух общих полей и используя flapMap для обогащения первого потока. Оператор flatMap использует ValueState для поддержания состояния, которое автоматически подкрепляется двумя общими полями.
Я нахожу, что нагрузка в потоке событий имеет тенденцию искажаться в терминах двух общих полей. Это приводит к неравномерному балансировке нагрузки по экземплярам flapMap, а несколько экземпляров в 10 раз больше загружены, чем другие.
Я думаю, что лучше всего будет транслировать поток обновлений БД во всех экземплярах flatMap и просто перенаправить поток событий на основе существующей схемы секционирования. Однако проблема в том, что, поскольку для оператора подключения нет ключей, я не могу использовать ValueState.
Помимо реализации пользовательской логики для ручного извлечения ключа и обновления поддерживайте состояние, есть ли что-нибудь еще, что я могу сделать?
Есть ли более простой подход, который мне не хватает?