2013-10-13 3 views
1

Для назначения в колледж я создаю сетевое приложение Java, используя сокеты *. Моя архитектура должна быть масштабируемой, поэтому я хотел бы иметь несколько серверов для общения с моими клиентами.Использование нескольких серверов в Java

Вопрос в том, как клиент может узнать обо всех доступных серверах? Моя первая мысль заключается в том, чтобы клиенты сохраняли (жестко запрограммированный) список IP-адресов сервера и выбирали из списка. Что является лучшей практикой в ​​этом случае?

* Мы не можем использовать RMI.

+0

Похоже, вы хотите реализовать свой собственный [кластер] (http://en.wikipedia.org/wiki/Cluster_ (вычисления)). –

+0

Возможно, вы ищете JNDI и RMI. Читайте JNDI http://stackoverflow.com/questions/1350816/what-is-the-purpose-of-jndi – UDPLover

ответ

0

Давайте предположим, что затраты вашего сетевого провайдера стали слишком высокими, и вы решили переключиться. Бум идет по вашим IP-адресам. Я бы предложил разумное использование DNS, особенно цикличного DNS.

Использование центрального трекера может показаться хорошей идеей, но оно само должно быть масштабируемым, сродни Google App Engine, или оно станет chokepoint.

Просто создайте несколько A-записей для заданного имени, и ваши клиенты будут случайным образом выбирать их при разрешении.

Если вы не можете использовать DNS, список IP может оказаться полезным - с одним изменением. Все серверы распространяют обновленные копии списка, и если сервер не может быть достигнут, другой проверяется до соединения (и список также обновляется). Когда список отличается от существующего, список клиентов обновляется.

0

Вы можете использовать материалы RMI, создавая первичный и вторичный серверы.

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

Что касается клиента, который знает сервер, клиент может запросить серверы, использующие RMI для идентификации.

+0

К сожалению, я должен был упомянуть, что мы не можем использовать RMI для этого проекта , это отчасти упражнение в программировании сокетов. –

 Смежные вопросы

  • Нет связанных вопросов^_^