微服务架构是现代后端系统的核心范式。本专栏聚焦微服务落地的关键问题与解决方案。
核心问题
1. 服务拆分
单体拆微服务最大的难点不是技术,而是边界划分。按业务能力拆分(DDD 限界上下文)是主流策略,但真正难的是:
- 数据库怎么拆?要不要每个服务独立数据库?
- 跨服务的业务逻辑如何协调?
- 拆分粒度多大才算合适?
2. 服务通信
微服务之间必须通信,选择同步还是异步直接影响系统耦合度:
- 同步通信:HTTP/REST、gRPC,简单但会形成调用链
- 异步通信:消息队列(Kafka、RabbitMQ),解耦但增加复杂度
3. 数据一致性
分布式系统中,强一致性代价极高。大多数场景用最终一致性:
- Saga 模式(编排 vs 协同)
- 事件驱动 + 事件溯源
- 补偿事务
4. 服务治理
- 服务发现(Consul、Nacos、K8s Service)
- 负载均衡(客户端 vs 服务端)
- 熔断降级(Sentinel、Hystrix)
- 限流与灰度发布
5. 可观测性
微服务数量多了以后,排查问题变得困难:
- 日志聚合(ELK、Loki)
- 分布式链路追踪(Jaeger、SkyWalking)
- 指标监控(Prometheus + Grafana)
本专栏文章
从具体方案入手,逐步深入微服务核心实践。