分布式系统是一种将多个独立计算节点通过网络协作组成统一整体的系统架构,它的核心目标是资源共享、性能扩展与高可用性。 在现代互联网体系中,几乎所有大型系统(搜索引擎、电商、支付、云计算平台)都构建在分布式架构之上。
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(中间件屏蔽底层异构差异)"]
分布式系统运行在计算机网络之上。网络的可靠性与延迟直接影响系统的一致性、可用性与性能。
前端层和接入层负责请求的分发与入口管理。
负载均衡的核心目标是 将请求均匀分发到后端节点,避免单点瓶颈。
中间件是分布式系统的“胶水层”,承担节点间通信、数据一致性、任务协调、异步传递等关键职责。
一致性协议
典型实现
主要功能
客户端代理
服务端代理
目标
Dubbo、Dubbox、gRPC、Thrift、Motan
特征
Kafka、RabbitMQ、RocketMQ、Pulsar
应用场景
Dapper(Google)
Zipkin、SkyWalking、Pinpoint、鹰眼
作用
业界代表:
设计要点:
传输模式(上传/下载/远程访问)
命名与目录层次
命名透明性
文件共享语义
NoSQL 以 高可用与扩展性 为目标,通过牺牲部分 ACID 特性(尤其是 C)实现 CAP 平衡。
| 类型 | 特征 | 代表系统 |
|---|---|---|
| 键值型 | 高速缓存、简单查询 | Redis、LevelDB、Tair、Dynamo |
| 列存型 | 按列存储、高效聚合 | Bigtable、HBase、Cassandra |
| 文档型 | 灵活的 schema-free 数据模型 | MongoDB、CouchDB、RethinkDB |
| 搜索引擎型 | 全文索引与查询优化 | ElasticSearch、Solr |
| 图数据库 | 图结构关系与遍历 | Neo4j、JanusGraph |
| 时序数据库 | 时间序列数据采集与分析 | InfluxDB、Prometheus TSDB |
NewSQL 融合了传统关系型数据库与 NoSQL 的优点,兼顾 一致性与可扩展性。
代表系统:
关键特性:
分布式任务调度系统是集群资源管理与作业分配的核心组件。
一个主节点负责所有调度决策:
将调度职责分为两层:
stateDiagram-v2
MPIScheduler --> MesosMaster: 注册任务
HadoopScheduler --> MesosMaster: 注册任务
MesosMaster --> MesosSlave1: 下发任务
MesosMaster --> MesosSlave2: 下发任务
MesosSlave1 --> MesosMaster: 上报资源
MesosSlave2 --> MesosMaster: 上报资源
每个调度器维护全局状态视图,通过状态存储共享集群信息。
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
| 层级 | 特征 | 实现 |
|---|---|---|
| 分层设计 | 存储层、服务层、接口层、分析层 | 典型三层/四层架构 |
| 集群管理 | 容器化、资源池化、独立调度系统 | Kubernetes、Mesos |
| 存储层 | 文件系统 + 数据库 + 缓存 | HDFS、MySQL、Redis |
| 服务层 | RPC 框架 + 注册中心 + 消息队列 | Dubbo、Kafka、Zookeeper |
| 数据分析 | 实时 + 离线分离 | Hadoop、Spark、Flink |
| 可观测性 | 监控、日志、追踪、报警体系 | Prometheus、SkyWalking |
分布式系统是一门跨越 计算机网络、操作系统、数据库、系统架构 的综合学科。 它的核心挑战包括: