分布式架构
Distributed Systems
多台机器协同工作,在不可靠的网络上构建可靠的系统。
分布式系统是一组独立计算机通过网络协作,对外呈现为单一连贯系统。核心挑战来自三大不确定性:节点可能故障(crash、Byzantine)、网络可能延迟或分区、时钟可能不同步。核心概念包括:CAP 定理(一致性 Consistency、可用性 Availability、分区容忍 Partition tolerance 三者最多满足其二)、共识算法(Paxos、Raft,在故障节点间达成一致)、复制策略(同步复制保证一致性,异步复制保证可用性)、分布式事务(2PC、3PC、Saga)、向量时钟(检测并发写入冲突)、一致性哈希(数据分片和负载均衡)。典型系统:ZooKeeper/etcd(协调服务)、Kafka(分布式消息)、Cassandra/DynamoDB(宽列存储)。
单机有容量和可用性上限。当数据量或请求量超过单机能力,或需要跨地域部署以降低延迟,必须使用分布式架构。分布式系统通过冗余实现容错(一个节点故障不影响整体服务),通过分区实现水平扩展(增加节点提升容量)。但分布式引入了新问题:网络不可靠导致消息可能丢失或延迟;时钟不同步导致无法确定事件顺序;部分故障导致系统处于不一致状态。CAP 定理指出:在网络分区发生时,必须在一致性和可用性之间做出选择。
程序员通过分布式系统框架和中间件使用这些抽象。RPC 框架(gRPC、Dubbo)使远程调用像本地调用一样;服务发现(Consul、Nacos)帮助服务找到彼此;负载均衡(Nginx、Envoy)分散请求;熔断器(Hystrix、Sentinel)防止级联故障。理解分布式有助于理解:为什么微服务需要服务注册和发现(服务实例动态变化);为什么分布式锁如此复杂(网络分区时可能失效);为什么'精确一次'语义几乎不可能实现(至少一次 + 幂等是更务实的选择)。
Bottom-up:由下层如何构建
本层建立在以下层级之上:
Top-down:向上暴露什么接口
Programmer View:程序员视角
我能操作吗?
通过 RPC 框架(gRPC/Dubbo)、消息队列(Kafka/RabbitMQ)、分布式协调服务(ZooKeeper/etcd)间接操作。云服务商提供托管的分布式服务(AWS DynamoDB、Google Spanner)。
成本模型
| 指标 | 量级 | 备注 |
|---|---|---|
| 同数据中心 RPC | ~0.5-2 ms | 千兆/万兆网络 |
| 跨数据中心 RPC | ~50-200 ms | 受光速约束 |
| Raft 共识延迟 | ~10-50 ms | 取决于节点数和网络延迟 |
| 分布式锁获取 | ~5-20 ms | Redis/ZooKeeper 实现 |
| 数据同步复制 | 取最慢节点延迟 | 强一致的代价 |
常见陷阱
- !网络分区处理:当网络分区发生时,系统必须在一致性和可用性间做出选择。盲目追求强一致会导致服务不可用
- !时钟依赖:分布式系统中不能假设时钟同步。使用逻辑时钟(Lamport 时钟、向量时钟)替代物理时钟进行因果排序
- !级联故障:一个服务的故障可能导致依赖它的服务也故障,最终雪崩。应使用熔断器、限流、降级策略防止级联故障
GPU 对应表
GPU 不是 CPU 的替代品,而是抽象阶梯的并行分支。每一层抽象在 GPU 上都有对应的实现:
| 层级 | 抽象 | GPU 的对应 |
|---|---|---|
| L0 | 晶体管 | 同样——GPU 由数十亿晶体管构成 |
| L1 | 逻辑门(NAND) | 同样——GPU 的逻辑门规模远超 CPU |
| L2 | ALU | GPU 有海量向量 ALU(CUDA 核心) |
| L3 | 寄存器 / 存储 | GPU 寄存器、共享内存、显存(HBM) |
| L4 | 机器指令 / ISA | CPU ISA + GPU ISA(SASS/GCN) |
| L5 | 计算机体系结构 | CPU 架构 + GPU 架构(SIMT) |
| L6 | 汇编语言 | CPU 汇编 + GPU 汇编(PTX/SASS) |
| L7 | 汇编器 | CPU 汇编器 + GPU 汇编器 |
| L8 | 虚拟机 | JVM/CLR + GPU 运行时(CUDA/OpenCL) |
| L9 | 高级语言 | C/C++/Python + CUDA/OpenCL/SYCL |
| L10 | 编译器 | GCC/LLVM + NVCC/LLVM GPU 后端 |
| L11 | 操作系统 | OS + GPU 驱动 + 命令调度 |
| L12 | 系统库 / 运行时 | libc + cuDNN/cuBLAS/ROCm |
| L13 | 容器 / 编排 | Docker + NVIDIA Container Toolkit + K8s Device Plugin |
| L14 | 云原生应用 | 分布式训练/推理、GPU 池化、MIG/vGPU |
💡 从 L0 到 L3,GPU 和 CPU 共享相同的物理基础;从 L4 开始,两者分道扬镳——CPU 走向复杂的乱序执行和分支预测,GPU 走向 SIMT 和海量并行。到了 L14,两者在云原生层面重新汇合。
相关主题线
抽象之道
The Art of Abstraction
本层视角:分布式系统屏蔽了网络不可靠性,暴露'单一系统'的幻觉。
延迟阶梯
The Latency Ladder
本层视角:同数据中心 RPC 0.5-2ms,跨数据中心 50-200ms,受光速约束。
并发之路
The Path of Concurrency
本层视角:分布式共识(Raft/Paxos)解决多节点间的一致性问题。
一致性光谱
The Consistency Spectrum
本层视角:分布式一致性模型:线性一致 > 顺序一致 > 因果一致 > 最终一致。CAP 定理指出三者不可兼得。
状态之流
The Flow of State
本层视角:事件溯源(Event Sourcing)将状态变更建模为不可变的事件流。