分布式和集群的区别

下面两句话转自网络:

  • 将一套系统拆分成不同子系统部署在不同服务器上(这叫分布式),然后部署多个相同的子系统在不同的服务器上(这叫集群),部署在不同服务器上的同一个子系统应做负载均衡。 
  • 分布式:一个业务拆分为多个子业务,部署在多个服务器上 。 集群:同一个业务,部署在多个服务器上 。

再用一个通俗易懂的例子说明一下:

小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。

后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,两个厨师的关系是集群。

为了让厨师专心炒菜,把菜做到极致,再请了个配菜师负责切菜,备菜,备料 ...  厨师和配菜师的关系是分布式。

一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。

一个配菜师因故请假了,但是其余的配菜师还是该啥就干啥,只是没请假的配菜师任务均匀的加量了,但他们的任务和职责是不变的,这是集群。

最后用正在做的项目来举例一下:

原本的钱管家(一套账户服务体系,可以用来购买飞机票,pos交易等)项目是一个完整的war包,所谓一套war包走天下,哪怕只有一行代码改动,所有的war包都要重新部署,显然这个会很影响线上交易,比如pos交易的代码要改动,但是这关航旅有什么关系,航旅的交易也要受影响。于是我们需要将钱管家按照业务进行拆分,不同的业务拆分成不同的模块。比如我现在航旅的业务全部拆分出来,那他就是一个独立的war包,但这个粒度还是很大的。比如一笔支付交易,通过账户支付,由代理人发起,到我们的系统,需要做验签,参数校验,账户扣款,扣款成功,告诉代理人,支付成功,那么航空公司就可以出票了,同时,我们还要把这笔钱打到航空公司的账户中,我们对这边支付收取手续费。你会看到,环节很多,就像上面做菜的例子,我们其实可以细分。于是,我们进一步拆分成三个系统:1)业务系统2)收银台3)账务系统(账务前置+账务处理),他们都是独立的系统,独立部署在不同的服务器,独立的有各自的数据库,这就是分布式!当然,这个需要新的框架,不再是war包了,而是微服务框架,我们用的是公司自研的Pegasus,网上开源的也很多,比如dubbo等。

分布式有了,集群又是什么呢,比如上面的收银台,我部署了3台机器,他们的业务是一样的,业务系统调用的时候可以通过负载均衡访问到不同的机器,这个就是集群。

所有,分布式和集群往往是组合在一起的,希望这个例子对你们理解有帮助。

原文地址:https://www.cnblogs.com/fxl-njfu/p/10874412.html