3

同一角色的多个角色实例是否可以通过获取所有这些实例侦听的特定端点的 VIP(虚拟 IP)地址来相互通信RoleEnvironment?如果是这样,则返回的 VIP 可以负载平衡到调用者(RoleEnvironment方法)实例本身。

4

1 回答 1

6

角色实例可以通过内部端点相互交谈。与输入端点不同,它们仅对部署中的其他实例可见(无论角色如何)。

通过内部端点直接对话,完全绕过了外部 VIP 负载均衡器。因此,如果您尝试连接到三个工作角色实例(假设这是您的 REST 服务所在的位置),则您必须在 3 个实例之间进行自己的负载平衡。

使用内部端点与输入端点一样简单。首先设置一个: 在此处输入图像描述

然后随便抓一个。例如(按这个词的最粗略的意思):

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