我最近开始使用akka事件源/集群分片进行开发,由于有了在线资源,我认为我了解了基本概念以及如何使用它创建简单的应用程序。但是,我正在努力将这种方法应用于稍微复杂的数据结构中:
作为示例,让我们考虑网页和URL。每个页面都可以用集群中的一个actor表示(具有其唯一的ID作为页面的路径,例如/ questions / 60037683)。
在每个页面上我都可以发出命令,例如
等
向单个页面发布命令时,一切都很容易,因为它是“手动编写”。但是我增加了网页可以有子级的复杂性,因此在创建“子级页面”时,我需要父级来更新对其子级的引用。
我想到了一些可能的方法,但感觉不完整。
我认为,我的真正问题是,在将消息传递给必须实际执行任务的其他参与者时,要正确处理期货的回报。
我很困惑,一些阅读资源将不胜感激。
感谢您的时间。
编辑:第一个版本正在谈论类通用的类文件系统结构。我更新了真实目的,网页和网址,并试图更好地阐明我的问题
[经过几个月的搜索,我得出的结论是,我正在做的是尝试使参与者具有事务性的行为,以便在创建某些对象时,父对象也以安全的方式进行更新,这意味着如果某个操作失败,所有成功完成的操作都将回滚。我认为,最好的模式是佐贺模式,它为整个过程增加了一些复杂性,但从长远来看,它可以满足我的需要。
基本上,我最终将主角实现为一个独立的部分(应该如此),可以接收创建命令并添加子命令。
然后有一个传奇演员负责创建内容,将子代添加到父代,如果在此过程中出现故障,则回滚所有内容。
如果其他人有更好的解决方案,我会很高兴听到它的声音