定义
优点
缺点
实际使用场景
架构图
+--------------------------------------------------+
| 单体应用 |
| |
| +----------------+ +----------------+ +-------+|
| | 用户管理模块 | | 商品管理模块 | | 订单管理模块 |
| +----------------+ +----------------+ +-------+|
| |
+--------------------------------------------------+
架构图说明
定义
优点
缺点
实际使用场景
架构图
+---------------------+ +---------------------+
| 客户端 | | 服务器 |
| | | |
| +----------------+ | | +----------------+ |
| | 用户界面 | | | | 数据库 | |
| +----------------+ | | +----------------+ |
| | | |
| +----------------+ | | +----------------+ |
| | 发起请求 | | <-----> | | 处理请求 | |
| +----------------+ | | +----------------+ |
+---------------------+ +---------------------+
架构图说明
定义
优点
挑战
实际使用场景
架构图
+---------------------+ +---------------------+ +---------------------+
| 用户管理服务 | | 商品搜索服务 | | 支付服务 |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 用户注册登录 | | | | 搜索商品 | | | | 处理支付 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
| | |
v v v
+---------------------+ +---------------------+ +---------------------+
| API网关 | | 消息队列 | | 数据库 |
| | | | | |
+---------------------+ +---------------------+ +---------------------+
架构图说明
定义
优点
缺点
实际使用场景
架构图
+---------------------+ +---------------------+ +---------------------+
| 事件生产者 | | 事件总线 | | 事件消费者 |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 触发事件 | | ----> | | 路由事件 | | ----> | | 处理事件 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
架构图说明
定义
优点
缺点
实际使用场景
架构图
+---------------------+ +---------------------+ +---------------------+
| 客户端 | | 无服务器函数 | | 数据存储 |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 发起请求 | | ----> | | 执行函数 | | ----> | | 存储数据 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
架构图说明
定义
优点
缺点
实际使用场景
架构图
+---------------------+ +---------------------+ +---------------------+
| 节点1 (Node 1) | <----> | 节点2 (Node 2) | <----> | 节点3 (Node 3) |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 应用程序实例 | | | | 应用程序实例 | | | | 应用程序实例 | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 数据库副本 | | | | 数据库副本 | | | | 数据库副本 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
| | |
v v v
+---------------------+ +---------------------+ +---------------------+
| 负载均衡器 | | 消息队列 | | 缓存 |
| | | | | |
+---------------------+ +---------------------+ +---------------------+
架构图说明
实际项目中,混用不同架构的情况非常常见。每种架构都有其独特的优势和适用场景,通过结合使用,可以更好地满足复杂业务需求和性能要求
场景:一个大型企业可能有多个独立的业务线,每个业务线有不同的需求和发展速度。
示例:
架构图
+---------------------+ +---------------------+ +---------------------+
| 单体应用 | | 用户管理微服务 | | 商品搜索微服务 |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 核心业务逻辑 | | | | 用户注册登录 | | | | 搜索商品 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
| | |
v v v
+---------------------+ +---------------------+ +---------------------+
| API网关 | | 数据库 | | 数据库 |
| | | | | |
+---------------------+ +---------------------+ +---------------------+
场景:一个移动应用需要快速响应用户请求,同时希望减少后端运维成本。
示例:
架构图
+---------------------+ +---------------------+ +---------------------+
| 客户端 | | 服务器 | | 无服务器函数 |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 发起请求 | | ----> | | 处理请求 | | ----> | | 图片处理 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
| | |
v v v
+---------------------+ +---------------------+ +---------------------+
| 数据库 | | 缓存 | | 数据存储 |
| | | | | |
+---------------------+ +---------------------+ +---------------------+
场景:一个复杂的电子商务平台需要处理大量的并发请求和实时事件。
示例:
架构图
+---------------------+ +---------------------+ +---------------------+
| 订单管理微服务 | | 库存管理微服务 | | 支付服务 |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 创建订单 | | | | 更新库存 | | | | 处理支付 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
| | |
v v v
+---------------------+ +---------------------+ +---------------------+
| 事件总线 | | 消息队列 | | 数据库 |
| | | | | |
+---------------------+ +---------------------+ +---------------------+
场景:一个大规模的物联网(IoT)系统需要处理来自全球各地设备的数据,并实时响应各种事件。
示例:
架构图
+---------------------+ +---------------------+ +---------------------+
| 节点1 (Node 1) | <----> | 节点2 (Node 2) | <----> | 节点3 (Node 3) |
| | | | | |
| +----------------+ | | +----------------+ | | +----------------+ |
| | 设备数据处理 | | | | 设备数据处理 | | | | 设备数据处理 | |
| +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+
| | |
v v v
+---------------------+ +---------------------+ +---------------------+
| 事件总线 | | 消息队列 | | 数据存储 |
| | | | | |
+---------------------+ +---------------------+ +---------------------+
场景:一个综合性在线教育平台需要支持大量用户访问,同时提供丰富的互动功能和低运维成本。
示例:
架构图
+---------------------+ +---------------------+ +---------------------+ +---------------------+
| 客户端 | | API网关 | | 微服务 | | 无服务器函数 |
| | | | | | | |
| +----------------+ | | +----------------+ | | +----------------+ | | +----------------+ |
| | 发起请求 | | ----> | | 路由请求 | | ----> | | 课程管理 | | ----> | | 视频转码 | |
| +----------------+ | | +----------------+ | | +----------------+ | | +----------------+ |
+---------------------+ +---------------------+ +---------------------+ +---------------------+
| | | |
v v v v
+---------------------+ +---------------------+ +---------------------+ +---------------------+
| 数据库 | | 消息队列 | | 数据存储 | | 数据存储 |
| | | | | | | |
+---------------------+ +---------------------+ +---------------------+ +---------------------+