DDD与微服务架构

一、绪论

   由于本人有过微服务架构方面实战的经验,且公司方面当前项目架构为DDD,故本文从微服务架构出发,探索DDD与微服务架构的异同以及如何实践DDD。

二、为什么使用领域驱动

在使用DDD前,我们首先需要弄明白DDD的意义即我们为什么要去使用DDD。

采用DDD的设计思想,业务逻辑不再集中在几个大型的类上,而是由大量相对较小的领域对象组成,这些类具备自己的状态和行为,与现实领域的业务对象映射。基于领域驱动的设计,保证了系统的可维护性、可扩展性和可复用性,在处理复杂业务逻辑方面有先天的优势。
领域模型是领域驱动的核心。领域模型通过聚合(Aggregate)组织在一起,聚合间有明显的业务边界,这些边界将领域划分为一个个界限上下文。

三、相关技术概述

2.1、实体
实体是领域中需要唯一标识的领域概念,实体有生命周期,实体被创建后可能会被持久化到数据库。
2.2、值对象
用程序的方式来表达就是,如果两个对象的所有属性都相同,则被认为是同一个对象,那么我们就可以把这种对象设计为值对象。因此,值对象没有唯一标识,这是它和实体最大的不同。
2.3、聚合及聚合根
聚合定义了一组具有内聚关系的相关对象的集合,一个聚合中可以包含多个实体和值对象,因此聚合也可以称为根实体。
聚合根是DDD中得到一个概念,是一种更大范围内的封装,把一组有相同生命周期、在业务上不可分割的实体和值对象放在一起考虑,只有根实体可以对外暴露引用(这是一种内聚性的表现)
2.4、边界上下文
每个领域实体都有属于自己的边界上下文(context),它明确限定了每个模型的应用范围,在context中模型在逻辑上要统一,而不用考虑它是不是适用于其他context(其含义见例子),不同context下的业务相互通信涉及到跨边界的集成,集成不是简单的RPC服务调用,而是需要一个专门的防腐层做转化。
举例:会员在网站A表示买主,在网站B表示客户,虽然很多属性是一样的,但是二者在不同的context下语义和概念是有差别的,需要用防腐层做转换。
2.5、仓储/资源库
领域模型中的对象不会一直在内存中活动,当它不活动时会被持久化到数据库中,然后当需要的时候我们会重建该对象,重建对象就是根据数据库中已存储的对象的状态重新创建对象。
仓储里存放的对象一定是聚合,只为聚合设计仓储。
仓储的重要特征是分为仓储定义和仓储实现部分。这样设计的原因是:仓储背后的实现都是在和数据库打交道,但是我们又不希望调用方(如应用层)把重点放在如何从数据库获取数据的问题上。
在这里插入图片描述

2.5、Pojo,Bo
POJO:简单对象,专指只有 setter / getter / toString 的简单类
BO: 主要作用是把业务逻辑封装为一个对象。这个对象可以包括一个或多个其它的对象。

四、逻辑架构图

在这里插入图片描述

五、微服务架构于DDD联系

(1) 限界上下文相当于微服务架构里的一个微服务项目进程,多个限界上下文组成一个领域,不同领域之间有明显的边界划分
(2)在微服务设计时应该首先识别出DDD中的聚合根
(3)在微服务之间集成时应采用DDD中的防腐层

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《中台架构与实现:基于DDD和微服务》PDF 是一本关于中台架构和实现的书籍,主要介绍了中台架构与实践,以及如何在实际项目中应用领域驱动设计(DDD)和微服务。 中台架构是指将企业内部各个业务领域进行分解和重组,形成统一的中台平台,在这个平台上集中管理和服务各个业务。通过引入中台架构,企业能够实现业务模块的解耦和重用,提高系统的可扩展性和灵活性。 领域驱动设计(DDD)是一种软件设计方法,它将业务领域作为软件设计的核心,通过对领域本质的理解和建模,来设计高质量的软件系统。《中台架构与实现:基于DDD和微服务》PDF强调了在中台架构中应用DDD的重要性,指导读者如何将DDD的思想和方法融入到实际项目中。 微服务是一种架构风格,用于解决大型复杂系统的开发和维护问题。它将一个大型的系统拆分为多个小型可独立部署的服务,每个服务专注于一个特定的业务功能。《中台架构与实现:基于DDD和微服务》PDF介绍了如何将微服务与DDD结合起来,通过微服务的解耦和独立部署的特性,来实现中台架构的灵活性和可扩展性。 整本书通过理论和实践相结合的方式,详细介绍了中台架构和DDD与微服务的相关概念和方法,同时结合实际案例,展示了如何应用这些概念和方法进行系统设计和开发。这本书对于想要学习中台架构、DDD和微服务的读者来说是一本很好的参考资料,可以帮助读者理解中台架构的优势和应用,以及如何应用DDD和微服务进行系统设计和开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值