微服务架构是一种将单一应用程序划分为一组小的服务,服务间互相协调、互相配合的架构模式。每个服务运行在独立进程中,采用轻量级通信机制(通常基于 HTTP 的 RESTful API)互相沟通,可独立部署到生产环境。核心特点:小且专注 · 轻量通信 · 松耦合 · 独立部署。
微服务的核心优势
- 技术异构性 — 每个服务可选择最适合自身的技术栈,便于尝试新技术 (技术选型自由)
- 弹性 — 单个服务故障不影响整体,内置可用性方案与功能降级 (故障隔离)
- 可扩展性 — 针对单个服务独立扩展,而非整体扩展 (按需扩容)
- 简化部署 — 服务独立部署,修改一行代码不需重新部署整个系统 (降低部署风险)
- 与组织结构匹配 — 康威定律的应用,团队规模与服务粒度匹配 (两个披萨团队)
- 可组合性 — 开放接口,可用不同方式构建应用 (API 复用)
- 对可替代性的优化 — 可轻易重写或删除不再使用的服务 (降低改造成本)
常见微服务设计模式
微服务面临的挑战
- 分布式系统复杂度 — 服务间通过网络通信,性能、可靠性、数据一致性都受影响
- 运维成本激增 — 服务数量增多导致部署、配置、监控、日志收集成本呈指数级增长
- 部署自动化要求高 — 必须建立 CI/CD 流水线,依赖容器与编排工具
- DevOps 与组织结构变革 — 全功能团队、开发承担运维责任
- 服务依赖测试与管理 — 服务数量多时,接口契约测试、依赖关系展示成挑战
- 数据一致性难题 — 受 CAP 约束,从强一致性转向最终一致性
微服务 vs SOA 的本质差异
微服务
- 更细粒度的服务拆分
- 每个服务独立数据库
- 去中心化治理(智能端点哑管道)
- 轻量级通信(REST/gRPC)
- 独立部署、独立扩展
SOA
- 粒度较粗的业务服务
- 常共享数据库
- 集中式治理(ESB)
- SOAP/XML 等重量级协议
- 统一企业服务总线