如何创建在 akka 中表达层次结构的参与者?

How do I create actors that express hierarchical structures in akka?

我最近开始使用 akka 事件 sourcing/cluster 分片进行开发,感谢在线资源,我认为我了解了基本概念以及如何使用它创建简单的应用程序。然而,我正在努力将这种方法应用于稍微复杂的数据结构中:

例如,让我们考虑一下网页和 URL。 每个页面都可以用集群中的一个参与者表示(将其唯一 ID 作为页面的路径,例如 /questions/60037683)。

在每个页面上我都可以发出诸如

之类的命令

向单个页面发出命令时,一切都很简单 "written on the manual"。但是我增加了网页可以有子页面的复杂性,所以在创建 "child page" 时,我需要父更新对其子页面的引用。

我想到了一些可能的方法,但感觉不完整。

我认为,我真正的问题是,在将消息转发给必须实际执行该工作的其他参与者时,正确处理 Futures 的 return。

我很困惑,如果能提供一些阅读资源,我们将不胜感激。

感谢您的宝贵时间。

编辑:第一个版本讨论的是通用的分层文件系统结构。我更新了真实目的、网页和网址,并试图更好地阐明我的问题

经过几个月的搜索,我得出的结论是,我正在做的是尝试让 actor 进行交易,这样当创建某些东西时,父级也会以一种安全的方式更新,这意味着如果一个操作失败,所有成功完成的操作都会回滚。 在我看来,最好的模式被证明是 saga 模式,它给整个过程增加了一点复杂性,但在漫长的过程中 运行 它满足了我的需要。

基本上我最终将主要角色实现为一个独立的部分(应该是),它可以接收创建命令和添加子命令。

然后有一个 saga actor 负责创建内容、将子项添加到父项并在过程中出现故障时回滚所有内容。

如果其他人有更好的解决方案,我会很高兴听到