分布式和集群都是用来提高系统效率的,只是方式不同
分布式:一个业务拆成多个子业务,部署在不同的服务器上,以缩短单个任务的执行时间来提升效率
集群:同一个业务,部署在多个服务器上,通过提高单位时间内执行的任务数来提升效率
例如:
如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时
采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型)
采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,10小后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务
在客户端看来,一个集群就是一个服务实体,但事实上集群由一组服务实体组成。与单一服务实体相比较,集群提供了两个关键特性:
(1)可扩展性-集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能
(2)高可用性-集群通过服务实体冗余避免了服务出错,集群中,如果一个服务实体失败了,另一个服务实体会立即接管,增强了应用的可用性
分布式和集群通常结合起来使用,分布式提供了去中心化的能力,可以把系统的不同业务拆分出来,不同的服务器提供不同的业务服务,解决了之前单一入口压力过大问题,但当某个服务器出现问题,此服务器中的业务就失效了,集群提供了高可用性能力,就可以对每个业务构建集群,这样就保证了业务稳定性,集群同时还有很好的扩展性,当某个业务压力过大时,可以对此业务所在集群动态添加服务器,增强此业务的性能