实例——领域驱动设计DDD
简单总结下在项目中DDD的应用过程。
基于 DDD 的微服务设计通常采用事件风暴方法。
通过事件风暴完成领域模型设计,划分出微服务逻辑边界和物理边界,定义领域模型中的领域对象,指导微服务设计和开发。
这里的重点,是根据领域划分出清晰的边界,而且这个过程是随着领域知识的深入,不断迭代的。
事件风暴的过程,通常包括产品愿景、场景分析、领域建模、微服务设计和拆分等几步。
1.产品愿景
产品愿景是用于确定产品或项目目的,明确市场需要和核心需求。
比如下面介绍的系统,是个大数据分析软件,指在根据具体规则对数据生成预警,数据量大概在PB级别。
当用户创建分析任务,对人员的数据实时计算预警结果,并触发用户。
2.场景分析
场景分析是根据产品愿景和用户需求,确定需要满足的业务场景。
分析本系统后业务场景有
- 用户选择规则和人员,创建分析任务。
- 任务创建后,需要执行审批。
- 根据分析任务和人员数据,生成预警。
- 根据分析任务和预警数据,生成通知触发用户。
3.领域建模
领域建模是根据业务场景和问题域进行分析,建立领域模型,划分出清晰的边界。
向上通过限界上下文指导微服务边界设计,向下通过聚合指导实体的对象设计。
4.微服务设计和拆分
微服务拆分和设计是结合业务限界上下文与技术因素,对服务的粒度、分层、边界划分、依赖关系和集成关系进行梳理。
5.详细设计
详细设计是结合具体的业务功能来开展,主要工作包括:系统界面、数据库表以及字段、服务参数规约及功能等。
这里就是常规的UML和ER图的设计了。
实例——领域驱动设计DDD相关推荐
- 领域驱动设计 (DDD)实例分析
本文结合实例来分析下领域驱动设计 (DDD) 文章目录 啥是DDD 啥是驱动 DDD误解 啥时候用 啥是复杂 具体解决啥 为啥会耦合 咋解决耦合 咋做分治 咋做分界 模块 分层 咋落地 本文小结 啥是 ...
- 领域驱动设计(DDD)实践之路(三):如何设计聚合
本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/oAD25H0UKH4zujxFDRXu9Q 作者:wenbo zhang [领域驱动设计实践 ...
- 领域驱动设计(DDD)实践之路(四):领域驱动在微服务设计中的应用
这是"领域驱动设计实践之路"系列的第四篇文章,从单体架构的弊端引入微服务,结合领域驱动的概念介绍了如何做微服务划分.设计领域模型并展示了整体的微服务化的系统架构设计.结合分层架构. ...
- 领域驱动设计DDD(一)
领域驱动设计DDD(一) 一.何为领域驱动设计 二.模型驱动设计 (一)分层架构 (二)实体 (三)值对象 (四)服务 (五)模块 (六)聚合 (七)工厂 (八)资源库 三.面向深层理解的重构 (一) ...
- 领域驱动设计(DDD:Domain-Driven Design)
领域驱动设计(DDD:Domain-Driven Design) Eric Evans的"Domain-Driven Design领域驱动设计"简称DDD,Evans DDD是一套 ...
- python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))...
昨日内容回顾 1. 三个类 ChangeList,封装列表页面需要的所有数据.StarkConfig,生成URL和视图对应关系 + 默认配置 AdminSite,用于保存 数据库类 和 处理该类的对象 ...
- 领域驱动设计DDD之读书笔记
查看文章 领域驱动设计DDD之读书笔记 转载原地址:http://hi.baidu.com/lijiangzj 2007-08-17 16:53 一.当前Java软件开发中几种认识误区 Hibe ...
- JPA实现领域驱动设计(DDD) 中值对象的持久化
文章目录 什么是DDD值对象? 实现方式 单一值对象 改变表中映射的字段的名称 根据值对象的单一属性查询或多属性的动态查询 多个值对象 根据值对象的单一属性查询或多属性的动态查询 什么是DDD值对象? ...
- 领域驱动设计(DDD)-基础思想
一.序言 领域驱动设计是一种解决业务复杂性的设计思想,不是一种标准规则的解决方法.在领域驱动设计理念上,各路大侠的观点也是各有不同,能力有限.欢迎留言讨论. 二.领域驱动设计 DDD是什么 wiki释 ...
- 领域驱动设计 DDD
一.序言 领域驱动设计是一种解决业务复杂性的设计思想,不是一种标准规则的解决方法.在领域驱动设计理念上,各路大侠的观点也是各有不同,能力有限.欢迎留言讨论. 二.领域驱动设计 DDD是什么 wiki释 ...
最新文章
- Apache理论与实战
- 线程A向队列Q中不停写入数据,线程B从列队Q中不停读取数据(只要Q中有数据)。
- JTStackController
- java mysql websocket_javaweb-ajax-websocket-mysql
- Bokeh 风格属性设置
- tomcat相关问题汇总
- 8.Prometheus 监控技术与实践 --- Pushgateway
- 阿里巴巴都害怕的区块链电商到底是什么?
- android精选源码,erp交互效果摩天轮高仿斗鱼直播View炫酷进度条源码
- 商业银行风险计量 第二章 最低资本要求
- 智慧公厕擦手纸洗手液余量实时在线统计
- 抖音的服务器到底啥配置?
- 索氏提取器使用注意_索氏提取法注意事项
- 【Android】带你细看Android input系统中ANR的机制
- 使用python为Excel插入附件
- 微服务实战系列之SpringCloud Alibaba学习(四)
- SSH命令行使用方法
- indexedDB简易封装
- 正点原子mysql_正点原子战舰开发板硬件原理图与PCB
- mysql无法启动(centos7):systemctl status mysqld.service:Can‘t create/write to file