✅ 什么是单体架构(Monolithic Architecture)
📌 定义
所有业务功能都打包在一个整体应用中,一个项目、一个代码库、一个进程、一个部署包。
🧠 理解方式
就像一栋大房子,厨房、卧室、卫生间都在一起,装修和维护全靠一个师傅。
🏗️ 特点
| 特性 | 说明 |
|---|---|
| 项目结构 | 单体工程 |
| 部署方式 | 打一个包,部署一次 |
| 系统组成 | 所有功能模块统一运行 |
| 扩展方式 | 整体横向扩容(加机器) |
👍 优点
- 开发简单,结构清晰
- 调试部署方便(早期低成本)
- 性能好(内部调用,无网络开销)
👎 缺点
- 迭代大系统风险高(牵一发动全身)
- 部署升级成本高(改一点,重发全部)
- 无法按业务独立伸缩
- 随业务增长变得庞大、难维护(大泥球问题)
✅ 什么是微服务架构(Microservices Architecture)
📌 定义
一个系统拆成多个独立服务,每个服务独立开发、部署、扩缩容,通过 API 通信。
🧠 理解方式
把大房子拆成连排别墅,每个房间是独立的小房子,有自己的水电系统,互相通过“通信管道”联系。
🏗️ 特点
| 特性 | 说明 |
|---|---|
| 项目结构 | 多服务、多个工程 |
| 部署方式 | 每个服务可以独立部署/升级 |
| 系统组成 | 每个服务负责一个业务边界 |
| 通信方式 | HTTP、RPC、消息队列 |
👍 优点
- 独立部署(发布不影响其他模块)
- 按业务独立扩容(热点服务单独加机器)
- 技术栈可多样(每服务选最合适技术)
- 更适合大型团队协作
👎 缺点
- 系统复杂:服务治理、链路追踪、网关、配置中心、注册中心等
- 分布式带来一致性、网络延迟、故障等问题
- 运维成本高(DevOps、CI/CD 必须跟上)
🆚 单体 vs 微服务 对比
| 项目 | 单体架构 | 微服务架构 |
|---|---|---|
| 开发成本 | 低 | 高 |
| 系统复杂度 | 低 | 高(分布式) |
| 部署速度 | 有改动就重发 | 单服务升级 |
| 扩展能力 | 整体扩容 | 业务独立扩容 |
| 技术灵活性 | 单一技术栈 | 可多技术混用 |
| 运维难度 | 低 | 高 |
🧪 举例理解
| 架构 | 例子 |
|---|---|
| 单体 | Spring Boot + MySQL 单包部署 |
| 微服务 | Spring Cloud / Dubbo 分布式服务 |
🧠 面试回答模板
单体架构是将所有业务功能作为一个整体应用部署,开发简单但扩展难,系统变大会出现维护困难。
微服务架构将系统拆分成多个独立服务,每个服务可独立部署和扩展,提升灵活性和伸缩性,但带来分布式系统复杂性和运维成本。