微服务架构关键特征
是否运行在一个独立的进程中
是否采用轻量级的通信协议
是否可以独立部署
微服务架构带来的好处
组件化
弹性部署
去中心化
快速响应
领域事件带来的好处
解耦微服务(限界上下文);
帮助我们深入理解领域模型;
提供审计和报告的数据来源;
迈向事件溯源(Event Sourcing)和CQRS等。
聚合有以下一些特点:
每个聚合有一个根和一个边界,边界定义了一个聚合内部有哪些实体或值对象,根是聚合内的某个实体;
聚合内部的对象之间可以相互引用,但是聚合外部如果要访问聚合内部的对象时,必须通过聚合根开始导航,绝对不能绕过聚合根直接访问聚合内的对象,也就是说聚合根是外部可以保持 对它的引用的唯一元素;
聚合内除根以外的其他实体的唯一标识都是本地标识,也就是只要在聚合内部保持唯一即可,因为它们总是从属于这个聚合的;
聚合根负责与外部其他对象打交道并维护自己内部的业务规则;
基于聚合的以上概念,我们可以推论出从数据库查询时的单元也是以聚合为一个单元,也就是说我们不能直接查询聚合内部的某个非根的对象;
聚合内部的对象可以保持对其他聚合根的引用;
删除一个聚合根时必须同时删除该聚合内的所有相关对象,因为他们都同属于一个聚合,是一个完整的概念;
关于如何识别聚合以及聚合根的问题:
有独立存在的意义,即它是不依赖于其他对象的存在它才有意义的;
可以被独立访问的,还是必须通过某个其他对象导航得到的;
值对象
不需要有唯一标识符,只要所有属性相同就认为是相同的对象,例如客户的地址信息