分布式系统的核心挑战

分布式系统面临的根本挑战可以用 CAP 定理来概括——一致性(Consistency)、可用性(Availability)、分区容错性(Partition Tolerance)三者不可兼得。

在实际工程中,我们几乎总是需要保证分区容错性,因此核心的权衡在于:

  • CP 系统:优先一致性,如 ZooKeeper、etcd
  • AP 系统:优先可用性,如 Cassandra、DynamoDB

服务间通信

常见的服务间通信方式:

方式适用场景优势劣势
gRPC内部服务调用高性能、强类型调试不如 REST 方便
REST外部 API通用、易理解性能较低
消息队列异步解耦削峰、解耦复杂度增加

关键设计原则

  1. 幂等性:所有写操作都应该是幂等的
  2. 超时与重试:设置合理的超时,使用指数退避重试
  3. 熔断降级:防止级联故障
  4. 可观测性:日志、指标、链路追踪三者缺一不可

总结

分布式系统没有银弹。好的系统设计来自对业务场景的深入理解和对技术取舍的清晰认识。