应该让哪些演员坚持下去?

时间:2017-03-05 15:34:58

标签: akka akka-persistence

让我们想象一个典型的Akka应用程序,它具有类似于Actors结构的树,即一小部分(2-3)顶层角色,可以管理层次结构底层的数千个小角色。似乎有两种持久性方法:

  1. 只让顶级演员持久。儿童演员依靠父母进行任何州恢复等。
  2. 让所有的儿童演员都持久。我们最终可能有数千个持久性ID,每个角色都可以恢复它自己的状态。
  3. 在选择这些方法时有哪些注意事项?是否有任何典型的用例适合一个但不适用于其他用例?

    问题应该是抽象的,但这是一个例子。假设我们为应用程序的每个用户都有一个actor,并且这些actor共享同一个父actor。如果我们想要保留每个用户的电子邮件地址及其任何更新,我们可以让每个用户都持久化,或者我们可以让顶级actor保持持久。

1 个答案:

答案 0 :(得分:4)

在那种情况下,我可能会采用第二种方法。您只能在“已选中”时恢复用户actor的事件。使这种方法更加方便的原因是用户角色的行为可以根据其状态而改变。例如。如果用户注册,你当然不希望多次坚持相同的“注册”事件。或者,如果用户停用其帐户,您当然不希望让他更新他的电子邮件等。此外,所有更改都会保存为一系列事件。所以没有数据丢失。

另一方面,如果您使用第一种方法,则必须在父级actor恢复时重新创建所有子actor,以便设置其状态,以便您可以避免以前提到的不良行为。