0

Web 角色或辅助角色的内部端点如何具有负载平衡?如果我将 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

可能不是理想的解决方案,但这似乎是一种方法......

    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 回答