0

Web ロールまたは worker ロールの内部エンドポイントは、どのように負荷分散を行うことができますか? ServiceDefinition.csdef でエンドポイントを として宣言し、次の<InternalEndpoint name="GeneratePDF" protocol="tcp" />ように公開するとします。

// define an internal endpoint for inter-role traffic
  RoleInstanceEndpoint internalEndPoint =
      RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["IGeneratePDF"];
  this.serviceHost.AddServiceEndpoint(
     typeof(IGeneratePDF),
     binding,
     String.Format("net.tcp://{0}/GeneratePDF", internalEndPoint.IPEndpoint));

必要な各インスタンスを呼び出すことができるエンドポイントを取得するよりも。しかし、この方法では負荷分散が得られません。これが私が望んでいることです。

4

1 に答える 1

0

おそらく理想的な解決策ではありませんが、これはそれを行う1つの方法のようです...

    int instances = RoleEnvironment.Roles["InstanceName"].Instances.Count;
    Random rand = new Random();
    var endpoint = RoleEnvironment.Roles["InstanceName"].Instances[rand.Next(instances)].InstanceEndpoints["YourEndpointName"].IPEndpoint;

私が読んでいるものから、作業中の役割 (準備完了としてマークされている役割) のみがインスタンス リストにあるため、作業中のインスタンスのみを取得する必要があります...

于 2011-01-31T10:37:03.593 に答える