第2章 服务的拆分策略

133 阅读2分钟

本章导读

image.png

问题1:软件架构都有哪几种
问题2:业务能力模式
问题3:子域模式
问题4:限界上下文

软件架构

软件架构的定义

image.png

image.png

4+1视图

image.png

image.png

软件架构为什么这么重要

image.png

架构风格

分层式架构风格-逻辑视图

1. 定义

image.png

2. 例子

image.png

3. 缺点

image.png

六边形架构-逻辑视图

image.png

image.png image.png

单体架构-实现视图

image.png

微服务架构-实现视图

image.png

1. 微服务架构强加的一项关键约束是松耦合
2. 什么是服务?

image.png

3. 微服务架构中的服务

image.png

4. 什么是松耦合

image.png

5. 服务的大小并不重要

image.png

为应用程序定义微服务架构

三步走

image.png

第一步:将应用程序的需求提炼为各种关键请求
第二步:确定如何分解业务。一般是两种方法,一种源于业务架构学派的策略是定义与业务能力相对应的服务。另一种是围绕领域驱动设计的子域来分解和设计服务
第三步:确定每个服务的API及服务间的通信方式

第一步:定义系统操作(做什么)

1. 创建抽象领域模型

image.png

2. 定义系统操作

有以下两种类型的系统操作

image.png

命令型规范

image.png

第二步:定义服务

第一种方式:根据业务能力进行服务拆分

1. 业务能力的定义

image.png

2. 业务能力的作用

image.png

3. 识别业务能力

image.png

4. 从业务能力到服务

image.png

第二种方式:通过子域进行服务拆分

1. 子域

image.png

2. 限界上下文

image.png

3. 例子

image.png

拆分的指导原则

1,单一职责原则

image.png

2. 闭包原则

image.png

拆分单体应用为服务的难点

1. 网络延迟

image.png

2. 同步进程间通信导致可用性降低

image.png

3. 在服务之间维持数据一致性

image.png image.png

4. 获取一致的数据视图

image.png

5. 上帝类阻碍了拆分

image.png

定义服务API

image.png image.png

第一步:把系统操作分配给服务

image.png

第二步:确定支持服务协作所需要的API

本章小结

image.png