如何使用actor模式组织代码

时间:2019-05-12 17:43:15

标签: scala akka actor

我正在将Java应用程序转换为Akka,以了解参与者模式。

比方说,我具有三个通常的层(应用程序,域,基础结构)。我的域层包含一些集合,例如User,Car,...

问题: 因为这些聚合具有可变状态,所以我应该将这些聚合转换为参与者吗?它们具有可变状态,并且看来参与者是适合此状态的解决方案。

1 个答案:

答案 0 :(得分:0)

可变状态不是您应该使用Actor的原因。特别是如果您想将可变状态暴露给外部世界。使用Akka和Actors的主要论据是可伸缩性和并发性。在其他情况下,它只会增加不必要的复杂性。

此外,参与者遵循Erlang的“让它崩溃”容错模型。这意味着您的演员总是有机会破裂而您失去状态。通常,具有重要状态的参与者会移到参与者层次结构的顶部(这样的想法是,最好将所有危险操作传播给子参与者,因此在失败的情况下它们会崩溃并重新启动它们,从而保留所有重要数据到位)。

关于可变actor状态,我建议您阅读that文章和these最佳状态处理实践。