微服务架构概述

微服务架构是一种将应用拆分为多个小型、独立服务的架构风格。

核心原则

原则 说明
单一职责 每个服务专注于一个业务功能
自治性 独立开发、部署和扩展
去中心化 可选择最适合的技术栈
容错设计 一个服务的失败不影响整个系统

与单体架构对比

特性 单体架构 微服务架构
代码库 单一代码库 多代码库
部署 整体部署 独立部署
扩展 整体扩展 按需扩展
技术栈 统一 可混合
运维复杂度
故障隔离

何时使用微服务?

适合场景

  • 大型团队(> 10人)协作
  • 产品需求变化频繁
  • 需要独立扩缩容

不适合场景

  • 小型项目(1-3人团队)
  • MVP 验证阶段
  • 团队缺乏 DevOps 经验

微服务技术栈

基础设施

  • 容器:Docker
  • 编排:Kubernetes
  • CI/CD:GitLab CI、Jenkins、GitHub Actions

服务通信

  • REST:HTTP/JSON(通用)
  • gRPC:高性能二进制协议
  • 消息队列:Kafka、RabbitMQ、NATS

可观测性

  • 监控:Prometheus + Grafana
  • 日志:ELK Stack
  • 告警:Alertmanager

关键挑战

  1. 分布式事务:最终一致性 vs 强一致性
  2. 服务间通信:网络延迟、序列化
  3. 数据一致性:每个服务独立数据库
  4. 运维:服务数量多,监控困难

设计建议

先构建单体,再拆分微服务。
不要为了微服务而微服务。