抱歉,如果我在这里有点傻的话。我正在学习Java,我很难理解ActorSystem
的确切含义。我理解它就像一个Actor
工厂,有效地创建了我可能希望在我的应用程序中使用的参与者。
但是,我对两件事感到困惑,特别是关于Akka集群的使用。
ActorSystem
是唯一的吗?我听说过,虽然在技术上可能有多个,但通常每个JVM只有一个系统。是真的吗?,您是否需要在您的项目中使用多个系统?ActorSystem
得到了什么额外的含义?它是否与“节点”的概念相对应?还是“集群”?对于我所得到的,我的机器对应于一个集群,而集群又包含多个节点。这是正确的吗?ActorSystem
在这个推理中的作用是什么?提前谢谢你的时间!
发布于 2022-01-21 11:45:56
就ActorSystem
内部的参与者而言,不同ActorSystem
中的参与者可能位于不同的JVM中(模块化可能的类加载器冲突等等)。
在同一个JVM中需要多个ActorSystem
是非常罕见的:对于您严格需要的唯一情况是,需要为同一个JVM中的某些功能配置多个配置(配置的功能对于配置所在位置不灵活;Akka的大部分/所有功能都是这样灵活的)。除此之外,同一个JVM中的多个ActorSystem
有时在测试中很有用,以节省多个JVM的开销。
因此,在集群中,另一个ActorSystem
肯定在监听另一个主机:端口组合。它几乎可以肯定地运行在不同的JVM/OS进程中。它可能运行在另一台计算机上,也可能不运行。
ActorSystem
几乎总是与集群节点对应1:1。可以想象一个使用Akka /Akka集群的实现,它允许1 ActorSystem
作为多个节点。
https://stackoverflow.com/questions/70805315
复制