山一程--架构设计---Akka--dDDD
目标:基于 Akka 构建分布式系统
2021-06-14
重点:
1. 《Akka 应用模式 分布式应用程序设计实践指南》chapter 3
要谨防:系统的一个基础架构 和 系统的 一个业务域 模块之间建立过多的耦合,这样很难去优化系统. ( 例如:通知 和 发送邮件,, 管理用户 以及对这些用户做出决定 术语差异反映的抽
域实体: 可有键或复合键唯一标识的对象,实体是可变的,状态可变,但键值仍然保持不变. 可以直接映射到 Akka actor 中, actor 其实就是管理可变状态的, 且系统中的每个 actor 都可以使用其路径进行唯一标识,无论actor 包含的数据如何. 良好做法是使用 实体ID 作为这个actor名称.、
值对象:在其包含的属性之外没有实体那样的标识,包含相同数据的两个值对象被认为是相同的。 必须是不可变的。 Actor 之间传递的消息是值对象。这些消息是不可变的且不可标识的。只是数据容器,
可能包含对其他实体的引用.但是消息本身通常不是实体。
还可以使用值对象作为容纳 actor 状态的容器。
可根据需要在不同的状态之间切换,但状态本身没有任何身份,只有当它存在于actor内部时,才是可标识的。
如果是 具有相同状态但是各自又是独一无二的actor, 那么 actor 将被视为实体,而状态被视为值对象.

聚合 Aggregate
应用程序内对象的集合, 聚合创建了由系统中许多不同元素组成的逻辑分组. 每个聚合都会被绑定到聚合根,
聚合根是聚合中一个特殊实体,它负责管理该聚合中的其他成员。
删除法。如果在系统中选择一个特定的实体并删除它,是否会导致系统中其他实体被删除。
考虑 上下文语境,角色,职责
系统由具有地址的人组成:人-地址 ,删除人,则地址级联删除,无存在必要。
游戏与玩家的关系, 人的角色是玩家, 应该以 游戏 (上下文语境 为聚合根) p36


浙公网安备 33010602011771号