Go でネイティブに Pastry のバージョンを作成する作業を行っています。設計図より[PDF]:
アプリケーションは、各 Pastry ノードが特定の IP アドレスを持つノードとそれ自体の「距離」を決定できるようにする機能を提供すると想定されています。距離の値が小さいノードほど、より望ましいと見なされます。アプリケーションは、traceroute やインターネット サブネット マップなどのネットワーク サービスを使用して、近接メトリックの選択に応じてこの機能を実装し、オーバーヘッドを最小限に抑えるための適切なキャッシュおよび近似手法を実装することが期待されます。
Go からプログラムで 2 つの EC2 インスタンス間の「近接性」(つまり、ネットワーク遅延) を判断する最良の方法を見つけようとしています。残念ながら、私は使用できるさまざまなタイプのリクエストを区別できるほど、低レベルのネットワークに精通していません。Googling では、Go からのレイテンシを測定するための提案は見つかりませんでした。また、一般的なレイテンシ テクニックは常に Linux バイナリのように見えますが、依存関係を減らすという名目で回避したいと考えています。何か助けはありますか?
また、レイテンシーは 2 つの EC2 インスタンス間で 1 ミリ秒のスケールである必要があることに注意してください。EC2 での実装を使用する予定ですが、どこでも使用できる可能性があります。2 つのノードのネットワークの近接性を確保するために労力を費やす必要があるほど、一般的に遅延がひどいですか? ほとんどの Pastry リクエストは、クラスター内のサーバー数の 16 を底とする対数で処理できることに注意してください (したがって、10,000 サーバーの場合、検索対象のキーを見つけるのに平均で約 3 リクエストかかります)。たとえば、EC2 のアジアパシフィック リージョンから EC2 の米国東部リージョンへのレイテンシは、ノードを追加する際のレイテンシ チェックによって生じる複雑さとオーバーヘッドを正当化するのに十分ですか?