一直听说过分布式由于找工作需要所以学习,都知道有分布式集群(Hdoop)、分布式存储(GFS,NFS)、分布式数据库(Hbase,redis,memcaced)、分布式系统、分布式软件等,今天开始后续的学习。

      分布式就是分开了、分散了、比如数据处理(北京搞北京、天津搞天津),比如集群(一个人干一件事、发现不如一个人生十个八个然后每俩去干一件事情)。

       行处理是利用多个功能部件或多个处理机同时工作来提高系统性能或可靠性的计算机系统,这种系统至少包含指令级或指令级以上的并行。

       分布式处理则是将不同地点的,或具有不同功能的,或拥有不同数据的多台计算机通过通信网络连接起来,在控制系统的统一管理控制下,协调地完成大规模信息处理任务的计算机系统。(百科解释)

  以下是整理的一个聊天的资料比较的分布式与集群的区别:一句话,就是:“分头做事”与“一堆人”的区别

集群是个物理形态,分布式是个工作方式。

集群一般被分为三种类型,高可用集群如RHCS、LifeKeeper等,负载均衡集群如LVS等、高性能运算集群。

管理方式:集群一般是物理集中、统一管理的,而分布式系统则不强调这一点。

分布式:一个业务分拆多个子业务,部署在不同的服务器上,当然一个子业务也可以部署一个集群(哈哈)

集群:同一个业务,部署在多个服务器上

分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。

分布式:指将不同的业务分布在不同的地方。 

集群:将几台服务器集中在一起,实现同一业务。

效率:

分布式:以缩短单个任务的执行时间来提升效率的。

集群则:通过提高单位时间内执行的任务数来提升效率。

中心化:

分布式是相对中心化而来,强调的是任务在多个物理隔离的节点上进行。中心化带来的主要问题是可靠性,若中心节点宕机则整个系统不可用,分布式除了解决部分中心化问题,也倾向于分散负载,但分布式会带来很多的其他问题,最主要的就是一致性。

集群就是逻辑上处理同一任务的机器集合,可以属于同一机房,也可分属不同的机房。分布式这个概念可以运行在某个集群里面,某个集群也可作为分布式概念的一个节点。

集群则是一组物理计算机的组合,组合起来的目标得看具体场合,比如有的是为了提高可用性,有的是为了提高性能,有的是为了应对高并发。集群内的计算机之间使用什么方式进行协作,得看它们用的是什么软件系统:既可能是分布式的系统也可能是普通的软件系统。


案例一:如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行该任务需10小时。

采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型)

而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,1小时后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务,而对于分布式而言???


案例二:集群强调的是任务的同一性,分布式强调的是差异性。例如同样是负责文件传输的服务器,

对终端用户而言它只知道文件传到服务器上了,不在乎后台是几台服务器,分布在那些机房。

对于后台管理人员而言,同样是文件上传我可以在上海放置服务器处理上海地区的请求,

北京放置服务器处理北京的请求,最终实现全部地区用户可上传文件的任务,所以从这个角度来看是分布式的。

另一方面,上海的服务器可能有多台,同时处理上海来的请求,只是前端做了负载均衡,其内部运行逻辑什么的

完全是另外一台的clone,有一台挂掉了对整体业务无影响,所以从这个角度看是集群。如果北京的服务器全挂了,

那么北京的用户就没得玩了,从分布式的角度看对此是无能为力的,如果在此情况下我将北京的请求转到上海,

实现城市间的集群概念,那么就可handle 这个问题了。不过目前好像集群的概念用的比较范了,

你对用户说他的文件上传到了服务器集群也是ok的,至于内部是怎么个架构怎么个分布都无所谓了。


案例三:加入一个企业用一套体量很大的系统,需要高效率处理任务的目标时,我觉得采用分布式+集群的模式 是不是应该是最佳的。也就是说,先用分布式把这套系统进行负载均衡,即把各个功能模块进行拆分(也就是分布式概念),然后在拆分的基础上增加集群(个人觉得这个不错)。

所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上(蒙圈)。