经常听到MySql集群、Redis集群、分布式系统等概念。但我很少有机会去深究什么是集群,什么是分布式?概念上,这两个词很接近。他们不需要区
经常听到MySql集群、Redis集群、分布式系统等概念。但我很少有机会去深究什么是集群,什么是分布式?概念上,这两个词很接近。他们不需要区分吗?事实上,区分这两个概念是非常必要的,有助于我们对计算机理论有更深入的理解。今天,我将试着解释这两个概念。
定义之间的区别
计算机集群(英文:Computer cluster)是一组松散或紧密工作在一起的计算机。因为这些计算机一起工作,所以在许多方面它们可以被看作是一个单一的系统。与网格计算机不同,计算机集群设置每个节点执行相同的任务,由软件控制和调度。
维基百科的解释,关键词是:一组电脑,同样的任务。
分布式系统是由一组通过网络相互连接的计算机组成的系统,用于传输消息和通信并协调它们的行为。[1]组件相互作用以实现一个共同的目标。将需要大量计算的工程数据分割成小块,用多台计算机分别计算,上传计算结果,统一结果得出数据结论的科学。
维基百科的解释,关键词是:一组计算机,大计算分解。
集群和分布式都被描述为一组计算机。集群中的所有节点运行相同的任务,而分布式系统中的节点运行分解的任务。以修手机为例:修手机分为检测、维修、测试三个步骤。为了提高效率,雇佣了10名工程师。如果每个工程师在维护的时候都检查、维修、测试每一部手机,这就是集群的工作方式。如果两个工程师负责测试,五个工程师负责维护,剩下三个工程师负责测试,这就是分布式工作模式。
应用中的差异
在工作中,有时候这两个词并没有严格按照概念来理解。但是,当我们回想起word集群,Redis集群,MySql集群,Nginx集群等。根据上述定义分析,这些集群中的每个节点都在运行相同的业务。微服务平台,云计算平台,这些平台的节点往往运行不同的业务,形成强大的对外提供服务的能力,这是一个分布式系统。
集群的关键功能是提高并发处理能力。例如,一个MySql数据库不能满足性能要求,因此通过表-数据库方案部署多个实例;一个Redis节点不足以支撑业务,多个节点组成集群提高并发处理能力。任何能够形成集群的人通常都是一个具有单一职责和明确功能目标的应用程序。相对来说,集群很简单,几乎是非侵入性的,负载通过门户分布,应用是等价的,无感知的。
分布的关键功能是解耦,以便于快速迭代。单机应用可以强大复杂吗?当然可以!十几年前,SAP和Oracle ERP软件,这些业务极其复杂的系统,都可以部署在一台服务器上。通过模块化和SOA等设计概念,工程师们还可以一起编写复杂的应用程序。这些软件可能一年只需要升级一次,但互联网应用几乎每周都有发布和升级。显然,这种开发模式在互联网领域并不适用。通过拆分功能模块,部署在不同节点,逐节点升级,实现快速迭代。
通过以上,这个理论模型的分布和真实的分布还是有差别的。没有人见过分布式系统中的业务模块,是由单个节点部署的。是的,没错。真正的分布式系统实际上是分布式集群的综合体。这种模式结合了两者的优点,即解耦和高并发,完美呼应了互联网对应用的需求。其他概念,如高可用性、一致性等。都是基于分布式集群的概念,并开发了一套解决具体问题的方法论。
摘要
本文从概念入手,以“人格分裂”的方式分析集群与分布。在我看来,这种分析有利于理解概念和“为什么”。在实践中,两者是不能对立的,复杂的业务系统往往是两者的结合。
你对我的理解有什么要说的吗?欢迎拍砖。
声明本站所有作品图文均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系我们