在使用 Akka Cluster 的分布式系统中,你 运行 每个主机上都有一个单独的 Actor System 吗?
Do you run a separate Actor System on each host in a distributed system using Akka Cluster?
这是我基于 Whosebug 阅读的假设。
您有多个系统组件:
- 数据库
- 身份验证
- 网络
每个系统组件 运行 位于单独的主机上,如微服务模式中所述。另外,要将这些主机粘合在一起,您需要:
- 运行 一个 Actor 系统,作为每个主机上的种子节点之一
- 描述每个主机的角色,以便您可以将消息定向到正确的组件
这是我的问题:
- 你能不 运行 每个主机上的 Actor 系统并且仍然 link 集群吗?
- 您如何根据角色定向消息?假设我想将数据库消息从 Web 组件定向到数据库组件?
学习后找出答案。
1) 是的,如果物理上位于另一个系统上,您需要 运行 一个单独的 actor 系统。这样您就可以加入种子节点。否则,当 actor 死亡时,没有 actor system 来重启它。
2) 角色不用于直接消息。它只是用来向集群中的其他节点表明具有此 tag 的节点已加入集群。
为了向不同的节点发送消息,您需要使用Custer Routers
这是我基于 Whosebug 阅读的假设。
您有多个系统组件:
- 数据库
- 身份验证
- 网络
每个系统组件 运行 位于单独的主机上,如微服务模式中所述。另外,要将这些主机粘合在一起,您需要:
- 运行 一个 Actor 系统,作为每个主机上的种子节点之一
- 描述每个主机的角色,以便您可以将消息定向到正确的组件
这是我的问题:
- 你能不 运行 每个主机上的 Actor 系统并且仍然 link 集群吗?
- 您如何根据角色定向消息?假设我想将数据库消息从 Web 组件定向到数据库组件?
学习后找出答案。
1) 是的,如果物理上位于另一个系统上,您需要 运行 一个单独的 actor 系统。这样您就可以加入种子节点。否则,当 actor 死亡时,没有 actor system 来重启它。
2) 角色不用于直接消息。它只是用来向集群中的其他节点表明具有此 tag 的节点已加入集群。
为了向不同的节点发送消息,您需要使用Custer Routers