首页 / 知识库 / python服务端进阶 / 后端微服务架构

02 - 微服务到底是什么

上一章我们发现,单体的病根是”所有东西焊在一起”。药方也很直白:拆开

一句话理解微服务

微服务(Microservices)= 把一个大应用,按业务拆成一组小的、能独立开发/独立部署/独立扩容的服务,它们各自管自己的数据,彼此通过网络接口协作。

关键词就三个:按业务拆、能独立跑、通过网络协作

把电商拆开看看

还是上一章那个电商,用微服务的思路重新组织:

                        ┌──────────────┐
        请求进来  ───▶   │   (客户端)    │
                        └──────┬───────┘
             ┌────────────┬────┴───┬────────────┐
             ▼            ▼        ▼            ▼
      ┌───────────┐ ┌──────────┐ ┌─────────┐ ┌──────────┐
      │ 用户服务   │ │ 商品服务  │ │ 订单服务 │ │ 支付服务  │
      │ (FastAPI) │ │(FastAPI) │ │(FastAPI)│ │(FastAPI) │
      └─────┬─────┘ └────┬─────┘ └────┬────┘ └────┬─────┘
            ▼            ▼            ▼           ▼
      ┌─────────┐  ┌─────────┐  ┌─────────┐ ┌─────────┐
      │ 用户库   │  │ 商品库   │  │ 订单库   │ │ 支付库   │
      │(Postgres)│  │(Postgres)│  │(Postgres)│ │(Postgres)│
      └─────────┘  └─────────┘  └─────────┘ └─────────┘

  每个服务:自己的代码 + 自己的进程 + 自己的数据库,各管各的

原来挤在一个项目里的四个模块,现在变成了四个独立的小应用。每一个都是一个完整的、能单独跑起来的 FastAPI 服务,还各自带一个数据库。

微服务的几个核心特征

判断一个东西”算不算微服务”,看这几点:

1. 围绕业务能力划分

按”业务”拆,不是按”技术”拆。是”用户 / 商品 / 订单 / 支付”这种业务块,而不是”数据库层 / 逻辑层 / 接口层”这种技术分层。

一个服务,最好能对应一个业务上说得清的东西:“这是管订单的”

2. 独立部署(这是灵魂)

改了商品服务,就只重新部署商品服务,其他三个原地不动、照常运行。

这一条最重要。做不到独立部署,就不算真微服务。

3. 独立数据库

每个服务管自己的数据,别人不能直接伸手进你的库里查(第 05 章专门讲这个)。

4. 通过轻量接口通信

服务之间不再是”同一个进程里直接调函数”,而是通过网络互相请求——比如订单服务要拿用户信息,就发一个 HTTP 请求去问用户服务(第 04 章专门讲)。

一个常见误区:拆文件 ≠ 微服务

很多人以为”我把代码拆成很多文件夹、很多模块,就是微服务了”。不是。

❌ 只是把单体的代码分了文件夹
   → 还是一个进程、一个部署包、一个数据库
   → 改任何一块,还是要整体重新部署  →  这还是单体

✅ 真正的微服务
   → 每块是独立的进程、独立部署、独立的库
   → 改一块只重启那一块         →  这才是微服务

微服务的关键不在”代码怎么分”,而在”能不能独立运行、独立部署”。

单体 vs 微服务 一图对比

        单体架构                        微服务架构
   ┌──────────────────┐         ┌────┐ ┌────┐ ┌────┐ ┌────┐
   │ 用户 商品 订单 支付 │         │用户│ │商品│ │订单│ │支付│
   │  (一个进程)      │         └─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘
   └────────┬─────────┘           ▼     ▼     ▼     ▼
            ▼                    独立进程 · 独立库 · 独立部署
      一个大数据库
   一起部署 / 一起崩 / 一起扩       各自部署 / 各自扩 / 互不拖累

小结

  • 微服务 = 把大应用按业务拆成一组能独立运行、独立部署的小服务,各管各的数据,通过网络协作。
  • 核心特征:围绕业务划分、独立部署(灵魂)、独立数据库、轻量接口通信。
  • 最大误区:拆文件夹不等于微服务,关键是能否独立部署
  • 但拆开之后,新问题也来了:它们怎么互相说话?数据一致性怎么办?——后面几章逐个解决。

上一章 ← 01 - 单体应用会遇到什么问题 | 下一章 → 03 - 微服务解决了什么,又带来了什么 | 回到 README 目录