DDD之1微服务设计为什么选择DDD
背景 名词解释 如果你的团队目前正是构建微服务架构风格的软件系统,问自己两个问题? 软件架构演进 软件架构大致经历了从单机架构,集中式架构,分布式微服架构,程序的层次图如下所示。 单机架构 特点如下: 1, 面向过程的设计方法; 2, 结构为CS; 3,程序的层次分两层,即UI层和数据库层; 4, 设计的核心在数据库和字段。 集中式架构 特点如下: 1, 面向对象的设计方法; 2,程序层次为经典的3层架构,即业务接入层, 业务逻辑层,数据库层; 3,部分企业也采用SOA架构风格; 4,集中式的架构缺点:扩展性,伸缩性差,系统容易变得臃肿; 分布式微服务架构 特点: 1, 基于微服务的理念:分而治之,模块高内聚(独立团队,独立部署,独立存储,技术异构),模块之间通过RPC或者HTTP通信,松耦合; 2,模块之间松耦合,解决了扩展性和伸缩性的问题; 架构对比 单体架构和集中式架构,系统分析, 系统设计,系统开发这3个阶段是割裂的,即分属3个不同的人或者小组或者岗位的人负责,这样的后果是: 1, 系统分析,设计,开发三个阶段的信息不一致,导致上线之后功能跟需求偏差非常大; 2, 系统的开发无法快速响应需求和业务的变化,错失发展的良机。 微服务的困局 微服务解决的问题 微服务解决了单体架构和集中式架构的问题:扩展性,弹性伸缩,敏捷开发快速响应业务变化; 但是微服务并非毫无缺陷。