分布式架构理解¶
一、什么是分布式¶
把一个系统拆成多个独立部署的服务,通过网络通信,对外表现为一个整体。
二、CAP 定理¶
分布式系统不能同时满足:
- Consistency(一致性):所有节点看到相同数据。
- Availability(可用性):每个请求都能收到响应。
- Partition Tolerance(分区容错):网络分区时系统仍能运行。
网络分区不可避免,所以实际是 CP 或 AP 二选一。
| 选择 | 系统 |
|---|---|
| CP | ZooKeeper、etcd、HBase |
| AP | Eureka、Cassandra、Nacos(默认 AP) |
三、BASE 理论¶
CAP 的延伸,是大规模分布式系统的实践:
- Basically Available:基本可用,允许响应时间变长、部分功能降级。
- Soft State:软状态,允许中间状态。
- Eventually Consistent:最终一致,不要求实时强一致。
四、分布式带来的问题¶
- 网络不可靠:超时、丢包、重复。
- 状态不一致:多副本如何同步。
- 分布式事务:跨库跨服务如何保证一致。
- 服务治理:注册发现、熔断、限流。
- 排查困难:链路追踪、日志聚合。
五、常见中间件¶
- 注册中心:Nacos、Consul、Zookeeper、Eureka。
- 配置中心:Nacos、Apollo。
- RPC:Dubbo、gRPC。
- 网关:Spring Cloud Gateway、Zuul。
- 消息队列:RocketMQ、Kafka。
- 熔断限流:Sentinel、Resilience4j。
六、微服务 vs SOA¶
- SOA:粗粒度,ESB 总线。
- 微服务:细粒度,独立部署,轻量级通信(HTTP/RPC)。
七、设计原则¶
- 单一职责:一个服务只做一件事。
- 无状态:服务节点不存状态,方便水平扩展。
- 故障隔离:一个服务挂不影响其他。
- 最终一致:接受短暂不一致,用消息队列补偿。
面试加分
- 答 CAP 时强调"网络分区一定会发生,所以实际是 CP/AP 二选一"。
- 阿里为什么选 AP?因为注册中心短暂不一致比不可用更可接受。