asp.net - akka.net 在 azure asp.net 网站中进行缩放

标签 asp.net azure azure-web-app-service akka.net

我已经设置了在 ASP.net 应用程序中运行的 Akka.net 参与者来处理一些异步和轻量级的过程。我想知道当我在 Azure 上扩展网站时 Akka 如何扩展。假设在代码中我有一个参与者来处理 FooBar 类型的消息。当我有两个网站实例时,仍然是一个 Actor 还是现在有两个 Actor ?

最佳答案

默认情况下,每当您调用 ActorOf 方法时,您都会命令创建一个新的 Actor 实例。如果您在两个参与者系统中调用它,最终会得到两个独立的参与者,它们的系统内具有相同的相对路径,但全局地址不同。

有多种方法可以在参与者系统之间共享有关参与者的信息:

  1. 使用 Akka.Remote 时,您可以根据 addresses 调用生活在另一个 Actor 系统上的 Actor。或 IActorRef。要求:
    • 您必须知道到达给定 Actor 的路径。
    • 您必须知道该 Actor 所在的 Actor 系统的实际地址(URL 或 IP)。
    • 两个参与者系统必须能够在参与者系统之间通过 TCP 进行通信(即防火墙上的开放端口)。
  2. 当使用Akka.Cluster时,actor系统(也称为节点)可以形成一个集群。他们将交换有关其在网络中的定位的信息,跟踪传入节点并最终检测到死亡或无法到达的节点。除此之外,您可以使用更高级别的组件,即 cluster routers 。要求:
    • 每个节点都必须能够向其他节点打开 TCP channel (同样,防火墙等)
    • 新的传入节点必须至少知道一个已经属于集群的节点。作为灯塔模式的一部分或通过插件和第三方服务(如 consul),这很容易实现。
    • 所有节点必须具有相同的名称。
  3. 最后,在使用集群配置时,您可以使用 Akka.Cluster.Sharding - 它本质上是对参与者在集群内的位置的更高级别的抽象。使用它时,您不需要明确告知在哪里找到或何时创建 Actor 。相反,您所需要的只是一个唯一的参与者标识符。当向此类参与者发送消息时,如果之前不存在该消息,则会在集群中的某个位置临时创建该消息,并重新平衡以平均分散集群中的工作负载。该插件还处理与将消息路由到该参与者相关的所有逻辑。

关于asp.net - akka.net 在 azure asp.net 网站中进行缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49013798/

相关文章:

windows - 存储在 Windows Azure blob 上的视频不适用于 VideoJS(使用 Chrome)

azure - Powershell - Get-AzureADAuditSignInLogs 多个筛选器

azure 插槽交换和 web.config 设置

powershell - 当 AppService 运行/扩展到 2 个以上实例时的 Azure 部署

asp.net - 替换过时的 System.Xml.XmlDataDocument?

c# - 是否可以使用 MVC/Razor 写出生成的有序数字序列,跨越内容页和母版页?

asp.net - 运行时 4.0 的 WebApi cors

azure - 获取应用服务环境中内部负载均衡器的IP

azure - 关于在 Azure 网站和 Web 角色上存储和访问资源文件的建议

asp.net - ASP.NET 中的全局资源与本地资源