集群
一组服务实体协同工作,提供比单个服务实体更可伸缩和可用的服务平台。在客户端中,集群就像一个服务实体,但事实上,集群是由一组服务实体组成的。
与单个服务实体(服务实体即服务器)相比,集群提供了以下两个关键特性:
可伸缩性(弹性变化):新的服务实体可以动态地添加到集群中,从而提高集群的性能。
高可用性:在集群中,同一服务可以由多个服务实体提供。如果一个服务实体失败,另一个服务实体将接管失败的服务实体。提高了应用程序的可用性,降低客户端遇见错误的机率!
为了具备上面两个特性:集群必须具备两种能力。
负载平衡:将客户端任务均匀分配集群中的服务实体(理解:不然增加了新服务实体,哪来提高性能?原来很忙的实体还是这么忙,新增的没活做,增了有何用。)
错误恢复:某服务实体因某些原因执行任务失败,存在另一个服务实体接替它并继续执行任务。从客户端角度看,它的任务始终一台服务器执行,处理的时候发生了什么事,反正拿到结果就好了,这个过程就好像是透明的。
为了实现集群服务,需要用到两种技术。
集群地址:客户端通过访问集群地址获取服务(获取服务?就是响应客户端的请求)。负载平衡器会一直维护集群地址,将集群地址转换为内部服务实体的地址(有请求来了才去转换,因为要明确到哪个服务实体获取服务)。
内部通信:为了协同工作,实现负载平衡和错误恢复,集群的服务实体必须经常通信。(A服务实体问B服务实体:你挂了? B服务实体回答:我挂了。你去帮我继续执行这任务吧。 A服务实体说:上下文信息给我,我看看你执行到哪?好接手任务。)
分布式
一个大的应用程序被分成许多任务(每一任务只完成应用程序的一部分功能),每一个任务都由一台或多台服务器互相合作完成。不同任务部署在不同服务器上。
分布式是为了缩短单个任务的执行时间,以提高效率,并且通过增加每个单元时间执行的任务数量来提高效率。例如:如果一个任务由10个子任务组成,每个子任务需要1个小时单独执行,并且在单个服务器上执行任务需要10个小时。使用分布式解决方案,提供了10个服务器,每个服务器只负责处理子任务,而不考虑子任务之间的依赖关系,完成任务只需要一个小时。
区别
分布式:不同服务器,实现不同业务。
集群:多台服务器实现相同业务。
分布式的结构是松散的,大家加起来才是一个完整的组织。如果一个组织挂了,没有其他组织替代它执行任务。
集群中的组织是很多的,某个组织挂了,另一个相同组织可以替代它。
分布式和集群是可以同时存在的。主要看业务需要!都可以在不同方向上提高性能。分布是纵向,集群是横向。至于其他方面对比嘛......
文章大部分内容译自 https://www.supinfo.com/articles/single/6495-the-difference-between-cluster-and-distributed