1

我有一个相当简单的 Akka.NET 系统,它跟踪内存状态,但只包含派生数据。因此,任何参与者都可以在启动时从后端数据库加载其最新状态,然后开始接收消息并从那里保持其状态。所以我可以让演员失败并在我想要的时候重新开始这个过程。它会自我重建。但是......我想跨多个节点运行(主要是为了内存需求),我想根据需要增加/减少节点的数量。也用于在不停机的情况下发布新版本。实现这一目标的最轻量级(就持久性而言)集群设置是什么?您可以在没有持久性的情况下运行集群吗?

4

1 回答 1

2

这不是一个问题,所以让我一一回答:

  1. 所以我可以让演员失败并在我想要的时候重新启动进程- 是的,但请记住,进程的硬重置比正常关闭要昂贵得多。在分布式系统中,如果您的节点出现故障,最好先将其传达给其余节点,而不是要求它们检测死节点 - 这是节点故障检测的一部分,可能需要一些时间(甚至是子节点)分钟)。
  2. 我想根据需要增加/减少节点的数量- 这是集群的标准行为。在 Akka.NET 的情况下,取决于您要使用的功能集,您有时可能需要指定集群大小的上限。
  3. 也用于在不停机的情况下发布新版本。- 大多数集群功能可以使用所谓的角色限定到一组特定节点。每个节点都可以拥有一组角色,可以使用它提供的服务并检测其他节点是否具有所需的功能。出于这个原因,您可以将角色用于版本控制之类的事情。
  4. 您可以在没有持久性的情况下运行集群吗?- 是的,这是默认配置(在 Akka 中,集群节点不需要使用任何形式的持久后端来工作)。
于 2017-11-05T08:19:12.533 回答