对架构的理解(手稿)(未完待续...)

前言

在网络上关于架构的文章有许多,能看到的19年火热的”中台”概念,以及又开始流行的 “DDD”,但对这些知识的理解总是容易混淆,以及为什么需要这些架构方法论,它们能解决的哪些问题,区别在哪等存在着疑惑。就拿之前实习碰到的“域”概念来说,我依然没能想明白设计者是从哪方面去考虑设计的。这篇文章主要是来记录自己对架构设计的笔记和理解。

SPI

微服务 中台 DDD SOA

可以把微服务当成是去除了 ESB 的SOA

SOA 是一种服务治理的方法论,可以通过服务总线 ESB 来实现

中台架构,简单地说,就是企业级能力的复用,一个种方法论,企业治理思想

微服务,是可独立开发、维护、部署的小型业务单元,是一种技术架构方式

CQRS

贫血模型

https://zhuanlan.zhihu.com/p/70371288 关于DDD比较好的文章

简单来说,DDD 的本质是一种软件设计方法,而微服务架构是具体的实现方式。微服务架构虽好,但是他并没有给出如何对复杂系统进行分解的具体方法论,而 DDD 正好就是解决方案。

DDD 强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是脱离领域模型来谈微服务设计。

中台本质是领域模型,微服务是领域模型的系统落地,DDD 是一种设计思想,它可以同时指导中台领域建模型和微服务设计,这就是 DDD、中台和微服务的铁三角关系。如何学好 DDD 呢?我认为遵循下面这 3 个步骤就可以了:

  • 第 1 步:理解 DDD 的核心知识体系和设计思想;
  • 第 2 步:和项目团队一起用事件风暴方法构建领域模型;
  • 第 3 步:根据领域模型和正确的微服务设计方法亲自动手设计几个微服务(实战)。

DDD 和 MVC

  1. VO、DTO、PO

VO 就是传给view视图的对象,比如在一个博客展示近期热门内容:

涉及到两个实体,一个是user,一个是blog。但是在展示的时候需要这两个实体的部分数据,那么这个时候就可以创建一个 userAndBlogVO对象,包含两个实体要展示的数据。

而PO是对应持久层中的数据对象。

img