2014-01-24 9 views
0

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

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

Как они могут найти друг друга без необходимости прямого конфигурирования IP-адресов? Другими словами: как они могли автоматически обнаруживать друг друга?

В принципе, у меня есть две идеи:

  • Пулл: Вы должны иметь централизованную службу, где они регистрируются. Затем вы можете запросить эту услугу для адреса службы, и эта служба затем вернет эти данные. Хотя это работает, у него есть недостаток, что он переносит проблему только на следующий уровень: что делать, если у меня есть несколько экземпляров этой службы, и я не хочу, чтобы они знали друг друга заранее?

  • Push: каждая служба передает свой собственный адрес, чтобы другие службы узнали об этом. Каждая услуга время от времени повторяет это. Недостаток: это вряд ли работает в Интернете.

Любая идея, как я мог бы решить это разумным способом?

PS: Если вы хотите сказать это, я ищу способ обработки динамических IP-адресов без необходимости использования центрального DNS-сервера.

ответ

1

Обычный способ иметь некоторые отказоустойчивый сервер, где услуги зарегистрируйтесь и затем можете искать другие услуги - Curator framework реализует это более zookeeper.

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

1

«broadcast packets are not forwarded everywhere on a network, but only to devices within a broadcast domain.»

Если устройства находятся на разных широковещательных доменов затем вещания не будет работать.

Вы, вероятно, придется реализовать свой собственный центральный сервис, если вы не можете использовать одну из свободных динамических серверов DNS, например: Free

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