集群与分布式的区别

集群

两大关键特性

集群指的是一组服务实体,它们共同工作以提供比单个服务实体更具可扩展性和可用性的服务平台。

在客户端看来,一个集群就像一个服务实体,但事实上,一个集群是由一组服务实体构成但。与单个服务实体相比,集群具有两大关键特性:

  • 可扩展性:集群的性能不受单个服务实体的限制,可以通过动态添加新的服务实体的方式,提高集群的性能。
  • 高可用性:集群通过冗余的服务实体来降低客户端停止服务的可能性。在集群中,多个服务实体可以提供相同的服务,如果单个服务实体故障,其他服务实体将接替故障的服务实体提供服务。集群提供的将服务从故障中快速恢复的能力增强了应用程序的可用性。

两大能力

为了达到可扩展性和高可用性的目标,集群必须具备两大能力:

  • 负载均衡:负载均衡可以平均分配任务到集群中的计算资源和网络资源上。
  • 错误恢复:当一个服务实体由于某种原因执行任务失败时,该任务可以由集群中的另一个服务实体执行并完成。由于一个服务实体故障无法完成任务,因此在另一个服务实体中透明地继续执行任务的过程称为错误恢复。

两大技术:

实现集群服务需要两大技术:

  • 集群地址:集群由多个服务实体组成,客户端通过访问集群的集群地址来获取集群内的各个服务实体提供的功能。拥有单个集群地址时集群的一个基本特征。维护集群地址的工具称为负载均衡器。负载均衡器的职责是管理每个服务实体的上线与下线,并负责将集群地址转换为内部服务实体地址。有些负载均衡器实现了真正的负载均衡算法,有些只支持任务转换。只实现了任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境,在这种集群中,只有一个服务实体工作,当正在工作的服务实体发生故障时,负载均衡器把后来的任务转发给另外一个服务实体。
  • 内部通信:为了能协同工作,实现负载均衡和错误恢复,集群中的各实体间必须时常通信,比如负载均衡器对服务实体进行心跳测试,服务实体间交换任务执行上下文信息。

通过单个集群地址,客户端可以访问集群提供的计算服务。集群地址隐藏了各个服务实体的内部地址,这样客户端需求的计算服务就可以分布在不同的服务实体上。内部通信是集群正常工作的基础,它使得集群得以拥有均衡的负载和错误恢复的能力。

分布式

分布式指的是将不同的服务模块部署在多个不同的服务器上,并通过远程调用来提供对外服务以协同工作。

对应用程序和服务进行分层和拆分,并以分布式的方式部署应用程序和服务模块。

分布式不仅可以提高并发访问能力,并且还减少来数据库连接和资源消耗。分布式还使得不同的应用程序可以复用公共服务,让业务扩展变得容易。

区别

简单来说,分布式系统是并联工作的,而集群是串联工作的。

  1. 分布式指的是将不同业务分布到不同的地方,而集群指的是关联多个服务器来实现相同的业务。每个分布式节点都可以做成集群,而集群不一定是分布式的。举例来说,Facebook为了承载更多用户访问,可以做一个集群。设置一台响应服务器和多台处理相同业务的服务器,当业务访问进来时,响应服务器会找一台负载较低的服务器去处理。而分布式系统则完全不同,它的组织是松散的,它与集群完全不同,集群中的一台服务器故障了,另一台可以顶上。分布式系统中的各个节点处理的业务是不同的,如果一个节点故障了,该节点提供的服务就不再可用了。
  2. 分布式系统通过降低单个任务的执行时间的方式来提高效率,而集群则通过增加单位时间内可以同时执行的任务数量来提高效率。举例来说,如果一个任务由10个子任务组成,每个子任务需要分别执行1小时,所以该任务在单台服务器上需要10个小时才能完成。使用分布式系统解决方案,使用10台服务器,在不考虑任务间的依赖的情况下,每台服务器只负责执行1个子任务,只需要1个小时即可完成任务。集群方案同样使用10台服务器,每台服务器可以独立地处理任务。假设10个任务同时到达,10台服务器将同时开始工作,1小时后,10个任务同时完成,同样花了1小时完成了任务。