第2章 分布式进程与通信
进程与线程、进程间通信、客户机/服务器、RPC、消息通信与多播(含 Gossip)。
下载本章 PDF2.1 进程、线程与地址空间
1. 知识点论述
「2.1 进程、线程与地址空间」是《分布式计算系统》通信部分的核心知识点。说明独立节点如何通过进程、线程、RPC 与消息协同工作。本知识点首先把握:冯·诺依曼模型:取指、执行,指令和数据经总线进出存储器。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 冯·诺依曼模型:取指、执行,指令和数据经总线进出存储器。
- 进程:资源分配单位,有独立地址空间;切换要换页表等内核状态。
- 线程:调度单位,共享进程地址空间,切换更轻,便于共享数据。
- 多进程的问题:通信和切换都更贵;多线程要自己处理共享数据。
4. 应用场景
- Web 服务器用线程池并发处理连接。
- 理解为什么高并发服务更倾向多线程而非每连接一进程。
- 后续 RPC/Socket 编程都以进程与地址空间模型为前提。
2.2 进程间通信
1. 知识点论述
「2.2 进程间通信」是《分布式计算系统》通信部分的核心知识点。说明独立节点如何通过进程、线程、RPC 与消息协同工作。本知识点首先把握:协议分层:应用不必直接面对传输细节,中间件提供更高层服务。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 协议分层:应用不必直接面对传输细节,中间件提供更高层服务。
- 按时间耦合:持久通信可暂存消息;瞬时通信要求双方当时都在。
- 按阻塞:同步调用挂起等待;异步调用提交后继续执行。
- 典型:客户机/服务器请求应答,消息队列削峰和解耦。
4. 应用场景
- 聊天、远程调用、消息队列都建立在进程间通信之上。
- 选择同步/异步、持久/瞬时决定系统耦合与延迟。
- 中间件把传输细节从业务逻辑中剥离。
2.3 客户机与服务器
1. 知识点论述
「2.3 客户机与服务器」是《分布式计算系统》通信部分的核心知识点。说明独立节点如何通过进程、线程、RPC 与消息协同工作。本知识点首先把握:客户机支持位置透明和复制透明:换地址、换副本,调用方式不变。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 客户机支持位置透明和复制透明:换地址、换副本,调用方式不变。
- 连接方式:面向连接与无连接;迭代服务器与并发服务器。
- 多线程服务器:监听线程接受连接,工作线程处理请求。
- 无状态服务器更容易扩展和恢复;有状态服务可以用无状态服务器加外部状态来实现。
4. 应用场景
- 无状态 API 网关便于水平扩展与滚动升级。
- 有状态会话可外置到 Redis,服务器本身保持无状态。
- 并发服务器模型是 RPC、HTTP 服务的基础。
2.4 远程过程调用
1. 知识点论述
「2.4 远程过程调用」是《分布式计算系统》通信部分的核心知识点。说明独立节点如何通过进程、线程、RPC 与消息协同工作。本知识点首先把握:目标:远程调用写起来像本地过程调用。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 目标:远程调用写起来像本地过程调用。
- 步骤:客户过程调用客户存根,存根编组参数,经网络传到服务器存根,解组后调用服务过程,再把结果编组返回。
- 参数:基本类型要统一数据表示;指针用 copy-in/copy-out,不能直接传地址。
- 绑定:客户进程要找到服务器进程。
- 异步 RPC:调用方不等结果;需要结果时再用回调或第二次调用取回。
- 也可以把一个 RPC 发到一组服务器。
4. 应用场景
- 微服务之间用 gRPC/Thrift 互调。
- 分布式文件系统、配置中心对客户端暴露过程式接口。
- 异步 RPC 用于通知类调用,避免阻塞关键路径。
2.5 面向消息的通信
1. 知识点论述
「2.5 面向消息的通信」是《分布式计算系统》通信部分的核心知识点。说明独立节点如何通过进程、线程、RPC 与消息协同工作。本知识点首先把握:瞬时:Berkeley Socket、MPI。MPI 面向高性能并行进程通信。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 瞬时:Berkeley Socket、MPI。MPI 面向高性能并行进程通信。
- 持久:消息队列。原语是发送和接收,队列负责缓冲。
- 结构:生产者、队列、消费者;Broker 负责路由和投递;通道代理负责跨系统传递。
4. 应用场景
- 订单削峰:生产者写入队列,消费者异步处理。
- 跨系统集成:ERP、支付、物流通过 Broker 解耦。
- MPI 适合高性能科学计算的瞬时通信。
2.6 多播
1. 知识点论述
「2.6 多播」是《分布式计算系统》通信部分的核心知识点。说明独立节点如何通过进程、线程、RPC 与消息协同工作。本知识点首先把握:组成员关系要管理加入和退出。学习时请把它放回整门课主线——把独立计算机组织成对用户像一台机器的系统,并用通信、数据放置、复制、容错与调度把这件事做可靠。
3. 知识点详解
- 组成员关系要管理加入和退出。
- 定序:FIFO、因果序、全序。定序决定分布式账本和应用能假设什么。
- ISIS:ABCAST 提供全序,CBCAST 提供因果序和虚拟同步。
- 应用层多播:在覆盖网上转发,边越多开销越大。
- Gossip / 反熵:随机找对等方交换状态,适合大规模最终同步;谣言传播用停止概率控制开销。
4. 应用场景
- 配置变更、成员变更用组播或 Gossip 扩散。
- 监控心跳与集群状态用反熵同步。
- 需要全序的账本类应用可参考 ISIS 定序思想。