章
目
录
一、分布式计算的诞生背景
人类现在已经进入了大数据时代,大型企业随着业务的不断扩展,每时每刻都产生着海量的数据,并且需要对海量的数据在规定的时间内进行快速地计算与分析,从中挖掘获取具有商业价值的信息,然而单台计算机的计算能力是有限的,因此需要采用分布式计算的方式让多台计算机实现协同计算。
二、分布式计算的应用举例
人类社会实践促进了科学技术的发展,科学技术的发展又使人类面临着巨大的计算任务,而且这些问题不仅计算量巨大,还可能是跨学科、极富挑战性的、人类亟待解决的科研课题。以下我们举几个需要分布式计算的案例:
1)天文计算
如SETI@Home通过互联网利用家用个人计算机处理天文数据的分布式计算机项目
2)航空航天飞行器的气动布局研究、结构设计、制造和试验。
3)全球气象仿真研究和短期气象预报与防灾。
4)生物病理研究
如Folding@home,是 研究蛋白质折叠,误解,聚合及由此引起的相关疾病的分布式计算项目
5)解决较为复杂的数学问题
如GIMPS寻找最大的梅森素数。
6)研究寻找最为安全的密码系统
如RC-72密码破解。
7)大型互联网企业中的应用
如阿里、腾讯
三、分布式计算系统发展前提
分布式计算系统的发展离不开如下技术的推动:
1)高性能微处理器的开发
现在的64位微处理性能可与大型机相媲美,但价格相对更便宜。
2)高速计算机网络的发明
网络IO也是影响数据传输与计算的重要因素,尤其是数据量特别大时,我们需要提高数据传输速率,比如从Mbps到Gbps。
3)计算模型和算法进展
一个好的适用于并行计算的模型和算法,将极大方便对分布式计算系统的组件与使用,比如目前形成的许多软件包和中间件产品。
四、分布式计算系统的定义
1)美国电工电子学会下属的计算机学会给出的分布式系统描述为:
分布式计算系统是由多个相互连接的计算机组成的一个整体,这些计算机在一组系统软件(分布式操作系统或中间件)环境下,合作执行一个共同的或不同的任务,最少依赖于集中的控制过程、数据和硬件。这个具体定义中,分布式系统可以用硬件、控制和数据3个维度加以检验:
分布式系统=分布式硬件+分布式控制+分布式数据
a)系统由多个计算机或集群组成,并且计算机或集群可以是异构的
b)这些计算机在物理上是独立的,在地理上是分散的
c)各个计算机的地位是平等的,不存在或很少存在主从控制或集中控制环节
d)这些计算机组成一个整体,对用户而言是透明的,尽力呈现单一系统视图
2)英国国家科学研究委员会下属的计算机学会给出的分布式系统描述为“包含多个独立的但又交互作用的计算机,它们可以对公共问题进行合作。这个系统的特点是包含多个控制路径,它们执行一个程序的不同部分而且又相互作用。”
3)P. H. Enslow总结了分布式系统的五个基本准则,从中可以对分布式系统有个更透彻的认识。
a)资源的重复性:
所谓资源的重复性是指分布式系统中硬件、软件以及数据的冗余配置。
b)物理上的分布性:
从硬件上看,不同的计算机或处理器以节点形式相对独立地分布。随着概念的技术的发展,其实这里的分布性也可以从不同层次来理解。从软件上看,每个节点都可以有全局相关的系统程序、局部系统程序以及应用程序;从数据上看,它可能是一个数据分布的系统。
c)高层操作系统(或分布式操作系统):
它负责对系统的分布性资源进行统一的控制,使一个简单的硬件堆积转变为一个统一协调的工作系统。
d)系统的透明性:
理想的分布式系统应该为最终用户屏蔽具体的系统实现细节,用户像使用单一的集中式系统一样来 使用分布式系统。
e)协作的自治性:
理想的分布式系统应该是每个节点都是一个完整的处理系统,表现出强大的自治性。
五、分布式计算系统的特征
- 资源共享
- 开放性
- 并发性
- 可伸缩性
- 容错性
- 透明性
1)资源共享
一旦授权,可以访问环境中的任何资源。
如资源管理器控制资源的访问:
- 提供命名机制
- 控制并发访问
2)开放性
新共享资源添加并被各种客户程序使用的(难易)程度。如支持异构资源的添加和使用:
- 提供统一的通信机制
- 发布访问共享资源的接口
3)并发性
分布系统中的各个组成部分可以在并发的过程中被执行。如:
- 多个用户同时访问(和更新)资源
- 多个服务进程同时运行,相互协作
4)可伸缩性
主要强调“伸”;偶尔也强调“缩”。在资源和用户数较大增长的情况下,系统性能仍能维持甚至提高。
通常表现为:
- 利用网络环境可以为更多的用户服务、而且响应更快
- 通常通过增加更多/更快的处理器,能实现更可靠、更完善的服务
如DNS的解析:一方面,不仅可以为每个根域名设置单独的服务器,还可以为访问量大的二级、更多级域名也单独设置服务器;另一方面,当访问量变小时,还可以将多个访问量小的根域名的解析合并到一台服务器上。
5)容错性
错误发生时,系统能够继续工作的能力。基于这样一个假设:硬件、软件、网络的错误不可避免。要容错,就要先知道有哪些错误(故障),再针对故障类型一一解决。分布式系统中的典型故障如下:
6)透明性
网络环境对于用户和应用程序而言,应该是一个整体,而不是一个互相协作的简单的构件集合。包括多项性质:
a)位置透明性:用户不必关心对象位于何处。
如DNS、Consul等分布式命名系统。
b)重定位透明性:对象的位置可以变化而不影响对它的调用。
仍然如DNS、Consul等。
c)迁移透明性:系统内部可以迁移对象的位置。
仍然如DNS、Consul等。
d)访问透明性:可用一致的方式访问不同类型的机器上的对象。
如Yarn、Mesos等分布式资源调度系统。
e)持久透明性:对象所处的状态既可以是活动的,也可以是静止的。
如HBase的WAL,计算机中的cache、段表、页表等。
f)失败透明性:屏蔽被访问对象的失败及恢复过程 (容错)。
如MapReduce、Spark等分布式计算框架。
g)事务处理透明性:与事务处理相关的调度、监控和恢复。
如2PC等分布式事务协议。
h)复制透明性:用户不知道有多少个对象副本存在。
如HDFS、Tair等分布式存储系统。
六、分布式计算系统的应用
- 科学计算和高性能应用
- 现代跨企业的电子商务应用
- 容错应用
- 固有的分布式应用