Akka框架的最佳用例是什么 [已关闭]

2022-08-31 04:13:39

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

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


答案 1

到目前为止,我已经在两个实际项目中非常成功地使用它。两者都处于近乎实时的交通信息领域(交通如高速公路上的汽车),分布在多个节点上,集成多方之间的消息,可靠的后端系统。我还没有自由地提供有关客户的详细信息,当我获得OK时,也许可以将其添加为参考。

Akka确实完成了这些项目,尽管我们从0.7版本开始。(顺便说一句,我们正在使用scala)

其中一大优点是,您可以轻松地从参与者和消息中编写系统,几乎没有样板,它可以很好地扩展,而无需手卷线程的所有复杂性,并且您几乎可以免费获得对象之间的异步消息传递。

它非常适合对任何类型的异步消息处理进行建模。我更喜欢以这种风格编写任何类型的(Web)服务系统,而不是任何其他风格。(你有没有试过用 JAX-WS 编写异步 Web 服务(服务器端)?这是很多管道)。因此,我会说任何不想挂在其组件上的系统,因为所有内容都是使用同步方法隐式调用的,并且一个组件锁定某些内容。它非常稳定,let-it-crash + supervisor解决方案确实运行良好。一切都很容易以编程方式设置,并且不难进行单元测试。

然后是出色的附加模块。Camel模块确实很好地插入了Akka,并且能够使用可配置的端点轻松开发异步服务。

我对这个框架非常满意,它正在成为我们构建的连接系统的事实标准。


答案 2

免责声明:我是阿卡的PO

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

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

  1. 交易处理(在线游戏,金融,统计,投注,社交媒体,电信等)
    • 纵向扩展、横向扩展、容错/HA
  2. 服务后端(任何行业,任何应用)
    • 服务 REST,肥皂,彗星等
    • 充当消息中心/集成层
    • 纵向扩展、横向扩展、容错/HA
  3. 管理单元并发/并行性(任何应用)
    • 正确
    • 易于使用和理解
    • 只需将jar添加到您现有的JVM项目中(使用Scala,Java,Groovy或JRuby)
  4. 批量处理(任何行业)
    • 与批量数据源挂钩的骆驼集成
    • 参与者划分和征服批处理工作负载
  5. 通信枢纽(电信、网络媒体、移动媒体)
    • 纵向扩展、横向扩展、容错/HA
  6. 游戏服务器(在线游戏,投注)
    • 纵向扩展、横向扩展、容错/HA
  7. BI/数据挖掘/通用处理
    • 纵向扩展、横向扩展、容错/HA
  8. 在这里插入其他不错的用例

推荐