领域驱动设计,微服务设计为什么要选择DDD?

简介:微服务拆分的核心难题是边界不清, DDD 可以用 领域模型 指导边界划分

  • 软件架构演进

    • 单机架构

      • 围绕数据库和过程式逻辑开发
    • 集中式架构

      • 典型三层架构,系统逐渐臃肿
    • 分布式微服务架构

      • 通过服务拆分提升扩展性和弹性伸缩能力
  • 微服务设计困境

    • 微服务粒度应该多大

    • 微服务边界应该在哪里

    • 服务到底按功能拆、按数据库拆,还是按业务拆

    • 过度拆分会带来集成、运维、事务和调用复杂度

  • DDD 的核心作用

    • 通过领域建模划定业务边界

    • 通过限界上下文确定微服务候选边界

    • 通过聚合确定微服务内部逻辑边界

    • 通过领域对象与代码对象映射保持模型一致

  • DDD 的两类设计

|------|------|-------------------------|
| 类型 | 视角 | 产出 |
| 战略设计 | 业务视角 | 领域、子域、通用语言、限界上下文、领域模型 |
| 战术设计 | 技术视角 | 聚合根、实体、值对象、领域服务、应用服务、仓储 |

  • DDD 与微服务的关系

    • DDD 是架构设计方法

    • 微服务是架构风格

    • DDD 负责把业务边界讲清楚

    • 微服务负责把边界落到运行、部署和治理形态

  • 关键结论

    • 微服务拆分不能只看技术实现

    • 先有清晰领域模型,才有清晰微服务边界

    • DDD 也适用于单体应用和中台设计

相关推荐
isboyjc3 小时前
Lomo Agent:面向创作型、持续协作 Agent 的架构设计与工程实践
人工智能·架构·agent
聪明的笨猪猪4 小时前
AI应用架构选型:架构师的核心决策困境与权衡
经验分享·面试·架构
疯华整猫7 小时前
被杀掉之后:我把 Android 的「唤起 + 常驻」重做了一遍
前端·面试·架构
Dawson Zhu7 小时前
【LLM推理与Serving⑤】Prefix Cache前缀缓存:让重复prompt不再重复计算
人工智能·语言模型·架构·aigc·agi
薛定谔的悦7 小时前
光储充一体机从主控到执行单元的双层架构
数据库·mongodb·架构
孙克旭_9 小时前
云原生基础之Containerd容器运行时
运维·云原生
分布式存储与RustFS9 小时前
RustFS 自建对象存储实战目录:110 篇按场景分类(持续更新)
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
国科安芯1 天前
83 倍:ASC0108S 在推挽和开漏之间,差的不是速度,是回程
单片机·嵌入式硬件·架构·电平转换·抗辐射
QXWZ_IA1 天前
横跨三网“只进不出”架构如何划分安全边界
安全·架构
ZENERGY-众壹1 天前
告警风暴怎么压?100MW 电站监控平台告警引擎架构复盘
数据库·架构·iot·电站监控