我听过很多关于Akka框架(Java/Scala服务平台)的赞不绝口,但到目前为止,还没有看到很多实际用例的例子。因此,我很有兴趣了解开发人员如何成功地使用它。

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


当前回答

如果您将聊天服务器抽象到一个级别,那么您将得到答案。

Akka提供了一个类似于Erlang的“让它崩溃”的消息传递系统。

例如,需要不同级别的持久性和可靠性的消息传递:

聊天服务器 MMO的网络层 财务数据泵 iPhone/手机/任何应用的通知系统 其他服务器 也许类似WebMachine(猜测)

Akka的优点是它为持久性、STM实现、REST服务器和容错提供了选择。

不要被聊天服务器的例子惹恼,把它看作是某一类解决方案的例子。

在他们所有优秀的文档中,我觉得这个确切的问题、用例和示例存在差距。请记住,这些例子不是简单的。

(仅凭观看视频和玩源代码的经验编写,我没有使用akka实现任何东西。)

其他回答

我们在工作中的几个项目中使用了Akka,其中最有趣的是与车辆碰撞修复有关。主要在英国,但现在扩展到美国,亚洲,大洋洲和欧洲。 我们使用参与者来确保实时提供碰撞修复信息,以实现安全且具有成本效益的车辆修复。

关于Akka的问题其实更多的是“你不能用Akka做什么”。它与强大的框架集成的能力、强大的抽象性和所有的容错能力使它成为一个非常全面的工具包。

我们在语音对话系统(primetalk)中使用Akka。无论是对内还是对外。为了在单个集群节点上同时运行许多电话通道,显然需要一些多线程框架。Akka的工作非常完美。我们以前有过java并发性的噩梦。和Akka一起,它就像一个秋千——它简单地工作。坚固可靠。24 * 7,不间断。

在通道中,我们有并行处理的实时事件流。特别是: -冗长的自动语音识别-由演员完成; -音频输出生成器,混合一些音频源(包括合成语音); 文本到语音的转换是一个单独的在频道之间共享的角色集 -语义和知识加工。

为了实现复杂信号处理的互连,我们使用SynapseGrid。它具有在复杂参与者系统中对DataFlow进行编译时检查的好处。

如果您将聊天服务器抽象到一个级别,那么您将得到答案。

Akka提供了一个类似于Erlang的“让它崩溃”的消息传递系统。

例如,需要不同级别的持久性和可靠性的消息传递:

聊天服务器 MMO的网络层 财务数据泵 iPhone/手机/任何应用的通知系统 其他服务器 也许类似WebMachine(猜测)

Akka的优点是它为持久性、STM实现、REST服务器和容错提供了选择。

不要被聊天服务器的例子惹恼,把它看作是某一类解决方案的例子。

在他们所有优秀的文档中,我觉得这个确切的问题、用例和示例存在差距。请记住,这些例子不是简单的。

(仅凭观看视频和玩源代码的经验编写,我没有使用akka实现任何东西。)

我最近在Akka中实现了规范的map-reduce示例:Word count。所以这是Akka的一个用例:更好的性能。它更像是JRuby和Akka的参与者的一个实验,但它也表明Akka不仅仅是Scala或Java:它可以在JVM之上的所有语言上工作。

我们正在一个大型电信项目中使用Akka(不幸的是,我不能透露太多细节)。 Akka角色由web应用程序远程部署和访问。这样,我们就有了一个基于谷歌原型缓冲区的简化RPC模型,并使用Akka Futures实现了并行。 到目前为止,这种模式运行得非常出色。注意:我们使用的是Java API。