0

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

谢谢。

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

4

1 回答 1

1

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

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

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

关于你的笔记,如果演员真的是无状态的,那么就没有必要坚持导致孩子被创建的事件,因为它们可以按需重新创建。如果孩子的存在确实需要恢复,那么actor就不是无国籍的。在这种情况下,坚持这些事件可能确实有意义。

于 2014-12-15T15:02:03.543 回答