DDD 聚合为演员

DDD Aggregates as actors

Vaughn Vernon 在此处描述了使用 Actors 作为 DDD 聚合: Vaughn Vernon on the Actor Model and Domain-Driven Design

考虑发票聚合: 是否要使用 Azure Service Fabric Actor 的生命周期,以便可以使用 1 个 Actor 来保存 1 个发票的状态(比如具有身份 "ABC"),并且可靠存储代表该发票的状态。或者是否需要某种 Flyweight 实现来选择可用的 Actor 实例并在调用期间加载 Invoice "ABC" 的状态?

第一个选项似乎符合 Actor 的想法,但这意味着 Fabric 基础设施在设计时需要考虑到这一点,系统中的每个发票都有 1 个 Actor(一个无限且无疑非常大的数字)

Service Fabric 绝对是为这种场景设计的。您需要巧妙地划分状态,以便容纳大量参与者——您必须考虑数据的潜在大小、参与者的数量和节点的大小。

Service Fabric 不支持(还?)的是一种自动重新分区服务的方法。因此,如果您从 3 个分区开始,并且在某个时候您意识到您需要更多分区,那么您需要自己处理。您需要进行一些试验,看看您需要多少个分区,但通常建议您从较大的分区开始。

值得一读 https://azure.microsoft.com/en-gb/documentation/articles/service-fabric-concepts-partitioning/ 并看看评论。