1.3 集群与分布式

1.3.1 什么是集群与分布式

想要弄清楚集群与分布式的区别,可以先看网络上的一个具体例子:

小饭店原来只有一个厨师,负责切菜、洗菜、备料、炒菜。后来顾客增多,饭店又请了一个厨师,两个厨师能炒一样的菜,这两个厨师的关系就是集群。为了让厨师专心炒菜,饭店又聘请了一位配菜师负责切菜、备菜、备料,那么厨师和配菜师的关系就是分布式。如果一个配菜师忙不过来,饭店又请来一个配菜师,那么两个配菜师的关系也是集群。

我们再来看另一个例子:

一个任务由10个子任务组成,每个子任务单独执行需要1小时,在一台服务器上执行该任务则需要10小时。采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需要一个小时。而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10台服务器将同时工作,10小时后,10个任务同时完成。

从以上实例中可以看出,分布式主要是指将不同的业务分布到不同的地方;而集群主要是指将几台服务器集中在一起,实现同一个业务。同时,分布式是以缩短单个任务的执行时间来提升效率的,解决高并发问题;而集群主要是通过提高单位时间内执行的任务数来提升效率的,提高系统的可用性。所以集群是保证系统高可用的重要手段之一。

最后,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统。分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台机器上。分布式中的每一个节点都可以做集群,而集群并不一定就是分布式的。从图1-5和图1-6可以清楚地看出集群架构和分布式架构的区别。

图1-5 集群架构

图1-6 分布式架构