0

データを共有および/または交換する必要がある2つのサービスがあるとします。両方のインスタンスは互いに分離しており、他の部分がどこにあるかについては何も知りません。

データを共有および/または交換できるようにするには、相互に接続する必要があります。

IP アドレスを明示的に構成する必要なしに、どうやってお互いを見つけるのでしょうか? つまり、どのようにしてお互いを自動的に検出できるのでしょうか?

基本的に、私は2つのアイデアを持っています:

  • プル: 登録する中央サービスが必要です。次に、そのサービスにサービスのアドレスを要求すると、そのサービスはそれらのデータを返します。これは機能しますが、問題を次のレベルに移すだけであるという欠点があります。そのサービスの複数のインスタンスがあり、事前にお互いを知りたくない場合はどうなりますか?

  • プッシュ: 各サービスは独自のアドレスをブロードキャストして、他のサービスが認識できるようにします。各サービスはこれを時々繰り返します。欠点: これはインターネットではほとんど機能しません。

これをインテリジェントな方法で解決する方法について何か考えはありますか?

PS: そう言いたいのなら、中央の DNS サーバーを必要とせずに動的 IP を処理する方法を探しています。

4

2 に答える 2

1

"ブロードキャスト パケットは、ネットワーク上のどこにでも転送されるのではなく、ブロードキャスト ドメイン内のデバイスにのみ転送されます。 "

デバイスが異なるブロードキャスト ドメインにある場合、ブロードキャストは機能しません。

無料の動的 dns サーバーのいずれかを使用できない場合は、おそらく独自の中央サービスを実装する必要があります。

于 2014-01-24T12:44:43.057 に答える
1

通常の方法は、サービスが登録され、他のサービスを検索できるフォールト トレラント サーバーを用意することです。Curator フレームワークは、 zookeeperを介してそれを実装します。

自動検出が必要な場合は、サーバーが信頼できる方法で他にどのサーバーがあるかをサーバーが認識できるように、おそらくある種のゴシッププロトコルを実装する必要があります。ゴシップ プロトコルを正しく理解するのは難しいことを覚えておく必要があります (たとえば、過去の Amazon クラウドの失敗のいくつかは実装上の問題によるものです)。

于 2014-01-24T18:14:47.083 に答える