- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道这是一个非常不精确的问题,可能被认为不适合 stackoverflow。不幸的是,较小的应用程序(就参与者的数量而言)和“类似教程”的应用程序并不能帮助我培养关于消息分发开销的直觉以及“scala 对象”和“CORBA 对象”之间粒度的快速点.
虽然几乎可以肯定保持与客户端的对话状态值得一个参与者,但在大多数实际用例中,它会涉及由许多类建模的条件/并行/替代交互。这使得可以选择将参与者视为非常复杂的服务的外观,类似于刚刚退休的 EJB,或者类似于 smalltalk 对象,只要通信可能以异步方式实现,就会在彼此之间随意触发消息。
除了消息传递本身的开销外,生命周期管理也会涉及开销,我担心由于异常或根中的其他错误而导致整个 actor 子树的链式重启引起的潜在问题。
为了这个问题,我们可以假设绝大多数通信发生在一台机器内,网络交叉是微不足道的。
最佳答案
我不确定您所说的“消息传递本身的开销”是什么意思。
当不涉及网络/序列化时,开销可以忽略不计:一侧将消息推送到队列中,另一侧从中读取消息。
Akka 声称它可以在一台机器上每秒处理 5000 万条消息。这意味着您不会将actor 用作复杂子系统的外观。您宁愿将它们建模为更小的“工作单元”。在方便时,它们可能比 smalltalk 对象更复杂。你可以说,KafkaConsumerActor
这将在内部使用其他“普通”类,例如连接、配置等,这些不必是 akka Actor 。但它仍然足够小,可以作为一个简单的工作单元做一件简单的事情(消费一条消息并将其发送到某个地方)。
每秒5000万真的很多。
内存占用也非常小。 Akka 声称只需 1GB 的堆就可以拥有约 250 万个 actor。与典型系统所做的相比,它确实什么都没有。
至于生命周期,创建一个 actor 并不比创建一个类实例和一个邮箱重多少,所以我真的不希望它有那么重要。
话虽如此,通常您的系统中没有多少参与者可以处理一条消息并死亡。通常你会产生生命周期更长的 Actor 。就像,根据您提供的参数计算您的抵押贷款还款额的 Actor 根本没有任何理由死亡。
Akka 还使得使用 actor 池(它们的不同种类)变得非常简单。
所以这里的性能是非常可调整的。
最后一点是您应该在上下文中比较 Akka 开销。例如,如果您的系统正在执行数据库查询,或服务/执行 HTTP 请求,甚至执行某种重要的 IO,那么这些事件的开销可能会使 Akka 的开销变得微不足道,因此您甚至不会费心去考虑它。就像 50 毫秒到 DB 的往返将相当于大约 250 万条 akka 消息的开销。有关系吗?
那么你能找到一个 Akka 会强制你支付绩效惩罚的边缘情况吗?大概。 Akka 不是金锤(而且什么都不是)。
但是考虑到上述所有内容,您应该考虑是 Akka 在您的特定上下文中成为性能瓶颈,还是您在微优化上浪费时间。
关于scala - Akka Actor 有多重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35234343/
我有一个数据框: title | cast ------------------------------ movie1 | cast1,cast2,cast3 movie2
据我所知,Actor 模型是一种关于并发的理论。 Erlang 和 Scala 都实现了这个理论模型,但它们的实现都不完全符合 Actor 模型。 从计算机科学家的角度来看,Erlang、Scala
我是 akka 流的新手。我将 kafka 用作源(使用 ReactiveKafka 库)并通过流对数据进行一些处理并使用订阅者 (EsHandler) 作为接收器。 现在我需要处理错误并通过错误处理
考虑以下代码示例(版本 1)。此处父 actor (ActorA) 向子 actor (ActorB) 发送消息,然后停止自身。由于父 actor 的自停止,在高负载下,子 actor 甚至在从邮箱中
我有以下 Scala 代码: package dummy import javax.servlet.http.{HttpServlet, HttpServletRequest => H
如何描述“数据流编程”和“ Actor 模型”之间的区别?据我了解,它们并非无关,但又不相同。 DF 是否是一个更广泛的概念,其要点是与控制流模型的区别,而 Actor 模型是更详细的和理论上有根基的
GPars 中的 Actor 有自己的消息队列(邮箱)。假设一个参与者有 15 条待处理的消息,然后系统突然宕机(比如由于电源故障)。这 15 条消息会发生什么。当系统再次启动并运行时,消息队列会自动
我刚刚开始使用 AKKA,并且有一个关于非参与者代码如何与参与者代码对话的基本问题。 非参与者代码如何调用参与者并获得响应?我试过使用 Patterns.ask 从非 Actor 调用 Actor ,
这个问题在这里已经有了答案: 关闭 9 年前。 Possible Duplicate: Casting vs using the ‘as’ keyword in the CLR 我最近了解到一种不同
我在设置边界矩形位置时遇到麻烦,这就是我问这个的原因。当我设置 Actor 类型的对象的边界矩形位置时,看来我传递给 [setBounds(x,y,with,height)] 2 的坐标相对于 Act
我是 Actor 模型的新手。任何人都可以解释 Actor 模型中 Actor 的生命周期吗?我一直在文档中寻找答案,但找不到任何令人满意的内容。 我对 Actor 完成后做什么很感兴趣onRecei
例如,我有两个 Actor ——一个父 Actor 和一个子 Actor 。当 parent 收到一条消息时,它会产生与消息中指定的一样多的子actor。如何测试此功能?有没有办法模拟上下文或其他方法
我目前在 Futures 编程,我对 Actor 很好奇。我想听听有经验的声音: Actor 相对于 future 有什么优势? 我什么时候应该使用一种而不是另一种? 据我所知, Actor 持有状态
Actor 模型框架(例如 Orleans )和复杂事件处理 (CEP)(例如 Apache Storm )之间有什么区别? 其中每种方法都适用(或者一种方法比另一种方法更适用)的使用示例肯定会有所帮
你们中的任何人都可以帮助我理解传入的基本消息吗scala 使用 Actor 模型? 我正在尝试编写一个包含 3 个 Actor 的简单程序。 Actor “BossActor”创建了 2 个 Acto
Akka 1.1.3 文档指出“become 方法对于许多不同的事情都很有用,但它的一个特别好的例子是它用于实现有限状态机 (FSM) 的示例”。在运行时热交换 Akka actor 的实现还有哪些其
我正在尝试使用参与者实现消息处理管道。管道的步骤包括读取、过滤、扩充以及最后存储到数据库中等功能。类似于此:http://sujitpal.blogspot.nl/2013/12/akka-conte
可以使用 actor.send() 或 actor.offer() 向 Actor 发送消息一旦我的 Actor 从其 channel 收到消息,我想返回响应。我该怎么做呢?我没有看到任何明显的内置方
你们中的任何人都可以帮助我理解传入的基本消息吗scala 使用 Actor 模型? 我正在尝试编写一个包含 3 个 Actor 的简单程序。 Actor “BossActor”创建了 2 个 Acto
我目前正在尝试保存特殊 Actors所以如果加载旧 map ,我可以再次将它们放在 map 上。因此我想将它们放入 HashMap> monsterAtMap 中并从那里删除它们Stages .所以我
我是一名优秀的程序员,十分优秀!