在使用 Akka Cluster 的分布式系统中,你 运行 每个主机上都有一个单独的 Actor System 吗?

Do you run a separate Actor System on each host in a distributed system using Akka Cluster?

这是我基于 Whosebug 阅读的假设。

您有多个系统组件:

  1. 数据库
  2. 身份验证
  3. 网络

每个系统组件 运行 位于单独的主机上,如微服务模式中所述。另外,要将这些主机粘合在一起,您需要:

这是我的问题:

  1. 你能 运行 每个主机上的 Actor 系统并且仍然 link 集群吗?
  2. 您如何根据角色定向消息?假设我想将数据库消息从 Web 组件定向到数据库组件?

学习后找出答案。

1) 是的,如果物理上位于另一个系统上,您需要 运行 一个单独的 actor 系统。这样您就可以加入种子节点。否则,当 actor 死亡时,没有 actor system 来重启它。

2) 角色不用于直接消息。它只是用来向集群中的其他节点表明具有此 tag 的节点已加入集群。

为了向不同的节点发送消息,您需要使用Custer Routers