gpt4 book ai didi

azure - Windows Azure 中的 Web 角色缩放

转载 作者:行者123 更新时间:2023-12-01 10:01:49 25 4
gpt4 key购买 nike

我已经实现了一个 websocket 服务器作为 WebRole.cs 的一部分,到目前为止它可以工作,用户可以使用网站的 URL 和指定的端点连接到服务器。现在假设我有 50,000 个用户想要连接到 websocket 服务器,我将需要该 Web 角色的更多实例来处理负载。

我的问题是,如果有多个 Web 角色实例,是否也会导致多个 Web 套接字服务器?即,用户是否仍然仅使用单个 URL/IP 进行连接并且全部相互连接(例如,广播消息时),或者用户是否需要输入不同的 IP 来连接到不同的 Websocket 服务器(每个实例一个)并且仅连接到同一服务器/实例上的用户?

编辑:具体问题

因此,如果连接时,用户将被添加到:

private static List<UserContext> Users = new List<UserContext>();

在 WebRole.cs 中。我有一个广播方法:

private static void Broadcast(String message)
{
foreach (UserContext uc in Users)
{
uc.Send(message);
Console.WriteLine("Broadcasting to: " + Users.IndexOf(uc));
}
}

该消息是否会广播给网站上的所有用户,或者每个实例都有自己的用户列表,因此仅广播给连接到特定实例的用户?

最佳答案

虽然西蒙关于负载均衡器将处理所有请求这一事实是正确的(您无需担心需要连接到哪个实例),但您还需要考虑其他事项帐户。从您的问题中我了解到您想要广播消息。

假设您将应用程序扩展到 2 个实例:

  • 实例 1
  • 实例 2

负载均衡器将确保对 yourapp.cloudapp.net 的所有请求都转到这些实例之一(循环)。现在假设用户 A、B 和 C 被路由到实例 1,用户 D、E 和 F 被路由到实例 2:

  • 实例1:用户A、用户B、用户C
  • 实例2:用户D、用户E、用户F

因此,我们假设用户 A 在您的应用程序中执行了某些操作,并且您希望将其广播给所有用户。实例 1 将仅看到另外 2 个已连接的用户:用户 B 和 C,并将向这些用户发送消息。这里的问题是您还想将消息发送给用户 D、E 和 F,即使它们位于不同的实例上。

这就是为什么您的 WebSocket/broadcast/... 框架(如 SignalR)需要使用可从所有实例访问的服务总线之类的东西。看看 SignalR 如何使用 Windows Azure Service Bus 解决这个问题或redis .

关于azure - Windows Azure 中的 Web 角色缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15107727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com