一. 什么是领域驱动模型(DDD)?

领域驱动模型一种设计思想,我们又称为DDD设计思想。是一种为了解决传统设计思想带来的维护困难,沟通困难和交互困难而产生的一种新的思想。也解决了在部分公司中,一个项目组就是一套服务,不同项目组中又相互通过RPC访问,相互之间交互的安全保障。

二. 领域驱动模型解决了什么问题

在传统微服务的单服务设计上,我们通常只顾自己开发,只顾自己业务,只管理自己数据库,一旦其他服务需要使用另一个服务上的某些功能时,我们通常需要使用HTTP来内网访问达到目的,或是使用RPC来访问业务。首先假设我们需要用HTTP来访问其他服务接口,首先,我们需要知道对应服务的URL,其次需要开发方提供对应的参数VO,一旦VO变化,开发方忘记通知下游业务方,下游业务方是无法感知的。接下来会讲解模型中每一层概念,会一步步证明领域驱动模型的出现,降低了微服务下,服务之间的耦合程度,提高了内聚力。

三. 设计领域驱动模型

传统设计模型:

领域驱动模型:

以下介绍的层级,即是领域驱动模型中代表的各个领域,去负责自己的范围:

API层:

作用:存放要对外暴露的RPC接口的service层。

意义:其他服务不需要了解自身服务的业务实现,这一层很薄,只需要提供出去,其他服务知道它是干嘛的,就足够了,即让其他服务调用了自身业务,又没有暴露自身的业务实现,降低安全风险。

Web层:

作用:可以对等于传统设计的controller层,用来处理参数校验,转发等一些简单的业务。

意义:与Service层剥离,其目的是为了保障biz层的独立性,但是在maven结构中又引用biz层,可以理解为biz的下游,当需要biz处理业务的时候,通知biz帮忙处理,但是不参与biz层的业务实现,只提交对应参数。

Biz层:

作用:biz是Business的缩写,即业务逻辑层,可以对等于传统设计的Service层,存放的业务逻辑,biz中也存在service,biz中的service存放的是内部使用,不对外提供的service。api层和biz层的service业务逻辑实现都存放在biz层中。

意义:剥离业务逻辑,防止业务逻辑暴露,同时与dal层剥离,保证自身独立性,不与dal层耦合。这一层也是服务核心层,是处理下游提交的需求与数据之间交互的重要层级。

dal层:

作用:dal是Data Access Layer的英文缩写,即数据访问层,可以对等于传统设计的Dao层,主要是用来负责与数据的交互,比如Mysql、ES、HBase等。通常我们的Mybatis的Mapper和JPA就在这一层编写。

意义:让业务与数据隔离,dal层成为了biz层的上游,负责为biz的业务实现提供对应数据。同时dal与数据中间件直接映射,形成绑定关系,其他服务需要接手数据层,可以直接引用,达到高内聚的目的,又降低了代码的耦合性,提高了开发效率。

domain层:

作用:存放一些通用的,可以对外暴露的Object、Enum等。

意义:通常用来制定一些标准,比如共同使用的枚举、常量的定义,一般作为上游服务,提供给下游服务,需要按照标准实施的内容。

config层:

作用:存放一些通用的配置,如缓存、中间件、日志和消息消费等通用配置,注意一点的是,消息消费简单的处理是放在该层,涉及到本服务数据交互的业务,还是需要写在biz层,在biz中去实现较为复杂的业务,消息消费放在该层中也是为了便于维护。

意义:配置独立化,便于管理与维护。

client层:

作用:存放调用第三放平台,外部服务等RPC或HTTP接口服务等。如通过pom引入其他服务的api层,编写调用http接口的实现,但与本服务数据交互的业务仍在biz层中实现。

意义:第三方内容独立化,便于管理与维护。

yang模型中rpc_领域驱动模型(DDD)设计讲解相关推荐

  1. 领域驱动模型(DDD)学习笔记

    在复杂的业务中,DDD正在逐步取代MVC模型,下面就让我们一起来认识一下领域驱动模型(DDD). 文章目录 一.DDD架构风格 二.DDD架构实现图 1. User Interface层 1.1 DT ...

  2. 领域驱动模型(DDD)

    领域驱动模型(DDD) 文章目录 领域驱动模型(DDD) 1. 简介 2. 一些基本概念 实体(entity) 值对象(value object) 聚合及聚合根(aggregate.aggregate ...

  3. 领域驱动模型VO,BO,PO,DO,DTO概念及其区别

    本文来说下领域驱动模型VO,BO,PO,DO,DTO 概念及其区别 文章目录 概述 概念以及区别 本文小结 概述 随着编程工业化水平的不断加深,各种编程模型层出不穷(比如MVC,MVP等等),伴随着这 ...

  4. 谈谈微服务架构中的领域驱动设计

    谈谈微服务架构中的领域驱动设计 https://mp.weixin.qq.com/s/43HSud6ijdVzPA_wdLrxzQ 谈谈微服务架构中的领域驱动设计 本文是关于领域驱动设计与微服务架构结 ...

  5. linux 统一设备模型 pci,Linux设备驱动模型摘抄

    Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄Linux设备驱动模型摘抄 Linux设备驱动模型摘抄(1) Linux统一设备模型 简介 Li ...

  6. 领域驱动模型VO,BO,PO,DO,DTO概念介绍和区别

    先来一张图,有一个直观地感受: 概念介绍 VO(View Object)视图对象 用于展示层(和控制层Controller共同属于表现层),它的作用是把某个指定页面(或组件)的所有数据封装起来.说白了 ...

  7. Uboot中的DM驱动模型

    这一篇我们学习uboot中的驱动模型的初始化,在uboot中,驱动模型被称为Driver Model,简称DM.这种驱动模型为uboot中的各类驱动提供了统一的接口. 1. 数据结构及概念 DM模型主 ...

  8. 在项目中引入领域驱动设计的经验

    Chris Patuzzo近期在一次演讲中介绍了领域驱动设计(DDD)的原则,并结合一个基于Ruby on Rails的真实项目进行讲解.在这次项目之前,Chris所在的团队为重新设计公司的主营网站所 ...

  9. 演进架构中的领域驱动设计

    原文链接:http://www.infoq.com/cn/articles/ddd-evolving-architecture 作者 Mat Wall and Nik Silver 译者 王丽娟 发布 ...

最新文章

  1. linux一条命令添加用户并设置密码,linux中如何通过命令行来添加用户并设置密码...
  2. 13---Net基础加强
  3. android 手机号码去重,第135天:移动端开发经验总结
  4. 多年前那些优秀的工程师,后来都去哪儿了?
  5. 7.3 MASS批量修改数据(Excel文件上传数据)
  6. 95-38-150-Buffer-CompositeByteBuf
  7. spring cloud超时时间设置
  8. 【机器学习】径向基(RBF)神经网络的tensorflow实现
  9. Zookeeper学习笔记——1 单机版本环境搭建
  10. VS2010 在Win 7 附加w3wp.exe进程进行调试
  11. (8)matplotlib 将点连成线
  12. html中支持的常用中文字体
  13. 新装的电脑没有打开图片的软件怎么办?教你打开Windows照片查看器
  14. 不用光盘,教你一招让win10系统恢复出厂设置
  15. Google Chrome 扩展程序
  16. ShaderToy Matlab OpenGL实现流动Love
  17. mvn No proxies configured downloading directly
  18. 揭开“QUIC”的神秘面纱
  19. opencv膨胀操作
  20. 2021年东莞东华中学高考成绩查询,东莞中学排名前十名,2021年东莞中学排名一览表...

热门文章

  1. 国内厂商 Onyx 违反 GPL 协议,中国开源何去何从?
  2. Facebook面向所有用户开放人脸识别功能;福布斯美国最具创新力领袖公布;AMD:将发新BIOS 优化三代锐龙加速性能……...
  3. OpenStack精华问答 | 如何处理常见故障?
  4. 语音识别现状与工程师必备技能
  5. mvn install java版本,maven的打包命令--assemblyinstall和maven update之后jdk版本变回1.5的问题...
  6. 电脑两边黑边怎么还原_Mac电脑录制的视频有黑边?如何解决
  7. 怎么测试服务器的性能,如何测试服务器性能
  8. linux测试手柄,Linux Joystick 介绍
  9. SpringBoot 整合 Shiro Thymeleaf Mysql 动态授权
  10. node+express创建第一个node项目