领域驱动设计
文章平均质量分 84
激流勇进_
如果没有钱?你还会去编程吗?
展开
-
DDD学习笔记---基于DDD的微服务设计实例
项目基本信息项目的目标是实现在线请假和考勤管理。功能描述如下:请假人填写请假单提交审批,根据请假人身份、请假类型和请假天数进行校验,根据审批规则逐级递交上级审批,逐级核批通过则完成审批,否则审批不通过退回申请人。 根据考勤规则,核销请假数据后,对考勤数据进行校验,输出考勤统计。战略设计战略设计是根据用户旅程分析,找出领域对象和聚合根,对实体和值对象进行聚类组成聚合,划分限界上下文,建立领域模型的过程。战略设计采用的方法是事件风暴,包括:产品愿景、场景分析、领域建模和微服务拆分等几个主..原创 2022-03-10 17:47:44 · 1233 阅读 · 1 评论 -
DDD学习笔记---从后端到前端:微服务后,前端如何设计?
从单体前端到微前端为了解决单体前端的问题,我们可以借鉴微服务的设计思想,引入微前端概念。将微服务理念扩展到前端,解决中台微服务化后,前端由于仍为单体而存在的逻辑复杂和臃肿的问题。在前端设计时我们需要遵循单一职责和复用原则,按照领域模型和微服务边界,将前端页面进行拆分。同时构建多个可以独立部署、完全自治、松耦合的页面组合,其中每个组合只负责特定业务单元的 UI 元素和功能,这些页面组合就是微前端。微前端与微服务一样,都是希望将单体应用,按照规则拆分,并重组为多个可以独立开发、独立测试、独立部署和独原创 2022-03-09 15:21:53 · 700 阅读 · 0 评论 -
DDD学习笔记---如何实现服务和数据在微服务各层的协作?
服务的协作1. 服务的类型按照分层架构设计出来的微服务,其内部有 Facade 服务、应用服务、领域服务和基础服务。各层服务的主要功能和职责如下。Facade 服务:位于用户接口层,包括接口和实现两部分。用于处理用户发送的 Restful 请求和解析用户输入的配置文件等,并将数据传递给应用层。或者在获取到应用层数据后,将 DO 组装成 DTO,将数据传输到前端应用。应用服务:位于应用层。用来表述应用和用户行为,负责服务的组合、编排和转发,负责处理业务用例的执行顺序以及结果拼装,对外提供粗粒度原创 2022-03-09 14:23:48 · 574 阅读 · 0 评论 -
DDD学习笔记---微服务的各种边界在架构演进中的作用
演进式架构如何判断微服务设计是否合理呢?其实很简单,只需要看它是否满足这样的情形就可以了:随着业务的发展或需求的变更,在不断重新拆分或者组合成新的微服务的过程中,不会大幅增加软件开发和维护的成本,并且这个架构演进的过程是非常轻松、简单的。这也是微服务设计的重点,就是看微服务设计是否能够支持架构长期、轻松的演进。微服务还是小单体?有些项目团队在将集中式单体应用拆分为微服务时,首先进行的往往不是建立领域模型,而只是按照业务功能将原来单体应用的一个软件包拆分成多个所谓的“微服务”软件包,而这些“微原创 2022-03-08 17:43:26 · 272 阅读 · 0 评论 -
DDD学习笔记---如何保证领域模型与代码模型的一致性?
领域对象的整理完成微服务拆分后,领域模型的边界和领域对象就基本确定了。我们第一个重要的工作就是,整理事件风暴过程中产生的各个领域对象,比如:聚合、实体、命令和领域事件等内容,将这些领域对象和业务行为记录到下面的表格中。你可以看到,这张表格里包含了:领域模型、聚合、领域对象和领域类型四个维度。一个领域模型会包含多个聚合,一个聚合包含多个领域对象,每个领域对象都有自己的领域类型。领域类型主要标识领域对象的属性,比如:聚合根、实体、命令和领域事件等类型。从领域模型到微服务的设计领域对象与微原创 2022-03-08 15:56:17 · 320 阅读 · 0 评论 -
DDD学习笔记---如何使用DDD设计微服务代码模型?
微服务落地时首先要确定的就是微服务的代码结构。DDD 分层架构与微服务代码模型我们参考 DDD 分层架构模型来设计微服务代码模型。没错!微服务代码模型就是依据 DDD 分层架构模型设计出来的。那为什么是 DDD 分层架构模型呢?用户接口层:面向前端提供服务适配,面向资源层提供资源适配。这一层聚集了接口适配相关的功能。 应用层职责:实现服务组合和编排,适应业务流程快速变化的需求。这一层聚集了应用服务和事件相关的功能。 领域层:实现领域的核心业务逻辑。这一层聚集了领域模型的聚合、聚合根、..原创 2022-03-08 15:21:03 · 312 阅读 · 0 评论 -
DDD学习笔记---实战篇
如何构建中台业务模型?我们可以用 DDD 领域建模的方法来构建中台业务模型。你可以选择两种建模策略:自顶向下和自底向上的策略。具体采用哪种策略,你需要结合公司的具体情况来分析。1. 自顶向下的策略第一种策略是自顶向下。这种策略是先做顶层设计,从最高领域逐级分解为中台,分别建立领域模型,根据业务属性分为通用中台或核心中台。领域建模过程主要基于业务现状,暂时不考虑系统现状。自顶向下的策略适用于全新的应用系统建设,或旧系统推倒重建的情况。由于这种策略不必受限于现有系统,你可以用 DDD 领域逐原创 2022-03-08 11:28:10 · 1189 阅读 · 0 评论 -
DDD学习笔记---进阶篇
领域事件用来表示领域中发生的事件。举例来说的话,领域事件可以是业务流程的一个步骤,比如投保业务缴费完成后,触发投保单转保单的动作;也可能是定时批处理过程中发生的事件,比如批处理生成季缴保费通知单,触发发送缴费邮件通知操作;或者一个事件发生后触发的后续动作,比如密码连续输错三次,触发锁定账户的动作。领域事件相关案例事件起点:客户购买保险 - 业务人员完成保单录入 - 生成投保单 - 启动缴费动作。1. 投保微服务生成缴费通知单,发布第一个事件:缴费通知单已生成,将缴费通知单数据发布..原创 2022-02-16 10:26:09 · 743 阅读 · 0 评论 -
DDD学习笔记---基础篇
为什么 DDD 适合微服务?DDD 是一种处理高度复杂领域的设计思想,它试图分离技术实现的复杂性,并围绕业务概念构建领域模型来控制业务的复杂性,以解决软件难以理解,难以演进的问题。DDD 不是架构,而是一种架构设计方法论,它通过边界划分将复杂业务领域简单化,帮我们设计出清晰的领域和应用边界,可以很容易地实现架构演进。1.领域、子域、核心域、通用域和支撑域领域就是范围,范围即边界。领域可以进一步划分为子领域。我们把划分出来的多个子领域称为子域,每个子域对应一个更小的问题域或更小的业务范围。..原创 2022-02-08 15:33:12 · 490 阅读 · 0 评论