(地理的に)最も近いサーバーにネットワーク要求をディスパッチする方法
-
22-07-2019 - |
質問
私はJavaのコーダーであり、ネットワークの仕組み(基本的なUDP / TCP接続以外)にあまり詳しくありません
米国、アジア、ラテンアメリカ、ヨーロッパのマシンでサーバーを実行しているとします。ユーザーがサービスをリクエストするとき、リクエストはユーザーに最も近いサーバーに送信されます。
1つのアドレスmycompany.comを持ち、何らかの方法でリクエストを適切なサーバーにルーティングすることは可能ですか?どうやら誰かがcnn.comにアクセスすると、彼らは近くのサーバーから写真、ビデオなどを受け取ります。率直に言って、私はそれがどのように機能するかわかりません。
ところで、私のサーバーはWebページではなく、株式市場データなどのその他のサービスを提供しています。
私はプログラマーなので、ソフトウェアでそれをどのように行うかを知りたいです。これは単なる好奇心に過ぎないため、商用の製品やサービスへのポインタはこの問題を理解する上であまり役に立ちません:)
解決
1つの簡単なアプローチは、UDP DNS要求に着信するIPアドレスの最初のバイト(クラスA)を調べ、それに基づいて適切な地理的に配置されたIPを配信することです。
他のヒント
別のアプローチはもう少し複雑です。ユーザーに地理的に最も近いサーバーを使用する代わりに、そのユーザーの待機時間が最も短いサーバーを使用できます。
待ち時間が短いと、転送速度が速くなりますが、地理的な場所よりも計算が簡単になります。
より詳細な外観については、CDNに関する次の記事を参照してください(テクノロジーセクションに注意してください):
これらは、大規模サイトがコンテンツをネット上で配信するために使用する種類のネットワークです(アカマイが一般的な例です)。ご覧のとおり、CDNが独自のプロトコルなどを使用していると、事態は非常に複雑になります。
更新:元の投稿の最後に、商用ソリューションに関する免責事項が表示されませんでした。興味があると思う人のためにこれを残しておきます。
-
http://ultradns.com/ をご覧ください。そのようなDNSサービスは、探していることを達成するために必要なものだけかもしれません。
Amazon.com、Forbes.com、Oracle、すべてがそれらを使用しています...
http://ultradns.com/solutions/traffic.html からの引用:
UltraDNSトラフィック管理ソリューションは、IT管理者が1つ以上の地理的な場所にあるコンテンツサーバーの負荷分散構成を定義できるツールのセットを提供します。 Traffic Management Solutionは、DNS要求への応答を動的に変更することにより、サーバーに向けられたトラフィックを管理します。負荷分散は、継続的な監視ベースでホストサーバーから取得した動的なメトリックに基づいて実行されます。 UltraDNSトラフィック管理ソリューションは単一のアプリケーションではありませんが、いくつかの既存のUltraDNSシステムの機能を組み合わせて、トラフィックを制御し、サイト障害を管理し、Webコンテンツシステムを最適化します。
1つのアプローチは、Jeffが述べたように、IPアドレスを使用することです: http://en.wikipedia。 org / wiki / Geolocation_software
私の経験では、これは最も近い比較的大きな都市(少なくとも米国では)に正確です。これを支援するいくつかのオープンデータベースがあります(wikiリンクを参照)。次に、この情報に基づいてイメージタグを生成し、リンクなどをダウンロードできます。
最も近いサーバーを見つけるために、いくつかの方法を考えられると確信しています。たとえば、得られる最良のリターンが大都市である場合、緯度/経度のリストでその都市を検索し、それに基づいて最も近いサーバーを計算できます。