(Извините, если это не тот форум. StackOverflow тоже, похоже, не подходит. Я думал, что раньше на главной странице было описание того, какие вопросы были актуальны, но сегодня я не могу его найти.)
У меня есть несколько серверов, которые будут обрабатывать данные для набора клиентов. Я не знаю заранее, какие клиенты будут подключаться к каким серверам, и клиенты могут перемещаться между серверами. Мне нужен способ, чтобы серверы обменивались последней информацией о клиенте.
Допустим, у меня есть клиенты C1, C2, C3 и C4 и серверы S1 и S2. Серверы запускаются и знают, что клиенты — это C1..C4, но ничего о них не знают. C1 и C2 подключаются к S1, и S1 сохраняет некоторое состояние о них. Периодически S1 делится текущим состоянием C1 и C2 с S2. В какой-то момент C1 отключается от S1 и подключается к S2. S2 имеет немного устаревшее состояние для C1 и может в основном взять на себя обработку C1 без какого-либо прерывания.
В это время C3 и C4 подключаются к S2, и происходит примерно то же самое. S2 поддерживает состояние для C3 и C4 и периодически сообщает о них S1. Если C3 перемещается в S1, его состояние уже немного устарело.
Я рассматривал MQTT и возможность того, чтобы каждый сервер публиковал то, что ему известно, и подписывался на то, что ему может быть интересно знать, но объем данных, который я предполагаю, не очень подходит для варианта использования MQTT. (Может быть 256 тыс. клиентов или больше. Кстати, данные, специфичные для клиента, составляют около 64 байт.)
На ум приходит Redis, но, похоже, это не совсем то, потому что репликация, по-видимому, копирует весь экземпляр с главного сервера на реплику, а здесь у меня есть части данных, принадлежащие (или последние обновленные) каждому серверу.
Если Redis не подходит, какие у меня есть варианты?
ТИА.