Coursera 笔记

Module 01 · Introduction to Microservices

Microservices Patterns微服务架构模式

Coursera ↗


 学习目标

通过本节课程,你将能够:

✅ 描述 微服务架构中常用的模式(Patterns)
✅ 解释 不同模式的用途与适用场景


 常见的微服务模式概览

在构建微服务应用时,开发者常会遇到一些共性挑战与设计机会。
以下是几种最具代表性的微服务架构模式:

模式名称 英文名称 主要作用
🧭 单页应用模式 Single-Page Application (SPA) 通过动态加载内容提升用户体验
🪄 前端后端分离模式 Backend for Frontend (BFF) 为不同终端提供专属后端接口
🌱 绞杀者模式 Strangler Pattern 分阶段将单体应用重构为微服务
🔍 服务发现模式 Service Discovery Pattern 动态管理与定位服务实例
🧩 实体与聚合模式 Entity & Aggregate Pattern 组织复杂数据关系(如电商订单与产品)
🔌 适配器模式 Adapter Pattern 解决不同系统或API之间的不兼容问题

 一、单页应用模式(SPA Pattern)

定义

单页应用(Single-Page Application) 是一种前端架构模式,
用户通过一个入口界面访问应用,页面不会重新加载或跳转,
而是通过 动态的后端 REST 服务调用 实现内容更新。

技术基础

  • 🧱 HTML / CSS / JavaScript
  • ⚡ 动态渲染前端视图
  • 🌐 异步调用后端微服务

优点

  • 🚀 用户体验流畅(无刷新操作)
  • 🔁 页面响应更快
  • 🧩 简化前端逻辑

局限

  • 单页应用在**多渠道体验(如移动端 + 网页)**下表现较差。
  • 后端负担较重,需要为动态请求提供更多支持。

 二、BFF 模式(Backend for Frontend)

定义

BFF(Backend for Frontend) 模式在用户界面与后端服务之间加入一个专属层。
每个前端渠道(如网页、移动端)拥有独立的后端服务,以便优化该渠道的用户体验。

示例场景

渠道 对应后端 特点
📱 移动应用 Mobile BFF 显示数据较少、界面紧凑、网络带宽有限
💻 桌面网页 Web BFF 显示信息更全面、加载速度更快

每个 BFF 本身也是一个 微服务,
通过调用后端核心服务,为特定前端提供定制化响应。

优点

  • ✅ 提高不同终端的性能与体验
  • ✅ 代码职责清晰、易于维护
  • ✅ 避免“大一统”后端造成的性能瓶颈

 三、绞杀者模式(Strangler Pattern)

定义

绞杀者模式(Strangler Pattern) 用于渐进式重构单体应用。
其名字源于“绞杀藤蔓缠绕树木”这一自然现象。
目标是在不影响现有系统的前提下,逐步用微服务替代旧系统。

实施步骤

阶段 说明
🔧 Transform(转化) 在云平台或原环境中创建一个平行的新系统
⚖️ Coexist(共存) 保留旧系统,逐步将部分功能请求重定向到新系统
🗑️ Eliminate(替换) 当新系统功能完善后,逐步停用旧系统模块

优点

  • ✅ 无需一次性重构整个系统
  • ✅ 保持旧应用持续运行
  • ✅ 风险低、过渡平滑

💡 典型应用:将单体网站逐步重构为多个微服务模块(如订单、支付、报告等)。


 四、服务发现模式(Service Discovery Pattern)

定义

在微服务架构中,服务实例动态变化(扩容、升级、故障),
因此需要一种机制帮助应用自动识别和定位可用的服务。
这就是 服务发现(Service Discovery) 模式。

工作机制

  • 📡 服务实例注册到 注册中心(Service Registry)
  • 🔁 应用通过 负载均衡器或客户端代理 查询服务位置
  • 🧠 注册中心执行 健康检查(Health Check) 和 流量重分配

优点

  • ✅ 自动化服务定位与管理
  • ✅ 支持弹性伸缩与高可用性
  • ✅ 减少人工配置错误

 五、实体与聚合模式(Entity & Aggregate Pattern)

定义

该模式用于管理复杂业务数据结构。
例如在电商系统中:

一个订单(Order) = 若干产品(Products) + 买家信息(Buyer)

所有产品与买家信息共同形成一个 聚合(Aggregate)。
微服务可围绕该聚合进行数据一致性和事务管理。


 六、适配器模式(Adapter Pattern)

定义

适配器模式 用于解决不同系统、对象或 API 之间的不兼容问题。
类似于旅行时使用的电源插头转换器。

示例

当微服务需要与第三方 API 通信时,
可通过编写适配器层来转换接口格式与协议,
确保系统之间顺畅交互而无需修改原有逻辑。


 课程总结

你已经学会以下微服务设计模式的核心要点:

模式 主要用途
🧭 SPA 动态更新页面、提升前端体验
🪄 BFF 为不同渠道定制后端服务
🌱 Strangler 渐进式替换单体应用
🔍 Service Discovery 动态发现并管理服务实例
🧩 Entity & Aggregate 组织和管理复杂业务数据
🔌 Adapter 解决系统间不兼容问题

✨ 一句话总结:

微服务模式 = 结构优化 + 灵活扩展 + 高可维护性 💡
每种模式都是解决特定架构挑战的“最佳实践积木” 🧱