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

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


当前回答

我们使用Akka来异步处理REST调用——与异步web服务器(基于net)一起,与传统的每个用户请求线程模型相比,我们可以在每个节点/服务器服务的用户数量上实现10倍的提高。

告诉你的老板,你的AWS托管费用将下降10倍,这是一个不用动脑筋的事情!嘘……不过别告诉亚马逊…:)

其他回答

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

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

免责声明:我是Akka的采购订单

此外,它还提供了一个更容易推理和纠正的并发大杂烩(参与者、代理、数据流并发),并以STM的形式进行并发控制。

下面是一些你可以考虑的用例:

Transaction processing (online gaming, finance, statistics, betting, social media, telecom, ...) scale up, scale out, fault-tolerance / HA Service backend (any industry, any app) service REST, SOAP, cometd etc act as message hub / integration layer scale up, scale out, fault-tolerance / HA Snap-in concurrency/parallelism ( any app ) Correct Simple to work with and understand Just add the jars to your existing JVM project (use Scala, Java, Groovy or JRuby) Batch processing ( any industry ) Camel integration to hook up with batch data sources Actors divide and conquer the batch workloads Communications hub ( telecom, web media, mobile media ) scale up, scale out, fault-tolerance / HA Game server (online gaming, betting) scale up, scale out, fault-tolerance / HA BI/datamining/general purpose crunching scale up, scale out, fault-tolerance / HA insert other nice use cases here

An example of how we use it would be on a priority queue of debit/credit card transactions. We have millions of these and the effort of the work depends on the input string type. If the transaction is of type CHECK we have very little processing but if it is a point of sale then there is lots to do such as merge with meta data (category, label, tags, etc) and provide services (email/sms alerts, fraud detection, low funds balance, etc). Based on the input type we compose classes of various traits (called mixins) necessary to handle the job and then perform the work. All of these jobs come into the same queue in realtime mode from different financial institutions. Once the data is cleansed it is sent to different data stores for persistence, analytics, or pushed to a socket connection, or to Lift comet actor. Working actors are constantly self load balancing the work so that we can process the data as fast as possible. We can also snap in additional services, persistence models, and stm for critical decision points.

在JVM上传递的Erlang OTP风格的消息对于在现有库和应用程序服务器的肩膀上开发实时系统来说是一个很棒的系统。

Akka允许您像在传统esb中那样进行消息传递,但速度更快!它还为您提供了框架中的工具,以管理解决方案所需的大量参与者池、远程节点和容错。

我们使用Akka来异步处理REST调用——与异步web服务器(基于net)一起,与传统的每个用户请求线程模型相比,我们可以在每个节点/服务器服务的用户数量上实现10倍的提高。

告诉你的老板,你的AWS托管费用将下降10倍,这是一个不用动脑筋的事情!嘘……不过别告诉亚马逊…:)

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