集群,分布式,负载均衡的理解

集群,分布式,负载均衡的理解

小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群

1. 集群

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

        但问题是用户的请求究竟由哪个节点来处理呢?最好能够让此时此刻负载较小的节点来处理,这样使得每个节点的压力都比较平均。要实现这个功能,就需要在所有节点之前增加一个“调度者”的角色,用户的所有请求都先交给它,然后它根据当前所有节点的负载情况,决定将这个请求交给哪个节点处理。这个“调度者”有个牛逼了名字——负载均衡服务器。
        集群结构的好处就是系统扩展非常容易。如果随着你们系统业务的发展,当前的系统又支撑不住了,那么给这个集群再增加节点就行了。但是,当你的业务发展到一定程度的时候,你会发现一个问题——无论怎么增加节点,貌似整个集群性能的提升效果并不明显了。

2. 分布式

    

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

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

这样的好处有很多:

  1. 系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。
  2. 系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。假设这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可。
  3. 服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。


集群与分布式的区别,主要是其协作模式不同,任务分工合作的方式不同,集群强调的是多件事情交由多个系统来处理,其各个系统所承担的角色和任务基本是相同的,这就相当于早期的社会分工,很多人都做的是同质化的事情,对各个系统的要求相对应的就很高,但是随着社会的不断发展,其系统越来越复杂,要一个人来处理整套工序流程,其已经不能够满足这个时代的需求了,从而出现了分工的进一步细分,这就是分布式,比如,我做一件衣服,其实,从原材料到成品,其工序还是很复杂,丈量、设计、原料采购、裁剪、缝纫等等,需求规模大了之后,让每个人都要从事所有的工序显然是不合理的,因为对每个人的要求太高了,根本适应不了市场的需求,而且做出来的衣服在市场上也没有竟争力,因此,交由专业的人来做专业的事情,专做设计、专做采购、专做裁剪、专做缝纫等等,把这些人组织起来,形成一个专业化强、执行效率高的协作模式,这就在分布式,从系统方面来讲,其需要一个大的调度中心,需要组织整个流程,需要很强的设计、分工、组织、协作能力,是一个挑战,但从各个分布式系统来讲,其各个子系统只需要对自己的事情做专、做好,也降低了对分系统的压力和难度,因此,对于一个大型复杂的联机交易系统或者分析系统,其由集群向分布式转变是一个必然的趋势,希望对你的理解有所帮助。