Список динамического обнаружения серверов

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

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

Дополнительные функции были бы полезны. Вещи как:

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

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


person jterrace    schedule 17.10.2011    source источник


Ответы (2)


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

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

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

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

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

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

person Gustav Bertram    schedule 09.11.2011

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

  • база данных (TableCols: auto-counter, 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: //, в Linux используйте wget * с crontab, в Windows используйте wget.exe с планировщиком задач.

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

person Alvin K.    schedule 05.11.2011