介绍分布式系统的相关概念。
Overview
Site is location of the machine, node refers to specific system
Configuration of distributed system: client-server, peer-to-peer, or hybrid
Communication over a network occurs through message passing
Reasons for Distributed Systems
- Resource sharing
- Computation speedup
- Reliability
Network and Distributed Operating Systems
LAN(Local Area Network)
小范围局域网,通过以太网构建。组成部分相对简单。
WAN(Wide Area Network)
通过点对点(P2P)连接,利用电话线、光缆、无线电波等链路实现站点间的连接。在连接过程中,路由器起到关键作用,它负责将数据从一个网络准确地转发到另一个网络,引导网络流量
e.g. Internet
Network-oriented Operating Systems
Network Operating Systems
用户能感知到多台机器的存在,访问不同机器的资源需要通过特定方式 e.g. ssh
Transfer data: FTP
Distributed Operating Systems
用户感知到的只有一台机器,所有资源都在同一台机器上,用户不需要关心资源的分布情况
问远程资源和访问本地资源的操作方式相似。支持多种资源迁移方式
具有负载均衡功能,可将进程合理地分布到网络中的各个节点
Design Issues of Distributed Systems
Robustness
存在硬件故障,需要有容错机制
Failure detection:use heartbeat protocol,如 Site A 和 Site B 建立连接后,会按固定间隔交换 “I-am-up” 消息,告知对方自己正常运行。若 Site A 未在规定时间收到 Site B 消息,会先假设对方异常或消息丢失,然后发送 “Are-you-up?” 消息。若多次尝试仍无回复,便认定出现故障。
但无法检测具体故障类型
Reconfiguration and recovery:
- 链路故障
- 站点故障
故障发生/恢复都需要广播
Transparency
- 用户界面透明性:分布式系统在用户界面上不应区分本地资源和远程资源。
- 用户移动性透明支持:用户可以在分布式系统覆盖的环境中,登录任意一台机器,都能看到与自己之前登录环境一致的界面和资源
Scalability
- 资源接纳
- 负载处理
- 资源利用和优化
Distributed File Systems
DFS 的客户端、服务器和存储设备分散在分布式系统的各个机器中。它的关键特征是对分布式存储设备的管理,目的是让客户端像使用传统集中式文件系统一样使用它,用户无需关心文件实际存储位置。
架构模型:
- 服务器-客户端模型:客户端通过网络访问 DFS 服务器,服务器负责管理文件存储和访问权限
- 集群式模型:多个服务器组成集群,共同管理文件存储和访问,提供更高的性能和可靠性
Client-Server Model
服务器负责将文件以及元数据存储在其连接的存储设备上。客户端在需要访问文件时,会与服务器建立联系并发送文件请求。客户端修改文件后进行数据同步。局限是当服务器发生故障时,整个系统会出现单点故障问题,所有依赖该服务器的文件访问都会受到影响。而且,服务器会成为数据和元数据请求的瓶颈。
Cluster-based Model
客户端连接到主元数据服务器和多个数据服务器。主元数据服务器负责维护数据服务器与文件块的映射关系,以及文件和目录的层次结构映射。数据服务器存储文件的 “块”,这些块是文件的部分数据。文件块会被复制 n 次,以此提高容错能力,确保在部分数据服务器出现故障时,文件仍可正常访问,同时也能加快文件的访问速度
Distributed File System Challenges
Naming and Transparency
DFS 需要建立逻辑对象(如文件名)和物理对象(文件实际存储位置)之间的映射关系。理想情况为用户无需知道文件存储位置,实际存在不同命名结构:按主机名和本地名组合命名、挂载远程目录、单一全局命名结构
e.g.1
server1:/home/user/documents/report.pdf
1
2
3
4
5
6# 挂载远程NFS共享到本地/mnt/remote-docs目录
mount server2:/exports/documents /mnt/remote-docs
# 之后可以通过本地路径访问
ls /mnt/remote-docs/
cat /mnt/remote-docs/report.txt1
/project/marketing/presentations/quarterly_report.pptx
Remote File Access
当用户请求访问远程文件时,首先要确定存储该文件的服务器,之后才能进行数据传输。在这一过程中,使用常见的远程服务机制,如 RPC 范式来实现数据传输。但实际情况中,网络延迟、带宽限制等因素会对数据传输产生显著影响。比如在网络状况不佳时,用户访问远程文件可能需要等待很长时间,文件加载缓慢,严重降低了文件访问效率。
为减少网络流量,DFS 通常会采用缓存机制。即把近期访问过的文件数据存储在本地缓存中,但会导致缓存一致性问题
Cache Consistency
要确保本地缓存数据与主副本的一致性,有客户端发起检查和服务器主动处理两种方式。
不同的系统采取不同策略应对。比如 HDFS,它只允许追加式写入操作,且同一时间只允许一个文件写入者,这种限制在一定程度上简化了缓存一致性的管理。因为只有一个写入者,数据变更相对有序,更易于保证缓存数据和主副本的一致性。而 GFS 支持随机写入和并发写入,这虽然提供了更灵活的写入方式,但也使得缓存一致性的管理难度大增,需要更复杂的机制,如版本控制、锁机制等,来确保各个缓存副本与主文件一致 。