在很多程序中我们越来越多的接触分布式和集群,虽然两者不同,但是大家有没有仔细的想过两者之间有怎样的联系和区别呢??
众所周知,分布式是指 大量普通的PC服务器通过Internet互联,对外作为一个整体提供存储服务;而集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。
总的来说,分布式是并联工作的,而集群是串联工作的;
1.分布式是指将不同的业务分布在不同的地方,而集群是指将几台服务器集中在一起,实现同一业务;
分布式中的每一个节点,都可以做集群。 而集群并不一定就是分布式的。
举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。 而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。 分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。
2.分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率;
举例:如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行该任务需10小时。采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型)而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,1小时后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务!
上面就是两者之间的两个区别,不知道小编的描述是否帮助大家更好的理解到了??
·高可用
在集群中,同样的服务可以由多个服务实体提供,如果一个服务实体失败了,另一个服务实体会接管失败的服务实体,继续提供所需的服务:集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性;
·可扩展
集群的性能不限于单一的服务实体,新的服务实体可以动态的加入集群,从而增强集群的性能;
· 负载均衡
能把任务比较均匀地分不到集群环境下的计算和网络资源
· 错误恢复
如果在程序运行过程中,由于某种原因,执行某个任务的服务器出现故障,另一个服务实体会接手任务资源继续完成任务。
到这里,关于集群和分布式的讲解就结束了,接下来的博客,小编会通过分布式和集群在程序中的实际应用来对二者进行深度总结;