美文网首页
DDD 学习笔记(一)

DDD 学习笔记(一)

作者: 半亩房顶 | 来源:发表于2020-08-11 11:37 被阅读0次

前言

笔记内容中,图片以及定义等描述性内容主要来自于极客时间《DDD实战课程》,思考和QA多为结合网络资料自己思考后总结的。如有侵权,请联系删除。谢谢

软件架构模式的演进

  • 第一阶段是单机架构
    采用面向过程的设计方法,系统包括客户端 UI 层和数据库两层,采用 C/S 架构模式,整个系统围绕数据库驱动设计和开发,并且总是从设计数据库和字段开始。

  • 第二阶段是集中式架构
    采用面向对象的设计方法,系统包括业务接入层、业务逻辑层和数据库层,采用经典的三层架构,也有部分应用采用传统的 SOA 架构。这种架构容易使系统变得臃肿,可扩展性和弹性伸缩性差。

  • 第三阶段是分布式微服务架构
    随着微服务架构理念的提出,集中式架构正向分布式微服务架构演进。微服务架构可以很好地实现应用之间的解耦,解决单体应用扩展性和弹性伸缩能力不足的问题。

微服务架构

微服务架构旨在解决什么问题?

在单机和集中式架构这两种模式下,软件无法快速响应需求和业务的迅速变化,再究其原因,有系统依赖复杂,越来越笨重等多种因素,而微服务,旨在应用解耦,提高系统的扩展性和弹性伸缩能力,加速技术对于业务的响应和支持

微服务架构实现面临什么问题?

微服务将复杂系统拆分为多个子系统,而此时,如何拆分、粒度如何把握便成了最大的问题

DDD 和微服务的关系?

DDD 是一种架构设计方法,从业务领域视角划分领域边界,对于微服务的边界提供了一种解决方案
微服务是一种架构风格,关注的点偏技术,旨在更好的为业务提供支持

两者从本质上都是为了追求高响应力,而从业务视角去分离应用系统建设复杂度的手段。两者都强调根据业务发展,合理划分领域边界,持续调整现有架构,优化代码,即演进式架构。

DDD 如何解决微服务实现面临的问题?

DDD分战略设计和战术设计
DDD 战略设计会建立领域模型,用于指导微服务的设计和拆分。
通过事件风暴的方法,在业务专家的带领下,全员参与,梳理业务中出现的实体、命令、事件等领域对象,并将这些对象根据其关联性组合、划分,最终形成 聚合、限界上下文等边界,建立领域模型。

领域

我们可以用三步来划定领域模型和微服务的边界

  • 第一步:在事件风暴中梳理业务过程中的用户操作、事件以及外部依赖关系等,根据这些要素梳理出领域实体等领域对象。
  • 第二步:根据领域实体之间的业务关联性,将业务紧密相关的实体进行组合形成聚合,同时确定聚合中的聚合根、值对象和实体。在这个图里,聚合之间的边界是第一层边界,它们在同一个微服务实例中运行,这个边界是逻辑边界,所以用虚线表示。
  • 第三步:根据业务及语义边界等因素,将一个或者多个聚合划定在一个限界上下文内,形成领域模型。在这个图里,限界上下文之间的边界是第二层边界,这一层边界可能就是未来微服务的边界,不同限界上下文内的领域逻辑被隔离在不同的微服务实例中运行,物理上相互隔离,所以是物理边界,边界之间用实线来表示。

欢迎大家关注我的公众号


半亩房顶

相关文章

  • DDD 学习笔记(一)

    前言 笔记内容中,图片以及定义等描述性内容主要来自于极客时间《DDD实战课程》,思考和QA多为结合网络资料自己思考...

  • DDD理论学习系列——案例及目录

    目录DDD理论学习系列(1)-- 通用语言DDD理论学习系列(2)-- 领域DDD理论学习系列(3)-- 限界上下...

  • 领域驱动设计读书笔记-术语介绍

    本文为极客时间《DDD实战》的读书笔记 DDD-基础 DDD基础介绍 微服务设计和拆分的困境 对于微服务的拆分粒度...

  • DDD战略2 领域知识

    GitChat课程《领域驱动设计--战略篇》笔记,课程作者张逸 一.DDD开发中团队的沟通与协作 DDD先要识别问...

  • 什么是DDD领域驱动设计?

    什么是DDD? DDD全称为(Domain-Driven Design,简称DDD),领域驱动设计 为什么要学习D...

  • 学习笔记DDD(其六)

    天鹰(中南财大——博士研究生)E-mail: yanbinglh@163.com 三重差分Stata操作(注意:此...

  • 资深架构师谈 DDD 兴起,解决难题与实现步骤

    前言 - DDD为什么能火起来? 我们先不讨论DDD的定义, 先梳理一下DDD火起来的背景, 根据我学习的...

  • 学习笔记DID和DDD(其四)

    学习笔记——双重差分(DID)和三重差分(DDD) 天鹰(中南财大——博士研究生)E-mail: yanbingl...

  • ddd笔记

    1.核心域,是项目的重要战略目标,属于业务范畴 2.子域,分为三种,核心域(需要花大精力打磨),支撑子域(外包或者...

  • DDD学习

    网站 1.DDD社区http://dddcommunity.org/ 2.汤雪华的博客http://www.cnb...

网友评论

      本文标题:DDD 学习笔记(一)

      本文链接:https://www.haomeiwen.com/subject/fftldktx.html