【问题标题】:Design of a simple REST API with Akka + Persistence使用 Akka + Persistence 设计一个简单的 REST API
【发布时间】:2014-12-22 22:47:39
【问题描述】:

我正在构建一个简单的 REST API,用于生成一些必须从 API 中定期创建和发送的对象。对象的性质无关紧要,支持 REST 接口的框架(Spray、Play Framework 等)也无关紧要。我的问题是,对于这个使用 Akka 的系统来说,一个好的可扩展的 Actor 设计是什么?假设服务崩溃或被迁移或任何导致它停止的原因。为了恢复关于必须发送哪些对象以及何时发送的任务描述,akka-persistence 是一个很好的方法吗?还是将这些东西保存在传统数据库中更好?

谢谢。

注意:我也想知道,假设有一些演员自己不是有状态的,但创建了许多儿童演员,如果使用 akka-persistence 来重播导致该演员再次创建他的孩子的消息(孩子也是无状态的)。

【问题讨论】:

  • github.com/interagent/http-api-design 指南摘自 Heroku 工作。
  • 您对 akka-persistence 不是一个好方法有什么顾虑?
  • @EricZoerner 不用担心,只是想知道这是否适合作为一个好的用例,或者在这种情况下可以使用更简洁的东西。

标签: rest akka akka-persistence


【解决方案1】:

在传统数据库中,您很可能最终会使用时间戳和事件对其进行建模,而使用事件溯源,这已经是本机模型了。

Akka-persistence 非常适合这种情况,因为它将持久化每个事件,即必须创建和定期发送哪些对象。当事件数量变得非常大时,快照支持还有助于加快恢复速度。

在崩溃或迁移的情况下,恢复过程会处理得很好。

关于您的注释,如果参与者真的是无状态的,那么就不需要持久化导致创建子级的事件,因为它们可以按需重新创建。如果孩子的存在确实需要恢复,那么actor就不是无国籍的。在这种情况下,持久化这些事件可能确实有意义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-30
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多