领域驱动设计的几个基本概念
领域:领域相对于软件系统来说,就是系统要解决的现实问题,一个领域对应一个问题空间,是一个特定范围边界内的业务需求的总和。领域来自于需求,但它却高于需求,相对于善变的需求而言,领域知识和领域模型本身是“静止”的,是“不变”的
核心域:是业务域的一部分,也是业务是否能够促成的主要因素,应该给予最高的优先级
支撑子域:对应着业务的某个重要组成部分
通用子域:如果某个域被用做整个系统,那这种部分就是通用子域
限界上下文:“限”的意思就是划分、规定,“界”就是界限、或者一个边界,上下文就是业务的整个流程,总的来说,可以称限界上下文为业务流程在一个划定的界限中;限界上下文,是一个显示的边界,领域模型存在于这个边界内。在边界内,通用语言中的所有术语和词组都有特定的含义,而模型需要准确地反应通用语言领域模型:针对特定领域里的关键事物及其关系的可视化表现,属于"解决方案空间",为了准确定义需要解决问题而构造的抽象模型,为软件系统的构建目标统一认知,是业务功能场景在软件系统里的映射转化
什么是微服务架构
为何要进行微服务建设
为何要使用DDD思想来指导微服务建设
1、共同目标:解决系统复杂性
一个独立的系统所有内部概念都需要转成系统内部的概念,这些概念实际上就是领域内的通用语言
2、领域边界可以作为微服务拆分的依据
不管是DDD还是微服务,都要遵循软件设计的基本原则:高内聚低耦合。服务内部高内聚,服务之间低耦合,实际上一个领域服务对应了一个功能集合,这些功能一定是有一些共性的。比如,订单服务,那么创建订单、修改订单、查询订单列表,领域的边界越清晰,功能也就越内聚,服务之间的耦合性也就越低
3、领域通用语言可以保障服务的独立性
DDD是针对整个复杂的软件解决方案的一种科学设计方法,微服务化也是把复杂的大系统拆分为小系统,方便维护和管理,两者的目标实际上是一致的