Как часть обучения распределенных систем, я создаю приложение для чата. В настоящее время мой проект заключается в том, чтобы каждый сервер знал клиентов, к которым они подключены (это состояние, которое будет реплицироваться с использованием согласованного алгоритма).Хорошая практика для отправки backend-сервера ip: порт для клиента через балансировщик нагрузки
Существует балансировщик нагрузки, с которым клиент сначала подключается, а балансировщик нагрузки отвечает сервером, с которым клиент должен впоследствии разговаривать. Последующие команды от клиента напрямую переходят к экземпляру, которому он был назначен. Чтобы управлять государством, я думаю об использовании Raft algorithm
для достижения консенсуса.