计算机集群的所有节点跑的是分解后的任务?

经常听到MySql集群、Redis集群、分布式系统等概念,但很少有机会深入研究。什么是集群计算机中集群是什么意思,什么是分布式系统?从概念上讲,这两个词很接近,不需要区分吗?实际上,区分这两个概念对于帮助我们更深入地理解计算机理论是非常有必要的。今天,我将尝试解释这两个概念。

定义差异

计算机集群是一组松散或紧密地工作在一起的计算机。因为这些计算机一起工作,所以在许多方面它们可以被视为一个单一的系统。与网格计算机不同,计算机集群的每个节点都设置为执行相同的任务,由软件控制和调度。

维基百科的解释,关键词是:一组电脑,同一个任务。

分布式系统是由一组计算机组成的系统,这些计算机通过网络相互通信并协调它们的动作。 [1] 组件相互交互以实现共同目标。将需要大量计算的工程数据分割成小块,由多台计算机分别计算,并将计算结果上传后,统一组合得出数据结论的科学。

维基百科的解释,关键词是:一组计算机,大计算分解。

集群和分布式,都描述了一组计算机。集群中的所有节点运行相同的任务,而分布式系统中的节点运行分解的任务。以手机维修为例:手机维修分为检查、维修和测试三个部分。为了提高效率,聘请了10名工程师。如果每个电话都像每个工程师维修一样进行检查、维修和测试,那么集群就是这样工作的。如果2个工程师负责测试,5个工程师负责维护,剩下3个工程师负责测试,这就是分布式的工作方式。

应用的差异

图片[1]-计算机集群的所有节点跑的是分解后的任务?-老王博客

在工作中,有时这两个词在概念上并没有得到严格的理解。但是回想一下集群这个词,Redis集群、MySql集群、Nginx集群等。根据上面的定义分析,这些集群中的每个节点都在运行相同的业务。微服务平台和云计算平台,这些平台的节点往往运行着不同的业务,形成了强大的对外提供服务的能力,就是一个分布式系统。

集群的关键作用是提高并发处理能力。比如一个MySql数据库不能满足性能要求,通过分表分库方案部署多个实例;一个Redis节点不足以支撑业务,多个节点组成集群提高并发处理能力。任何可以形成集群的东西通常都是具有单一职责和明确功能目标的应用程序。相对而言,集群比较简单,对服务几乎无干扰,通过入口分配负载,在应用之间是等价的,无感知的。

分布的关键作用是解耦以实现快速迭代。独立应用程序可以非常强大和复杂吗?当然可以!十多年前的SAP和Oracle ERP软件,这些庞大而复杂的业务系统都可以部署在一台服务器上。通过模块化和 SOA 等设计理念,工程师还可以共同编写复杂的应用程序。这些软件可能每年只需要升级一次,但互联网应用几乎每周都会发布和升级。显然,这种开发模式不适用于互联网领域。通过拆分功能模块,部署到不同节点,逐节点升级,实现快速迭代。

通过上面的描述计算机中集群是什么意思,这个理论模型的分布与实际分布还是有区别的。没有人见过分布式系统中的业务模块,它们部署在单个节点上。是的,没错,现实中的分布式系统实际上是分布式+集群的组合。该模型结合了两者的优点,即实现解耦,实现高并发能力,完美呼应了互联网对应用的需求。其他的概念,比如高可用、一致性等,都是基于分布式+集群的概念,为解决具体问题而发展起来的方法论。

总结

本文从概念入手,以“人格分裂”的方式分析聚类和分布。我认为这种剖析有利于理解概念,有利于理解“为什么”。在具体实践中,两者不能对立,复杂的业务系统往往是两者的结合。

你对我的理解有什么要说的吗?欢迎来到拍砖。

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论