[英]Keep an Entity as State or Child Actor in Akka
考虑在线购物的用例,其中我有库存和商品。 我看到有几个选项可以使用 Akka 演员对此进行建模。
例如,创建一个名为 Inventory 的持久参与者,将项目保持在其状态中的列表中。
创建一个名为 Inventory 的角色,然后为每个项目创建一个子持久角色。 每个项目保持自己的状态。
问题是 - 第二个选项有意义吗? 我什么时候应该将实体保留为演员的状态或将其建模为子演员? 在这种情况下我们应该考虑什么?
根据我的理解,选项2更好。
库存可能有 sum(items) 的价格,如果 item 的价格发生变化,则选项 1 不是一个好的选择。
如果item是单个actor,选项2很容易处理item引起的变化。
这可能是主观的,我更喜欢选项二。
我什么时候应该将实体保留为演员的状态或将其建模为子演员?
根据我的个人经验,当您具有分层状态并且 2 级状态需要单独操作时,为每个 2 级实体创建子 Actor 是有意义的。 例如:
case class Employee(Id, Name, Address)
在这种情况下,如果所有员工都只有顶级参与者,则它必须具有可能如下所示的状态:
Map[Id, Employee]
如果消息如下: AddEmployee(Employee)
, DeleteEmployee(Id)
那么这没什么大不了的。 但是如果它们是这样的: UpdateName(Id, Name)
或UpdateAddress(Id, Address)
那么在该 Map 上管理这些操作就变得很麻烦。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.