(Извините, если это не тот форум. 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 тысяч клиентов или больше. FWIW, данные для клиента составляют ~ 64 байта.)
На ум пришел Redis, но это кажется не совсем правильным, потому что репликация, кажется, копирует весь экземпляр с мастера на реплику, и здесь у меня есть части данных, принадлежащих (или последних обновленных) каждому серверу.
Если Redis не подходит, какие у меня есть варианты?
ТИА.