何时引入微服务

微服务不是银弹,适合业务复杂度高、团队规模大、需要独立部署的场景。单体架构在早期更简单高效,不应过早微服务化。

一、服务拆分原则

领域驱动设计(DDD):按业务边界划分服务
单一职责:每个服务只做一件事
高内聚低耦合:服务内部紧密相关,服务间依赖最小化
独立部署:服务可以独立发布不影响其他服务

二、服务通信

同步通信:REST、gRPC;异步通信:消息队列(RabbitMQ、Kafka);服务发现:Consul、Eureka;负载均衡:Nginx、Envoy。

三、数据一致性

分布式事务解决方案:Saga 模式、TCC、最终一致性;事件溯源记录状态变更;CQRS 分离读写模型。

四、可观测性

集中式日志(ELK);分布式追踪(Jaeger、Zipkin);指标监控(Prometheus);健康检查和告警。

五、挑战与应对

网络延迟增加 → 缓存和本地副本;故障传播 → 熔断器和降级;数据一致性 → 补偿机制;运维复杂度 → 容器化和自动化。