第三章 预计学习时长:55 分钟

3.1 微服务拆分策略

微服务拆分是架构设计中最具挑战性的决策之一。拆分过细会导致服务间通信成本剧增,拆分过粗则失去微服务的灵活性。核心原则是围绕业务能力拆分,而非技术层次。

  • 业务能力拆分:按业务领域边界划分服务,每个服务对应一个明确的业务能力
  • 子域驱动设计:使用DDD识别核心域、支撑域和通用域,优先拆分核心域
  • 数据独立性:每个服务拥有独立的数据存储,避免跨服务数据库访问
  • 渐进式拆分:从单体开始,在痛点出现时逐步拆分,避免过度设计

3.2 服务治理与通信

微服务架构中,服务间的通信和治理是系统稳定性的关键。同步通信(HTTP/gRPC)和异步通信(消息队列)各有适用场景,需要根据业务特性选择。

  • 服务注册与发现:Consul、Etcd、Nacos等方案对比
  • 负载均衡:客户端负载均衡 vs 服务端负载均衡
  • 熔断与降级:Hystrix/Sentinel的熔断策略与降级方案
  • 链路追踪:Jaeger/Zipkin实现全链路可观测性

3.3 微服务设计模式

微服务架构中有一系列经过验证的设计模式,解决分布式系统特有的问题。理解这些模式能帮助你避免常见的陷阱。

  • API Gateway:统一入口,处理路由、认证、限流等横切关注点
  • BFF模式:Backend For Frontend,为不同客户端提供定制化API
  • CQRS:读写分离,优化查询性能和写入扩展性
  • Saga模式:分布式事务的最终一致性方案
  • 事件溯源:以事件为核心记录状态变化,支持审计和回溯

本章小结

微服务不是银弹。它带来了独立部署、技术异构等优势,但也引入了分布式系统的复杂性。在决定采用微服务前,先评估团队规模、业务复杂度和运维能力。记住:单体先行,微服务是演进的结果。