分布式系统

分布式系统是一种将多个独立计算节点通过网络协作组成统一整体的系统架构,它的核心目标是资源共享、性能扩展与高可用性。 在现代互联网体系中,几乎所有大型系统(搜索引擎、电商、支付、云计算平台)都构建在分布式架构之上。


一、概览

flowchart TB
    subgraph 前端
        W[网站(前端)]
    end
    subgraph 后端
        subgraph 分布式组件
            ST[后端存储系统]
            CM[后端计算系统]
            MWs["各种中间件\n(消息中间件 / RPC中间件 / 数据库访问中间件)"]
            CL[集群管理系统(分布式协调组件)]
            ST & CM & MWs --> CL
        end
        subgraph 单机组件
            OS["单机操作系统(Linux、Windows 等)"]
            HW[硬件、网络等]
            OS --> HW
        end
        分布式组件 --> 单机组件
    end
    前端 --> 后端

分布式系统通常由以下几个主要部分构成:

中间件作为通信与协调的核心层,连接了整个系统的各个节点:

flowchart TB
    subgraph N1[节点1]
        A1[应用] --> M1[中间件] --> O1[Windows] --> H1[Pentium]
    end
    subgraph N2[节点2]
        A2[应用] --> M2[中间件] --> O2[Linux] --> H2[Pentium]
    end
    subgraph N3[节点3]
        A3[应用] --> M3[中间件] --> O3[Solaris] --> H3[SPARC]
    end
    subgraph N4[节点4]
        A4[应用] --> M4[中间件] --> O4[Mac OS] --> H4[Macintosh]
    end
    H1 & H2 & H3 & H4 --> NET[网络]
    M1 & M2 & M3 & M4 -.-> Public["应用的公共基础\n(中间件屏蔽底层异构差异)"]

二、网络与通信基础

分布式系统运行在计算机网络之上。网络的可靠性与延迟直接影响系统的一致性、可用性与性能。

1. 网络硬件

2. 网络协议与服务


三、接入与负载均衡层

前端层和接入层负责请求的分发与入口管理。

1. 前端技术

2. 反向代理

3. 负载均衡

负载均衡的核心目标是 将请求均匀分发到后端节点,避免单点瓶颈。


四、分布式中间件

中间件是分布式系统的“胶水层”,承担节点间通信、数据一致性、任务协调、异步传递等关键职责。

1. 分布式协调与同步

2. 数据访问中间件

3. 分布式服务调用(RPC)中间件

4. 分布式消息中间件

5. 分布式链路追踪中间件


五、分布式存储系统

1. 分布式文件系统

业界代表:

设计要点:


2. NoSQL 数据库

NoSQL 以 高可用与扩展性 为目标,通过牺牲部分 ACID 特性(尤其是 C)实现 CAP 平衡。

类型 特征 代表系统
键值型 高速缓存、简单查询 Redis、LevelDB、Tair、Dynamo
列存型 按列存储、高效聚合 Bigtable、HBase、Cassandra
文档型 灵活的 schema-free 数据模型 MongoDB、CouchDB、RethinkDB
搜索引擎型 全文索引与查询优化 ElasticSearch、Solr
图数据库 图结构关系与遍历 Neo4j、JanusGraph
时序数据库 时间序列数据采集与分析 InfluxDB、Prometheus TSDB

3. NewSQL 数据库

NewSQL 融合了传统关系型数据库与 NoSQL 的优点,兼顾 一致性与可扩展性

代表系统:

关键特性:


六、分布式任务调度

分布式任务调度系统是集群资源管理与作业分配的核心组件。

1. 单体调度(Centralized Scheduler)

一个主节点负责所有调度决策:

2. 两层调度(Two-Level Scheduler)

将调度职责分为两层:

stateDiagram-v2
  MPIScheduler --> MesosMaster: 注册任务
  HadoopScheduler --> MesosMaster: 注册任务
  MesosMaster --> MesosSlave1: 下发任务
  MesosMaster --> MesosSlave2: 下发任务
  MesosSlave1 --> MesosMaster: 上报资源
  MesosSlave2 --> MesosMaster: 上报资源

3. 共享状态调度(Shared-State Scheduler)

每个调度器维护全局状态视图,通过状态存储共享集群信息。

flowchart TD
    subgraph Scheduler1[Scheduler]
        CellState1[Cell State]
    end
    subgraph Scheduler2[Scheduler]
        CellState2[Cell State]
    end
    subgraph StateStorage[State Storage]
        CellStateStorage[Cell State]
    end
    Scheduler1 --> |Tasks| StateStorage
    Scheduler2 --> |Tasks| StateStorage

七、分布式系统设计思想

1. 云化与虚拟化

2. 一切皆可能失败

3. 水平扩展(Scale Out)

4. 简化与解耦

5. 微服务化与可观测性


八、大型互联网架构共性分析

层级 特征 实现
分层设计 存储层、服务层、接口层、分析层 典型三层/四层架构
集群管理 容器化、资源池化、独立调度系统 Kubernetes、Mesos
存储层 文件系统 + 数据库 + 缓存 HDFS、MySQL、Redis
服务层 RPC 框架 + 注册中心 + 消息队列 Dubbo、Kafka、Zookeeper
数据分析 实时 + 离线分离 Hadoop、Spark、Flink
可观测性 监控、日志、追踪、报警体系 Prometheus、SkyWalking

九、总结

分布式系统是一门跨越 计算机网络、操作系统、数据库、系统架构 的综合学科。 它的核心挑战包括:

关联内容(自动生成)