Coursera 笔记

Module 01 · Introduction to Microservices

Comparison of Monolith vs. SOA vs. Microservices单体架构 vs. SOA vs. 微服务架构比较

Coursera ↗

(Comparison of Monolith vs. SOA vs. Microservices)


 学习目标

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

✅ 定义 单体架构(Monolith)
✅ 定义 面向服务架构(SOA, Service-Oriented Architecture)
✅ 定义 微服务架构(Microservices)


 一、单体架构(Monolith)

定义

单体应用(Monolithic Application)是指将所有功能集中在单一进程中运行的应用。
其内部通常由多个紧密连接的层(Layers)组成,例如:

常见层次 功能示例
🔒 安全层(Security) 用户认证、权限控制
📊 报表层(Reporting) 数据展示、统计分析
📈 分析层(Analytics) 行为分析、业务洞察
🖥️ 界面层(UI) 用户交互界面
💾 数据访问层(Data Access) 数据库交互逻辑

这些层彼此高度依赖、紧密耦合,构成单一代码库中的完整应用。

优点

  • ✅ 结构简单,部署方便
  • ✅ 开发初期快速构建
  • ✅ 功能集中、无跨模块依赖

缺点

  • ❌ 随着功能增加,代码复杂度迅速上升
  • ❌ 修改和扩展困难,影响整体稳定性
  • ❌ 难以引入新技术,往往需要重写整个系统

🧩 示例:Windows Forms Application
用户界面、业务逻辑、数据访问全部位于同一代码库中,仅数据库为外部组件。


 二、SOA:面向服务架构(Service-Oriented Architecture)

定义

SOA 架构采用“服务提供者(Provider)–服务消费者(Consumer)”的设计理念。
每个服务代表一个离散的业务功能单元(Discrete Unit of Functionality),可被复用与集成。

组成部分

每个 SOA 服务包含以下三个核心组件:

组件 说明
🧭 Interface(接口) 定义服务如何接收和执行请求
📜 Contract(契约) 定义服务提供者与消费者的交互规则
⚙️ Implementation(实现) 实际执行功能的代码

优点

  • ✅ 提高可靠性与复用性
  • ✅ 支持并行开发(通过固定的服务契约)
  • ✅ 适合大型企业级系统

缺点

  • ❌ 设计复杂、维护成本高
  • ❌ 不利于快速迭代与敏捷开发
  • ❌ 实施成本高,通常只适用于企业级团队

💡 示例:银行系统(Banking System)
各业务模块(账户、支付、信用等)作为独立服务存在,通过松耦合接口复用其他模块功能。


 三、微服务架构(Microservices Architecture)

定义

微服务架构延续了 SOA 的理念,但更轻量化、独立化。
其核心思想是:

将单个应用拆分为多个可独立开发、部署、扩展的服务。

每个服务:

  • 🔹 独立运行,通常拥有自己的数据库
  • 🔹 与其他服务通过 API 接口 通信
  • 🔹 可使用不同的编程语言与技术栈

优点

优势 说明
⚙️ 可独立开发与部署 各服务可单独构建、更新
📈 精准扩展 可单独扩容高负载模块
🧱 技术多样性 每个服务可使用最合适的技术栈
🔁 易于维护与升级 修改单个服务不影响整体应用
🧩 容错性高 单个服务失败不致使整个系统宕机

💡 示例:电商系统(E-Commerce App)
分别设有订单服务、用户安全服务、分析服务等,独立运行、协同构成完整系统。

挑战

  1. 🔒 安全性问题
  • 各服务独立部署 → 需分别配置安全策略(如 TLS 加密)。
  1. 🪲 调试复杂性高
  • 服务间独立运行,排查跨服务问题较困难。

 三种架构的对比

特征 单体架构 (Monolith) SOA 架构 微服务架构
📦 结构 单一代码库、层次紧密 企业级服务集合 应用内独立小服务
🧩 耦合度 高耦合 松耦合 松耦合
⚙️ 可扩展性 整体扩展 按服务扩展 精准扩展(按需水平扩展)
🧱 技术多样性 限制大 支持一定多样性 技术栈完全自由
🧠 复杂度 低(初期)→ 高(后期) 高 中等(取决于规模)
🧰 部署与维护 简单但笨重 复杂 灵活但需自动化支持
🏢 应用范围 小型应用 企业级系统 云原生与现代应用

 课程总结

你已了解三种典型架构的核心特点:

架构类型 特点总结
🧱 Monolithic 简单集中,但难以扩展与维护
🔗 SOA 强调复用与服务集成,适合企业级系统
🧩 Microservices 模块化、灵活、易扩展,但安全与调试更具挑战

💡 一句话总结:

单体架构重“统一”,
SOA重“复用”,
微服务重“独立与灵活”。 🚀