Skip to content
  • 分布式系统是由多个通过网络互联的独立节点组成的系统,协同完成共同任务。
  • 核心特性:分布性、自治性、并发性、透明性(位置透明、访问透明、故障透明)、容错性、可扩展性。

关键设计原则

1、CAP定理:一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)三者不可兼得

2、BASE理论:基本可用(Basically Available)、柔性状态(Soft State)、最终一致性(Eventual Consistency)

3、FLP不可能性:在异步网络中,无法保证在存在故障节点的情况下达成一致

常见架构模式

  • 主从模型(Master-Slave):主节点协调任务分配,从节点执行任务(如数据库主从复制)。

  • 对等模型(Peer-to-Peer):节点平等协作(如BitTorrent)。

  • 微服务架构(Microservices):业务功能拆分为独立服务(如Netflix)。

  • Serverless架构:事件驱动计算(如AWS Lambda)。

核心技术与算法

  1. 分布式通信

    • 同步 vs 异步通信:同步需等待响应,异步通过消息队列解耦(如Kafka)。
    • 消息传递机制:TCP/IP、HTTP/HTTPS、RPC(远程过程调用)。
    • 通信优化:压缩数据、批处理、序列化优化(如Protobuf)。
  2. 一致性协议

    • 强一致性:所有节点数据实时一致(如Paxos、Raft)。
    • 最终一致性:允许延迟,但最终收敛(如Cassandra)。
    • 典型算法
      • Paxos:分布式共识算法,解决拜占庭将军问题。
      • Raft:简化版共识算法,用于日志复制(如etcd、ZooKeeper)。
      • 两阶段提交(2PC):分布式事务的经典协议。
      • 三阶段提交(3PC):优化2PC的阻塞问题。
  3. 容错与高可用

    • 容错机制:数据冗余(副本)、故障检测(心跳机制)、自动恢复(重启节点)。
    • 负载均衡:动态分配任务到空闲节点(如Nginx、Kubernetes调度器)。
    • 健康检查:定期探测节点状态,剔除故障节点。
  4. 分布式存储

    • 分布式文件系统:HDFS、Ceph(支持大规模数据存储)。
    • 分布式数据库
      • 关系型:MySQL Cluster、PostgreSQL分布式扩展(如Citus)。
      • 非关系型:Cassandra(高可用)、MongoDB(分片集群)。
    • 对象存储:Amazon S3、MinIO(支持海量非结构化数据)。
  5. 任务调度与计算框架

    • 批处理:Hadoop MapReduce、Apache Spark。
    • 流处理:Apache Flink、Apache Storm。
    • 任务调度:Kubernetes、Apache Airflow(定时任务)。
  6. 分布式锁与协调

    • 分布式锁服务:ZooKeeper、etcd(基于租约的锁实现)。
    • 互斥算法:Lamport的拜占庭将军算法、令牌环算法。
    • 选举算法:Raft中的Leader Election机制。

三、核心挑战与解决方案

  1. 部分失效问题

    • 网络分区:通过Quorum机制(如R+ W > N)保证数据一致性。
    • 节点故障:副本冗余(如HDFS的3副本策略)+ 心跳检测 + 自动重启。
  2. 一致性难题

    • CAP权衡:例如,金融系统优先选择一致性(如Raft),而高可用场景(如电商)选择最终一致性(如DynamoDB)。
    • 分布式事务:使用Seata、TCC(Try-Confirm-Cancel)模式解决跨服务事务。
  3. 性能与延迟

    • 低延迟设计:缓存(Redis)、CDN加速、就近访问(地理位置优化)。
    • 通信开销:减少序列化/反序列化成本,使用二进制协议(如gRPC)。
  4. 扩展性

    • 水平扩展:通过增加节点提升容量(如Kubernetes的自动扩缩容)。
    • 垂直扩展:提升单节点性能(如SSD硬盘、高性能网卡)。
  5. 安全与权限

    • 认证与授权:OAuth 2.0、JWT(JSON Web Token)。
    • 数据加密:TLS/SSL加密通信、AES加密存储。
    • 防止攻击:DDoS防护(如Cloudflare)、SQL注入防御(参数化查询)。

四、实践案例与工具

  1. 典型应用场景

    • 大数据处理:Hadoop + Spark(批处理)、Flink(实时流处理)。
    • 高可用服务:Kubernetes + etcd(服务发现与配置管理)。
    • 实时监控:Prometheus + Grafana(分布式指标采集与可视化)。
  2. 常用技术组件

    • 协调服务:ZooKeeper、etcd(分布式键值存储)。
    • 消息队列:Kafka、RabbitMQ(解耦生产者与消费者)。
    • 服务网格:Istio(流量管理、安全策略)。
    • 日志聚合:ELK Stack(Elasticsearch + Logstash + Kibana)。

推荐书单

凤凰架构:构建可靠的大型分布式系统

构建可扩展分布式系统:方法与实践

分布式系统架构:架构策略与难题求解

性能之道:分布式系统全栈性能优化

分布式机器学习:系统、工程与实战

超大流量分布式系统架构解决方案:人人都是架构师2.0

分布式应用系统架构设计与实践