Akka框架的最佳使用案例是什么?

623

我听说过很多有关 Akka 框架 (Java/Scala 服务平台) 的赞扬,但到目前为止还没有看到许多实际使用案例。所以我很想听听开发者成功使用它的事情。

只有一个限制:请不要包括编写聊天服务器的情况。(为什么?因为这已经被过度使用作为许多类似事物的示例)


10
“是不是先找到问题再寻找解决方案比已经有了解决方案再去寻找适用的问题更容易呢?” “我猜想,与使用 RMI 相比,Akka 及其 Actor 看起来更容易/简单编写代码。” - Kennet
75
好的,如果我有具体问题需要解决。我并不是在寻找“借口来使用Akka”,但我对学习更多内容很感兴趣。这可能有助于解决未来的问题,但主要是为了持续学习的过程。 - StaxMan
有一个相关的问题,但是关于将AKKA应用于现有应用程序以及一些用例:https://dev59.com/5WQn5IYBdhLWcg3wvpUV#16674690 - ses
2
Akka是一种比JMS或MQ风格的分布式消息队列系统更好的解决方案。这是我最近问过的确切同样的问题的最佳理解方式:“我知道如何使用它并看到了我可以使用它的地方,但我看不出这将提供真正的优势。” Akka背后的核心设计假设比JMS/MQ要好得多,特别是关于进程隔离、无锁设计和重试/故障处理方面。其次,API比JMS/MQ工具更加优雅。 - user2684301
2
@user2684301 嗯,我觉得那个回答有点不公平,像是在比较苹果和橙子。MQ(消息队列)是逻辑上的简单构建块,比起 Akka 来做的事情要少得多,我不会把它们并排比较。但是如果我把它理解为“与使用 JMS 构建的分布式系统相比,以声明方式编写”,那么就更有意义了。 - StaxMan
显示剩余2条评论
12个回答

17

我们在口语对话系统 (primetalk) 中使用 Akka。无论是内部还是外部,为了能够在单个集群节点上同时运行许多电话通道,显然需要一些多线程框架。Akka 的工作非常完美。我们之前曾经历过 Java 并发的噩梦。而使用 Akka 就像挥舞手臂一样,它简单地运行。强大而可靠。24*7,不间断。

在频道内,我们有实时的事件流并行处理。具体包括: - 长时间的自动语音识别 - 由一个 actor 完成; - 音频输出生成器,混合几个音频源(包括合成语音); - 文本到语音转换是一组独立的 actors,共享给所有频道; - 语义和知识处理。

为了进行复杂信号处理的互连,我们使用SynapseGrid。它具有复杂的 actor 系统中数据流的编译时检查的优点。


15

我最近在Akka中 实现 了经典的MapReduce示例:单词计数。这是Akka的一个用例:更好的性能。这更多是关于JRuby和Akka的Actor的实验,但它也表明Akka不仅适用于Scala或Java:它可以在JVM上运行的所有语言。


你知道什么是导致更好性能的原因(并且与哪种替代方案相比)吗?这是由于在JVM上使用JRuby(而不是本地Ruby),由于非阻塞I/O而导致的可扩展性,还是其他原因? - StaxMan
2
我写的比较是:Jruby顺序执行 VS 带有actors的Jruby。因此,唯一能够负责更快执行的事情就是参与actors。在实验中没有涉及任何I/O(文件从磁盘加载,但是在基准计时器设置之前完成)。 - Daniel Ribeiro
我最近也实现了一个MapReduce示例,但它只是普通的Java。https://github.com/chaostheory/jibenakka - chaostheory

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接