何时引入微服务
微服务不是银弹,适合业务复杂度高、团队规模大、需要独立部署的场景。单体架构在早期更简单高效,不应过早微服务化。
一、服务拆分原则
领域驱动设计(DDD):按业务边界划分服务
单一职责:每个服务只做一件事
高内聚低耦合:服务内部紧密相关,服务间依赖最小化
独立部署:服务可以独立发布不影响其他服务
二、服务通信
同步通信:REST、gRPC;异步通信:消息队列(RabbitMQ、Kafka);服务发现:Consul、Eureka;负载均衡:Nginx、Envoy。
三、数据一致性
分布式事务解决方案:Saga 模式、TCC、最终一致性;事件溯源记录状态变更;CQRS 分离读写模型。
四、可观测性
集中式日志(ELK);分布式追踪(Jaeger、Zipkin);指标监控(Prometheus);健康检查和告警。
五、挑战与应对
网络延迟增加 → 缓存和本地副本;故障传播 → 熔断器和降级;数据一致性 → 补偿机制;运维复杂度 → 容器化和自动化。