performance - 关于Akka消息传递性能 : many small messages or less large messages?

标签 performance networking akka message-passing

对于我目前正在使用 Akka 开发的数据挖掘算法,我想知道 Akka 是否对发送的消息进行了性能优化。

例如,如果我有一个 Actor 向同一个其他 Actor 发出大量消息,将一组消息封装到另一个大消息中是否好?或者 Akka 本身是否有某种缓冲区,以便一次通过网络传输的不是一条消息而是多条消息?

我问这个问题是因为该算法应该在传输性能很重要的集群上远程执行,我目前没有选择自己做基准测试。

最佳答案

对于在同一台机器上通过 Akka 传递的消息,我认为使用小消息还是将消息聚合为单个消息并不重要。我认为,与处理聚合时必须循环相比,许多调用的额外开销是最小的。 我更喜欢使用小消息,因为它使系统更简单。

但是,当通过网络发送消息时,Akka 使用 HTTP,因此建立连接等会产生额外的 HTTP 开销成本。因此,您可以在此处选择将一些消息聚合为一条消息。 但是,这也取决于您的用例。缓冲意味着等待更多直到有足够的(或发生超时)。如果您不能等待,例如因为您需要快速响应,所以您仍然需要单独发送每条消息。

我不认为有一个标准的 Akka actor 可以用来聚合消息。也许可以应用一种特殊的路由来进行缓冲。

或者您可以看看 Akka Streams。这确实支持消息缓冲。

关于performance - 关于Akka消息传递性能 : many small messages or less large messages?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17998645/

相关文章:

scala - Scala 中的进程级并行性

jakarta-ee - Akka非常适合在单独的EJB之间共享单个数据 View

scala - 在 IntelliJ 中运行 ScalaTest 时“无法加载 Suite 类”

c++ - Valgrind 是否有像 Purify/Quantify 这样的 API 可以让你禁用数据记录?

c - 为什么 < 比 != 快得多?

java - Java 中用于标识网络消息的连续常量

java - 如何在java中创建新的拨号连接?

c++ - libpcap (>1.0.0) 和 PF_RING 效率

javascript - 如何提高 UTF32 到 UTF16 代理对转换器的性能

html - 在Dart中绘制段落