先给出我理解的定义分布式是一组通过网络互连的计算机组成的系统;集群是指为完成一个或者一组相关任务的分布式系统。
上图是分布式的架构,四个节点相互连接;分布式只是表达一种拓扑关系不涉及到具体的业务。
现在为抽象的拓扑结构叠加上应用(让它可以实际工作起来),比如其中一台机器承担负载均衡的角色。这就是集群——即,为完成实际的任务而互联的一组计算机。
一般来说有几类“任务”(目标):
- 高可用,其中一台服务器挂掉不影响整个系统的正常运行。比如 Keepalived
- 负载均衡,工作负载被分配到不同机器上执行。比如 LVS
- 高性能计算,对一个大任务分解,利用多个节点的资源组合完成计算。比如 Hadoop
- 网格计算,以共享存储为基础,多个节点共同完成计算任务。在这个结构中所有节点都是对等的。比如 Oracle RAC。
我们常说的 Master Slave 架构其实是一种集群架构模式,上面列表中的高可用、负载均衡、高性能计算都属于这种架构模式。
简单来说:分布式是一个抽象概念,集群是具体实现。一个集群系统一定是分布式的,而分布式未必是集群(比如互联网是分布式系统,但是它不是集群)。
【本文是51CTO专栏作者“邢森”的原创文章,转载请联系作者本人获取授权】