Akka 框架的最佳用例是什么

新手上路,请多包涵

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

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

原文由 StaxMan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 690
2 个回答

到目前为止,我已经在两个实际项目中非常成功地使用了它。两者都处于接近实时的交通信息领域(如高速公路上的汽车交通),分布在多个节点上,集成多方之间的消息,可靠的后端系统。我还不能随意提供有关客户的具体信息,当我确定可以将其添加为参考时。

Akka 在这些项目上确实取得了成功,尽管我们是在它的 0.7 版本上开始的。 (顺便说一句,我们正在使用scala)

最大的优势之一是你可以很容易地用参与者和消息组成一个系统,几乎没有样板,它的扩展性非常好,没有手动线程的所有复杂性,你几乎可以免费获得对象之间的异步消息传递。

它非常适合对任何类型的异步消息处理进行建模。与其他任何风格相比,我更愿意以这种风格编写任何类型的(网络)服务系统。 (您是否曾尝试使用 JAX-WS 编写异步 Web 服务(服务器端)?这需要大量的管道)。所以我会说任何不想挂在其组件之一上的系统,因为所有内容都是使用同步方法隐式调用的,并且那个组件正在锁定某些东西。它非常稳定,让它崩溃 + supervisor 解决失败的方法确实很有效。一切都很容易以编程方式设置,而不难进行单元测试。

然后是优秀的附加模块。 Camel 模块确实可以很好地插入 Akka,并支持使用可配置端点轻松开发异步服务。

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

原文由 Raymond Roestenburg 发布,翻译遵循 CC BY-SA 2.5 许可协议

免责声明:我是 Akka 的 PO

除了提供并发大杂烩之外,它更容易推理和获得正确(参与者、代理、数据流并发)以及 STM 形式的并发控制。

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

  1. 交易处理(在线游戏、金融、统计、博彩、社交媒体、电信……)
    • 纵向扩展、横向扩展、容错/HA
  2. 服务后端(任何行业,任何应用程序)
    • 服务 REST、SOAP、cometd 等
    • 充当消息中心/集成层
    • 纵向扩展、横向扩展、容错/HA
  3. 管理单元并发/并行(任何应用程序)
    • 正确的
    • 易于使用和理解
    • 只需将 jar 添加到您现有的 JVM 项目(使用 Scala、Java、Groovy 或 JRuby)
  4. 批处理(任何行业)
    • Camel 集成以连接批处理数据源
    • 演员分而治之批处理工作负载
  5. 通讯枢纽(电信、网络媒体、移动媒体)
    • 纵向扩展、横向扩展、容错/HA
  6. 游戏服务器(网络游戏、博彩)
    • 纵向扩展、横向扩展、容错/HA
  7. BI/数据挖掘/通用处理
    • 纵向扩展、横向扩展、容错/HA
  8. 在此处插入其他不错的用例

原文由 Viktor Klang 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题