DDD(领域驱动设计)整体架构分层图
2026-06-26
NEW个对象
```
🚀 DDD(领域驱动设计)整体架构分层图
```
┌──────────────────────────────────────────────────────────────┐
│ Interface(接口层) │
│--------------------------------------------------------------│
│ Controller、REST API、RPC、MQ Consumer、OpenFeign 等 │
│ │
│ 职责:接收请求、参数校验、DTO转换 │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ Application(应用层) │
│--------------------------------------------------------------│
│ ApplicationService │
│ Command / Query │
│ DTO │
│ │
│ 职责: │
│ • 编排业务流程 │
│ • 调用聚合根 │
│ • 控制事务 │
│ • 发布领域事件 │
│ (不写业务规则) │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ Domain(领域层)⭐ │
│--------------------------------------------------------------│
│ Entity(实体) │
│ Value Object(值对象) │
│ Aggregate(聚合) │
│ Aggregate Root(聚合根) │
│ Domain Service(领域服务) │
│ Repository(仓储接口) │
│ Domain Event(领域事件) │
│ │
│ 职责: │
│ • 核心业务规则 │
│ • 一致性保证 │
│ • 聚合建模 │
│ • 领域行为 │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ Infrastructure(基础设施层) │
│--------------------------------------------------------------│
│ RepositoryImpl │
│ MyBatis / JPA │
│ MySQL │
│ Redis │
│ RocketMQ / Kafka │
│ Elasticsearch │
│ RPC实现 │
│ 第三方SDK │
│ │
│ 职责: │
│ • 数据持久化 │
│ • 消息发送 │
│ • 调用外部系统 │
│ • 技术实现 │
└──────────────────────────────────────────────────────────────┘ ```
│ Interface(接口层) │
│--------------------------------------------------------------│
│ Controller、REST API、RPC、MQ Consumer、OpenFeign 等 │
│ │
│ 职责:接收请求、参数校验、DTO转换 │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ Application(应用层) │
│--------------------------------------------------------------│
│ ApplicationService │
│ Command / Query │
│ DTO │
│ │
│ 职责: │
│ • 编排业务流程 │
│ • 调用聚合根 │
│ • 控制事务 │
│ • 发布领域事件 │
│ (不写业务规则) │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ Domain(领域层)⭐ │
│--------------------------------------------------------------│
│ Entity(实体) │
│ Value Object(值对象) │
│ Aggregate(聚合) │
│ Aggregate Root(聚合根) │
│ Domain Service(领域服务) │
│ Repository(仓储接口) │
│ Domain Event(领域事件) │
│ │
│ 职责: │
│ • 核心业务规则 │
│ • 一致性保证 │
│ • 聚合建模 │
│ • 领域行为 │
└──────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────────┐
│ Infrastructure(基础设施层) │
│--------------------------------------------------------------│
│ RepositoryImpl │
│ MyBatis / JPA │
│ MySQL │
│ Redis │
│ RocketMQ / Kafka │
│ Elasticsearch │
│ RPC实现 │
│ 第三方SDK │
│ │
│ 职责: │
│ • 数据持久化 │
│ • 消息发送 │
│ • 调用外部系统 │
│ • 技术实现 │
└──────────────────────────────────────────────────────────────┘ ```
📌 Domain(领域层)内部结构
```
Order(Aggregate Root 聚合根)
│
├──────── OrderItem(Entity 实体)
│
├──────── Address(Value Object 值对象)
│
├──────── Coupon(Value Object 值对象)
│
├──────── Domain Service(领域服务)
│
└──────── Repository(仓储接口) ```
│
├──────── OrderItem(Entity 实体)
│
├──────── Address(Value Object 值对象)
│
├──────── Coupon(Value Object 值对象)
│
├──────── Domain Service(领域服务)
│
└──────── Repository(仓储接口) ```
📌 一次请求执行流程
```
HTTP请求
↓
Controller
↓
ApplicationService(编排流程)
↓
Order(聚合根)
↓
OrderItem / Address / Coupon(领域对象)
↓
Repository(接口)
↓
RepositoryImpl(MyBatis)
↓
MySQL ```
↓
Controller
↓
ApplicationService(编排流程)
↓
Order(聚合根)
↓
OrderItem / Address / Coupon(领域对象)
↓
Repository(接口)
↓
RepositoryImpl(MyBatis)
↓
MySQL ```
💡 DDD一句话理解:
Interface 层负责接收请求;
Application 层负责业务流程编排;
Domain 层负责真正的业务规则,是整个系统的核心;
Infrastructure 层负责数据库、缓存、MQ、RPC 等技术实现。
整个系统围绕 聚合(Aggregate) 建模,通过 聚合根(Aggregate Root) 保证业务一致性,Repository 负责聚合的持久化,这也是 DDD 最经典、最常见的工程落地方式。
```
Interface 层负责接收请求;
Application 层负责业务流程编排;
Domain 层负责真正的业务规则,是整个系统的核心;
Infrastructure 层负责数据库、缓存、MQ、RPC 等技术实现。
整个系统围绕 聚合(Aggregate) 建模,通过 聚合根(Aggregate Root) 保证业务一致性,Repository 负责聚合的持久化,这也是 DDD 最经典、最常见的工程落地方式。
相关文章
-
Kafka 是否会弄丢数据?
当然会 kafka分为生产者、服务端、消费端
NEW个对象 2025-01-11
-
设计一个异步任务执行框架:利用多线程执行耗时任务并在完成后通知主线程
设计一个异步任务执行框架:利用多线程执行耗时任务并在完成后通知主线程
NEW个对象 2026-06-15
-
Java锁升级机制详解:偏向锁、轻量级锁、重量级锁是如何一步步升级的?
Java中的synchronized并不是一开始就使用重量级锁。为了减少线程竞争带来的性能损耗,HotSpot JVM设计了锁升级机制。锁会根据竞争情况经历无锁 → 偏向锁 → 轻量级锁 → 重量级锁的升级过程。锁只能升级不能降级,从而保证线程安全并提高系统吞吐量。
NEW个对象 2026-06-10
NEW个对象
JAVA是世界上最好的语言