Список обнаружения динамических серверов - PullRequest
4 голосов
/ 18 октября 2011

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

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

Расширенные функции будут полезны.Такие вещи, как:

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

Кто-нибудь знает о такой услуге?Я знаю, что существуют открытые протоколы и серверы для обнаружения службы локальной сети, но это будет служба WAN.

Ответы [ 2 ]

1 голос
/ 09 ноября 2011

Протоколы, которые я мог найти, которые имели какое-либо отношение к вашему намеченному приложению, следующие:

Документация XRDS является тупой, но вы можете выдвигать описания служб в формате XML. Спецификация типа сервиса может быть общей, но у меня болит голова от попыток расшифровать выступление комитета.

Протокол XMPP Service Discovery (часть протокола, ранее известного как Jabber) также выглядел многообещающе, но кажется, что даже если вы могли бы выдвинуть описание службы, они ожидают, что она будет одной из служб упомянутый в этом списке . Расширение его сделало бы его нестандартным.

Наконец-то я нашел то, что называется seap (протокол объявления SErvice) . Он старый, хрупкий, источник может быть приличным, он написан на C и Perl, это кладж, но, похоже, он делает то, что вы хотите, вроде как.

Кажется, что подача импульса сервисного объявления является настолько специфической и тривиальной проблемой для конкретного приложения, что почти никто не рассматривал решение общего случая.

Мой совет? Для вдохновения прочитайте упомянутые выше протоколы и источники (я бы начал с seap), а затем напишите, внедрите и опубликуйте общий (возможно, основанный на xml) протокол самостоятельно. Похоже, что все существующие либо специфичны для приложения, либо непостижимы, либо являются клуджем.

1 голос
/ 05 ноября 2011

В принципе, вы можете написать это самостоятельно, хотя я не знаю, есть ли у кого-то такой для общественности (я написал один более 10 лет назад, но для компании).

  • база данных (TableCols: автоматический счетчик, svr_name, svr_ip, check_in_time, any-other-data)
  • код для получения пульса (http://<you-app.com>?svr_name=XYZ&svr_ip=P.Q.R.S)
  • код для перечисления серверов в определенном check_in_time
  • код для периодической уборки (например, очистка старых записей)

Чтобы отправить контрольный сигнал, вам нужно только отправитьhttp: // call, в Linux используйте wget * с crontab, в windows используйте wget.exe с планировщиком задач.

Это зависит от приложения, поэтому, даже если вы написали один самостоятельно, другие не смогут использовать его без изменения исходного кода.

...