分布式系统的挑战与应对
1. 分布式系统的现实困境
在构建软件时,单台计算机上的程序行为通常是可预测的。当硬件正常工作时,相同的操作总是产生相同的结果,具有确定性。若出现硬件问题,往往会导致系统全面故障,如内核崩溃、蓝屏死机或无法启动等。计算机设计倾向于在内部出现故障时让系统完全崩溃,而非返回错误结果,因为错误结果处理起来既困难又容易让人困惑。
然而,当软件运行在通过网络连接的多台计算机上时,情况就截然不同了。分布式系统无法再依赖理想化的系统模型,必须直面现实世界中的各种问题。在分布式系统中,部分组件可能会以不可预测的方式出现故障,而其他部分仍能正常工作,这种情况被称为部分故障。部分故障具有不确定性,涉及多个节点和网络的操作有时能正常执行,有时却会意外失败,甚至无法确定操作是否成功,因为网络中消息传输的时间也是不确定的。
2. 不同计算系统的故障处理哲学
在构建大规模计算系统方面,存在不同的哲学理念,涵盖高性能计算(HPC)、云计算以及传统企业数据中心等不同类型。
| 系统类型 | 特点 | 故障处理方式 |
|---|---|---|
| 超级计算机 | 拥有数千个 CPU,用于计算密集型科学计算任务,如天气预报或分子动力学模拟,通常采用专用硬件,节点间通过共享内存和远程直接内存访问(RDMA)通信,使用专用网络拓扑结构 | 作业会定期将计算状态保存到持久存储中。若有节点故障,通常会停止整个集群工作负载,修复故障节点后从最后一个检 |
分布式系统挑战与应对策略
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



