山一程--架构设计---Akka--dDDD

目标:基于 Akka 构建分布式系统


 

 


2021-06-14

重点:

1. 《Akka 应用模式 分布式应用程序设计实践指南》chapter 3

要谨防:系统的一个基础架构 和 系统的 一个业务域 模块之间建立过多的耦合,这样很难去优化系统. ( 例如:通知 和 发送邮件,, 管理用户 以及对这些用户做出决定  术语差异反映的抽

  域实体: 可有键或复合键唯一标识的对象,实体是可变的,状态可变,但键值仍然保持不变. 可以直接映射到 Akka actor 中, actor 其实就是管理可变状态的, 且系统中的每个 actor 都可以使用其路径进行唯一标识,无论actor 包含的数据如何. 良好做法是使用 实体ID 作为这个actor名称.、

     

  值对象:在其包含的属性之外没有实体那样的标识,包含相同数据的两个值对象被认为是相同的。 必须是不可变的。 Actor 之间传递的消息是值对象。这些消息是不可变的且不可标识的。只是数据容器,

可能包含对其他实体的引用.但是消息本身通常不是实体。

还可以使用值对象作为容纳 actor 状态的容器。

可根据需要在不同的状态之间切换,但状态本身没有任何身份,只有当它存在于actor内部时,才是可标识的。


 

如果是 具有相同状态但是各自又是独一无二的actor, 那么 actor 将被视为实体,而状态被视为值对象.


聚合 Aggregate

应用程序内对象的集合, 聚合创建了由系统中许多不同元素组成的逻辑分组. 每个聚合都会被绑定到聚合根,

聚合根是聚合中一个特殊实体,它负责管理该聚合中的其他成员。

删除法。如果在系统中选择一个特定的实体并删除它,是否会导致系统中其他实体被删除。

考虑 上下文语境,角色,职责

系统由具有地址的人组成:人-地址 ,删除人,则地址级联删除,无存在必要。

游戏与玩家的关系, 人的角色是玩家, 应该以 游戏 (上下文语境 为聚合根)   p36

 

 

posted @ 2021-06-14 11:10  君子之行  阅读(22)  评论(0)    收藏  举报