У меня есть проект для работы, и мне нужно создать некоторые клиент-серверные приложения, где я могу отправлять сообщения и все что угодно, на Java. Одна из целей проекта - решить проблему отказа. Когда клиент подключается к серверу и сервер умирает, он автоматически подключается к серверу резервного копирования. То, что я хочу сделать, не требуется, но я хочу реализовать балансировщик нагрузки, чтобы несколько клиентов подключились к предпочтительному серверу.Балансировщик нагрузки, сокеты и java
Соединение между клиентом и сервером должно быть с сокетами TCP.
Это схема сетевой архитектуры:
клиент подключается к балансировки нагрузки (ОДП или TCP, я не знаю лучшим решением для данной ситуации).
балансировки нагрузки решает, какой сервер должен что клиент подключения (наиболее пустую)
клиент создает соединение TCP с указанным сервером
Мой вопрос:
Как должен работать балансировщик нагрузки, чтобы клиент мог подключиться к определенному серверу? Отправлять информацию о сервере (ip, порт) клиенту, а клиенты создают другой сокет с новым ip? (Синяя линия).
Или есть способ для балансировки нагрузки подключить эти две конечные точки (сервер № 1 < -> клиент № 1), без необходимости отправлять информацию клиенту?
PS: Я прошу вас, потому что кажется ненужным для каждого клиента, чтобы создать 2 гнезда, чтобы соединиться с сервером (первая розетка черная линия, вторая розетка синяя линия)
Это дизайнерское решение зависит от ваших требований. Наличие сообщений балансировочного маршрута и данных может сделать его узким местом и препятствовать масштабируемости. – Fildor
Я хочу, чтобы балансировщик нагрузки не действовал как прокси-сервер, поэтому каждый клиент напрямую подключается к определенному серверу. – andrepcg