导入
分布式计算原理导论
了解分布式计算原理。
分布式系统的概述
著名计算机科学家安德鲁·塔能鲍姆(Andrew Tanenbaum)对分布式系统的定义如下:
分布式系统 是一组独立的计算机,它们对用户而言表现为一个单一的、协调一致的系统。
在本课程中,当我们提到“计算机”时,指的是物理计算机或虚拟机。
考虑一台物理计算机上运行一个或多个虚拟机的情况(这在当今很常见)。
这些计算机协同工作以实现共同目标。它们不必位于同一房间或建筑物内。事实上,它们彼此之间了解甚少。
通信
那么,这些计算机是如何进行通信的呢?
它们通过互相传递消息来实现通信,就像学生们过去在学校用纸条传话一样,在在线消息成为日常生活一部分之前。
分布式系统的通信是一个非常复杂的话题,因此在本课程中,我们暂时以这种简化的思路来理解它。
请记住,所有通信方式都基于通过网络交换消息,而不依赖于某些计算机位于同一台物理机器上的事实,如上所述。
在这种情况下,它们可能共享部分系统的内存。然而,在分布式架构中,这种做法是不可取的,应尽量避免。
示例
- 一个班级的学生集体合作解决数学问题,例如在学校竞赛中,而非期末考试。
- 移动通信网络。
- 地震仪组成的网络。
- Folding@Home 及类似项目。
优势
构建分布式系统具有复杂性,并非适用于所有问题。
分布式系统的主要优势有两个:
- 横向扩展性:我们可以轻松地向分布式系统中添加新的计算机,以满足计算需求。
- 可靠性:某台计算机出现故障?只要架构设计合理,系统和最终用户不会受到影响。
缺点
然而,请记住,计算机科学中的每一个选择和技术都伴随着权衡。常见的缺点包括:
- 计算机之间的某些消息可能会丢失。大多数系统工程师会实施恢复策略来应对这种情况。
- 通过网络传输消息速度较慢,即使使用共享内存和强大的CPU来提升性能也是如此。
- 难以监控和调试。想象一下,你有数百台机器需要排查问题。
- 基础设施成本相对较高。