同じ役割の複数の役割インスタンスは、それらすべてのインスタンスがリッスンする特定のエンドポイントの VIP (仮想 IP) アドレスを から取得することによって、互いに通信できますRoleEnvironment
か? RoleEnvironment
その場合、返される VIP は呼び出し元 (メソッドの) インスタンス自体に負荷分散できます。
質問する
2085 次
1 に答える
6
ロール インスタンスは、内部エンドポイントを介して相互に通信できます。入力エンドポイントとは異なり、ロールに関係なく、デプロイ内の他のインスタンスにのみ表示されます。
内部エンドポイントを介して直接通信すると、外部 VIP ロード バランサーが完全にバイパスされます。そのため、接続しようとしているワーカー ロール インスタンスが 3 つある場合 (REST サービスが存在する場所など)、3 つのインスタンス間で独自の負荷分散を行う必要があります。
内部エンドポイントの操作は、入力エンドポイントと同じくらい簡単です。最初に 1 つを設定します。
次に、ランダムに 1 つ取得します。たとえば、(最も大雑把な意味で)次のようになります。
var random = new Random();
var role = RoleEnvironment.Roles["WorkerRole1"];
var instanceNumber = random.Next() % role.Instances.Count;
var ipendpoint = role.Instances[instanceNumber].InstanceEndpoints["myservice"].IPEndpoint;
var address = ipendpoint.Address;
var port = ipendpoint.Port;
注: どのロールからでも、任意のロールの入力エンドポイントにアクセスできます。その時点で、外部からの他のトラフィックと同じように負荷分散されます。また、セキュリティについても心配する必要があります (内部エンドポイントでは心配ありません)。
于 2013-05-01T20:00:00.460 に答える