微服务架构笔记

微服务架构关键特征

是否运行在一个独立的进程中

是否采用轻量级的通信协议

是否可以独立部署

微服务架构带来的好处

组件化

弹性部署

去中心化

快速响应

领域事件带来的好处

解耦微服务(限界上下文);

帮助我们深入理解领域模型;

提供审计和报告的数据来源;

迈向事件溯源(Event Sourcing)和CQRS等。

聚合有以下一些特点:

每个聚合有一个根和一个边界,边界定义了一个聚合内部有哪些实体或值对象,根是聚合内的某个实体;

聚合内部的对象之间可以相互引用,但是聚合外部如果要访问聚合内部的对象时,必须通过聚合根开始导航,绝对不能绕过聚合根直接访问聚合内的对象,也就是说聚合根是外部可以保持 对它的引用的唯一元素;

聚合内除根以外的其他实体的唯一标识都是本地标识,也就是只要在聚合内部保持唯一即可,因为它们总是从属于这个聚合的;

聚合根负责与外部其他对象打交道并维护自己内部的业务规则;

基于聚合的以上概念,我们可以推论出从数据库查询时的单元也是以聚合为一个单元,也就是说我们不能直接查询聚合内部的某个非根的对象;

聚合内部的对象可以保持对其他聚合根的引用;

删除一个聚合根时必须同时删除该聚合内的所有相关对象,因为他们都同属于一个聚合,是一个完整的概念;

关于如何识别聚合以及聚合根的问题:

有独立存在的意义,即它是不依赖于其他对象的存在它才有意义的;

可以被独立访问的,还是必须通过某个其他对象导航得到的;

值对象

不需要有唯一标识符,只要所有属性相同就认为是相同的对象,例如客户的地址信息

JSRUN notes