《面试经》什么是单体架构,什么是微服务架构?

Viewed 5

什么是单体架构(Monolithic Architecture)

📌 定义

所有业务功能都打包在一个整体应用中,一个项目、一个代码库、一个进程、一个部署包。

🧠 理解方式

就像一栋大房子,厨房、卧室、卫生间都在一起,装修和维护全靠一个师傅。

🏗️ 特点

特性 说明
项目结构 单体工程
部署方式 打一个包,部署一次
系统组成 所有功能模块统一运行
扩展方式 整体横向扩容(加机器)

👍 优点

  • 开发简单,结构清晰
  • 调试部署方便(早期低成本)
  • 性能好(内部调用,无网络开销)

👎 缺点

  • 迭代大系统风险高(牵一发动全身)
  • 部署升级成本高(改一点,重发全部)
  • 无法按业务独立伸缩
  • 随业务增长变得庞大、难维护(大泥球问题)

什么是微服务架构(Microservices Architecture)

📌 定义

一个系统拆成多个独立服务,每个服务独立开发、部署、扩缩容,通过 API 通信。

🧠 理解方式

把大房子拆成连排别墅,每个房间是独立的小房子,有自己的水电系统,互相通过“通信管道”联系。

🏗️ 特点

特性 说明
项目结构 多服务、多个工程
部署方式 每个服务可以独立部署/升级
系统组成 每个服务负责一个业务边界
通信方式 HTTP、RPC、消息队列

👍 优点

  • 独立部署(发布不影响其他模块)
  • 按业务独立扩容(热点服务单独加机器)
  • 技术栈可多样(每服务选最合适技术)
  • 更适合大型团队协作

👎 缺点

  • 系统复杂:服务治理、链路追踪、网关、配置中心、注册中心等
  • 分布式带来一致性、网络延迟、故障等问题
  • 运维成本高(DevOps、CI/CD 必须跟上)

🆚 单体 vs 微服务 对比

项目 单体架构 微服务架构
开发成本
系统复杂度 高(分布式)
部署速度 有改动就重发 单服务升级
扩展能力 整体扩容 业务独立扩容
技术灵活性 单一技术栈 可多技术混用
运维难度

🧪 举例理解

架构 例子
单体 Spring Boot + MySQL 单包部署
微服务 Spring Cloud / Dubbo 分布式服务

🧠 面试回答模板

单体架构是将所有业务功能作为一个整体应用部署,开发简单但扩展难,系统变大会出现维护困难。
微服务架构将系统拆分成多个独立服务,每个服务可独立部署和扩展,提升灵活性和伸缩性,但带来分布式系统复杂性和运维成本。

0 Answers