У меня есть две темы со следующими данными:
<ClientId, ClientConfiguration> configurationTopic;
<ClientId, User> userTopic;
ClientId - это просто строка UUID.
Тема конфигурации довольно мала и может быть сжата, потому что мы заботимся только о самой последней конфигурации для любого клиента.
UserTopic будет намного больше. Я не понимаю, как можно разделить его по clientId, потому что система никогда не масштабируется. Клиент с большим количеством пользователей будет иметь значительно худшую производительность, потому что все сообщения должны быть прочитаны одним потребителем.
То, что мне нужно, - это в любое время, когда мы получаем обновленного пользователя (созданного, обновленного, удаленного), и я хочу повторно обработать этого пользователя с использованием последней конфигурации клиента. Если ClientConfiguration обновляется, мне нужно повторно обработать эту конфигурацию для каждого пользователя. Я понимаю, что это может повторно обработать много данных, но это должно быть хорошо, если работа может быть распределена по нескольким потребителям.
Я пытался превратить ConfigurationTopic в глобальный KTable, который позволил бы мне разделить пользователей на темы, используя циклический подход. Хотя информации о том, как работают GlobalKTables, очень мало.
С здесь :
Данные, поступающие в GlobalKTable, не будут инициировать соединение.
Это правда? И если это правда, как я могу спроектировать это соединение, чтобы делать то, что мне нужно?