首页 > 技术文章 > 分布式和集群的概念

ciweiyu 2021-02-04 10:14 原文

分布式和集群

集群

小明有一天玩游戏,觉得自己的电脑越来越卡了,就去找电脑达人小刚

小明:小刚,我这电脑越来越卡了,咋办啊?

小刚:嗨,我看看你这配置.......我去,哥们你这配置也太差了,怎么才4G内存啊,你再加个4G内存条吧。

然后小明回到家中,加装了一条4G内存条后,果然流畅多了。

上面这个例子就是集群,也就是能力不够,数量来凑。

单机处理的能力是有限的,到达瓶颈时,把单机复制几份,这样就构成了一个"集群"。上面例子中的一个4G内存条就是一个单机,两个4G内存条组成了一个集群。

集群中每台服务器就叫做这个集群的一个“节点”,所有节点构成了一个集群。每个节点都提供相同的服务,那么这样系统的处理能力就相当于提升了好几倍(有几个节点就相当于提升了这么多倍)。

集群的问题

这里涉及到了一个问题,就是那么多个节点,如何合理分配调度呢?

就好比一个后厨5个人,都是炒菜的,你要如何分配他们谁闲着,谁干活,而不是一窝蜂的去抢活干。而且最好是让此时没活的厨师干活。那么就需要一个调度者

因此,为了调度多个节点的压力,负载均衡服务器应运而生。

在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。

集群的优势

集群结构的好处就是系统扩展非常容易。

如果随着你们系统业务的发展,当前的系统又支撑不住了,那么给这个集群再增加节点就行了。

但是,当你的业务发展到一定程度的时候,你会发现一个问题——无论怎么增加节点,貌似整个集群性能的提升效果并不明显了。这时候,你就需要使用微服务结构了。

分布式架构

分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过RPC方式调用。

分布式架构的优势

  • 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。

  • 系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。假设这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可。

  • 服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

分布式集群

集群和分布式并不冲突,可以有分布式集群

所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统

分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。

总结

分布式:一个业务分拆多个子业务,部署在不同的服务器上
集群:同一个业务,部署在多个服务器上

参考链接

参考链接:

https://www.zhihu.com/question/20004877/answer/282033178

https://www.zhihu.com/question/20004877/answer/26076092

推荐阅读