分布式与集群的区别是什么?

在介绍集群模式和分布式架构之前,我们先说说大家最熟悉的单机结构,将所有的代码都放在一个项目,再将这个项目部署在一台服务器上,整个项目所有的服务都由这台服务器提供,这就是单机结构在访问量不高的情况下,单体架构是可以承受的,但是单机的处理能力毕竟是有限的,当我们的业务增长到一定程度的时候,单机的硬件资源将无法满足我们的业务需求,此时便衍生出了集群模式。

分布式与集群的区别是什么?

 

简单来说集群就是将同一个业务部署在多个服务器上,当单机处理到达瓶颈的时候,我们就把单机项目复制几份,构成一个“集群”。集群中的每台服务器叫做这个集群的一个“节点”,每个节点都提供相同的服务,这样系统的处理能力就相当于提升了好几倍。那么在效率提高的同时是如何来解决访问哪台机器的分配问题呢?这时便出现了负载均衡服务器,它可以使得每个节点的压力都比较平均,用户的所有请求都先交给负载均衡服务器,然后由负载均衡服务器根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。一般采用Nginx作为负载均衡服务器。

集群结构的优点是系统扩展非常容易随着业务的发展,只需要给这个集群增加节点即可。但是,当业务发展到一定程度时,无论怎么增加节点,整个集群的性能提升效果好像都不明显了。此时,便衍生出了分布式。

简单来说分布式就是将一个业务分拆成多个子业务,部署在不同的服务器上,每台服务器都承担不同的责任。这样分模块部署最主要的优点是实现业务隔离,也就是说个别功能出现问题或者发生改进都不会影响其他模块,就算个别模块挂掉了,其他模块也能够不受影响继续运作。系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升,从而系统更易于扩展,并且可以针对性地扩展某些服务

从单机结构到集群模式,代码基本无需做修改,我们要做的仅仅是多部署几台服务器,让每台服务器上运行相同的代码。分布式就是将一个完整的系统,按照业务功能拆分成一个个独立的子系统,这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

总体来说,集群强调的是高可用,分布式强调的是多业务协作