Клиент-серверная архитектура с несколькими серверами - PullRequest
1 голос
/ 09 февраля 2012

Я разрабатываю приложение, в котором у меня есть два многопоточных сервера (Server1 и Server2).Я сохраняю данные на этих двух серверах в карте.То, что я хочу сделать, это сделать баланс нагрузки между серверами (иметь одинаковый объем данных на обоих серверах).Поэтому у меня есть два вопроса:

1) Как я могу произвольно подключить клиента к серверу?Например, когда я запускаю клиент, этот клиент подключается, например, к Server1, а когда я запускаю другой клиент, он подключается к Server2.

2) Какой метод я могу использовать для балансировки нагрузки на серверах?

С уважением.

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

A Очень простое решение для распределения нагрузки между двумя серверами будет заключаться в использовании Round-robin DNS . Основная идея здесь заключается в том, что все запросы DNS (вашими клиентами) будут разрешаться не только на один IP-адрес, но и на список из них (в вашем случае два). Это, в свою очередь, означает, что они будут эффективно подключаться к любому серверу.

Простота (и обратная сторона) этого в том, что вероятность каждого возвращаемого IP-адреса равна , а не 100 / n (где n - это количество адресов в списке). Я просто хотел подчеркнуть, что это не обязательно будет 50% (в случае двух).

Теперь, если вы хотели true балансировка нагрузки, вы можете посмотреть на устройства балансировки нагрузки, которые вы бы поставили перед Server1 и Server2. Примерно так будет намного надежнее, но тогда ваши затраты / сложность также возрастут.

Для самого простого решения я бы посмотрел на циклический DNS.

0 голосов
/ 09 февраля 2012

Возможно, вы ищете ReverseProxy .Существует множество решений, в зависимости от вашего проекта одно может быть более подходящим, чем другое.

...