当前位置: 首页 > 知识库问答 >
问题:

理解Akka演员的穿线

郭兴平
2023-03-14

我很难理解Akka中的演员,以及一个线索如何与一个演员相关联。

让我们以Fridge Actor和Person Actor向Fridge Actor引用发送GetFoodMessage为例。假设不变性受到尊重。

  • 这些消息是在不同的线程中“同时”处理,还是在队列中一个接一个地处理?
  • 线程产卵是否完全由库管理并从actor的概念中抽象出来?
  • 参与者引用是参与者的实例吗?
  • 当我阻止一个演员(和他的孩子)时,我是在杀人吗?(如果冰箱没有更多的食物,并通知Person Actor没有更多的食物可用)
  • 参与者系统是所有这些线程的父进程吗?
  • 冰箱演员是人演员的孩子吗?

这些问题都是在开发一个Akka系统“为了好玩”的时候来找我的,我看到其他堆栈溢出线程讨论线程如何与参与者相关,但我相信这些问题是不同的

共有1个答案

颜光临
2023-03-14

>

  • 这些消息是在不同的线程中“同时”处理,还是在队列中一个接一个地处理?-在队列中一个接一个地处理

    线程产卵是否完全由库管理,并从actor的概念中抽象出来?-是的

    参与者引用是参与者的实例吗?-不。Actor可以在另一个JVM实例中。

    当我阻止一个演员(和他的孩子)时,我是在杀人吗?(如果冰箱没有更多的食物,并通知演员没有更多的食物)-否

    冰箱演员是人演员的孩子吗?-可以是,也可以不是,正如程序员所决定的

    通常,Akka Actor是一个能够在线程池的单个线程上运行的任务。当有消息要处理时,它提交给执行,当没有更多消息时,它离开线程。

  •  类似资料:
    • 我很想知道调整大小,或者在本例中增加单个节点系统上的actor池中actor的数量是否真的会影响性能。 我有一个带超线程的四核系统。在任何给定的点上,系统可以运行8个线程。假设执行元执行的大多数操作都是CPU绑定的,那么将池中的执行元数量从20个增加到40个会有什么收获呢?

    • [04/27/2014 18:09:05.518][ReadScheduler-Akka.actor.Default-Dispatcher-3][Akka://ReadScheduler/User/Collector]从参与者[Akka://ReadScheduler/User/Executor#2127791644]到参与者[Akka://ReadScheduler/User/Collector

    • 我们在使用Akka HTTP构建的web服务器上遇到了奇怪的内存行为。我们的架构是这样的: Web服务器路由调用各种参与者,为将来获取结果并将其流式传输到响应 参与者调用非阻塞操作(使用期货),组合和处理从中提取的数据,并将结果传送给发送者。我们使用标准的Akka Actor,实现它的receive方法(不是Akka键入的) 应用程序中的任何地方都没有阻止代码 当我在本地运行web服务器时,一开始

    • 我从这里得到上面的错误消息: 特别是从第二行。。进口是 akka版本是2.2.1,scala是2.10.2,我正在使用sbt 0.13来构建它。 编辑:我用 结果如下:

    • java.util.concurrent.CompletionException:Akka.Pattern.AskTimeoutException:收件人[Actor[akka:/web_server/user/MyActor#-769383443]]已终止。发送者[null]发送了类型为“com.data.model.request”的消息。 所以我重写了方法,在那里添加了一个log语句。 现在

    • 由于akka是一个构建actor模型的工具包,而actor模型是运行在JVM内部的对象,那么创建后的actor对象的可靠性有多高。考虑到让它崩溃的性质,除非像使用毒丸或JVM关闭一样显式地杀死它,否则JVM中actor对象的可靠性有多高,actor不是自己全部杀死的。