第一章、分布式计算概论
什么是分布式?
在计算机科学中,分布式计算(英语:Distributed computing,又译为分散式计算)这个研究领域,主要研究分散系统(Distributed system)如何进行计算。分散系统是一组电子计算机(computer),通过计算机网络相互链接与通信后形成的系统。把需要进行大量计算的工程数据分区成小块,由多台计算机分别计算,在上传运算结果后,将结果统一合并得出数据结论的科学。(来源:搜狗百科)
什么是分布式系统?
分布式系统(distributedsystem)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。(来源:搜狗百科)
什么是分布式计算?
所谓分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果。(来源:搜狗百科)
可以从分布式与分布式计算的定义中我们可以看出来二者之间的联系是非常紧密的,我的理解就是分布式领域就是研究分布式计算的,那么分布式系统呢?它与前两者间又有什么联系呢?乍一看定义好像他们之间没什么联系,但通过仔细阅读,我们发现,分布式与分布式系统都是建立在计算机网络上.
说到这里笔者(Java程序员)突然想到了目前Java项目最流行的微服务架构,而微服务架构的前提就是项目模块划分:将一个大型项目(软件系统)划分成多个子模块,每个子模块可以独立开发,独立部署(分别部署在不同的服务器上),那么这个项目就是分布式的一个项目.很显然,每个模块都对外提供了接口供其他系统调用,而调用者不知道被调用服务的具体细节,可以说是很符合"高内聚,低耦合"的特点了.结论分布式计算一定是基于分布式系统的.
分布式计算的优点:
- 低廉的计算机价格和网络访问的可用性
- 资源共享
- 可伸缩性
- 容错性
分布式计算的缺点
- 多点故障
- 安全性低
分布式计算的相关计算形式
单机计算
单台计算机进行计算
并行计算
相对于单核CPU的串行计算,并行计算使用多核CPU来提高计算性能.并行计算与分布式计算的区别是,分布式计算强调让任务的分布执行,而并行计算强调任务的并发执行.
网络计算
网络计算泛指使用用网络的连接将各种资源和系统组合起来实现资源共享,协同工作和联合计算为用户提供服务的计算方式,如分布式计算,云计算等等
网格计算
利用互联网吧地理上广泛分布的各种资源连成一个逻辑整体,为用户提供一体化信息和应用服务.
网格计算侧重并行的计算集中性需求,并且很难扩展
云计算
虽然书上说云计算没有普遍一致性的定义,但是百度百科是这样写的: 云计算(cloud computing)是分布式计算的一种,指的是通过网络“云”将巨大的数据计算处理程序分解成无数个小程序,然后,通过多部服务器组成的系统进行处理和分析这些小程序得到结果并返回给用户。
分布式系统的特征
- 可靠性
- 可扩展
- 可用性
- 高效性
- CAP理论
- 一致性( C )
- 可用性( A )
- 分区容错性( P )
分布式系统中,分区容错性是基本要求,对于一致性,我们通常考虑的是最终一致性而不是强一致性.
分布式计算通信
IPC程序接口原型
- send-发送
- receive-接收
- connect-连接
- disconnect-断开连接
事件同步 - 同步send和同步receive
sender发送数据后,暂停执行,当前进程暂停执行,等待receiver将处理数据的结果,receiver自启动后就一直处于阻塞状态,等待接收sender的数据,当接收到数据后receiver才开始处理,处理完毕后将结果返回给sender,sender收到处理结果后继续进行后续处理.也就是说,sender和receiver在逻辑上是串行的,所以效率也不高. - 异步send和同步receive
sender发送数据后不再等待receiver返回结果,而是先去干其他事情,而receiver确会等待接收完sender发送的所有数据才能进行下一步的处理. - 同步send和异步receive
意思差不多,略过… - 异步send和异步receive
同上…
简单来说,就是哪方同步,哪方则会出现阻塞态,如果按细节来说,同步就是sender和receiver都是工作在单线程情况下(注:笔者的理解),异步就是双方都新开了一个线程去单独执行发送或接收的工作.
第一章,欧克!