【问题标题】:What purpose does the name of an ActorSystem serve?ActorSystem 的名称有什么用途?
【发布时间】:2014-01-24 08:27:06
【问题描述】:

我刚开始使用 akka,不明白 ActorSystem 名称的用途。

要在同一个 JVM 或主机(需要远程访问)中运行多个参与者系统,它们无论如何都需要在不同的端口上运行。

akka.tcp://MySystem2@127.0.0.1:22222/user/greeter akka.tcp://MySystem3@127.0.0.1:33333/user/greeter

既然端口号是寻址方案的一部分,为什么还要在地址中包含参与者系统名称?

【问题讨论】:

    标签: akka


    【解决方案1】:

    就 akka 远程处理而言,是的,端口将作为一个差异化因素,但并非所有系统都使用远程处理;这是一个补充。未启用远程处理的核心参与者库需要能够支持将参与者部署到同一 JVM 中的两个独立参与者系统中的概念,该参与者位于同一路径下并具有相同的名称,并且能够区分它们,这就是演员系统的名字开始发挥作用。假设这个演员做了一些记录。如果您在同一个 JVM 中运行两个独立的参与者系统,您将如何区分哪个实例(部署到 system1 或部署到 system2)是产生日志消息的实例?通过在完全限定路径中包含参与者系统的名称,您将能够区分哪个是哪个。

    这是一个需要姓名的简单示例,我相信人们可以与其他人一起讨论。但是从远程的角度考虑它并不是正确的思考方式。正如我之前提到的,Remoting 是一个附加组件,构建在核心库之上。核心库需要这种差异化,远程处理只是继承它,即使它看起来没有必要。

    【讨论】:

    • 我还要补充一点,人类有名字是有原因的,而不仅仅是地址或 UUID。有时谈论“system3”而不是“194.256.119.4:4000”更容易
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多