经常听到MySql集群、Redis集群、分布式系统等概念,但是,很少有机会深究,到底什么集群,什么是分布式?在概念上这俩个词很接近,难道不需要区分?其实,非常有必要区分这两个概念,帮助我们对计算机的理论有更深入的理解。今天,我就尝试去解释一下这两个概念。

定义的区别

计算机集群(英语:computer cluster)是一组松散或紧密连接在一起工作的计算机。由于这些计算机协同工作,在许多方面它们可以被视为单个系统。与网格计算机不同,计算机集群将每个节点设置为执行相同的任务,由软件控制和调度。

维基百科的解释,关键词是:一组计算机、相同的任务。

分布式系统是一组电脑,透过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。[1]组件之间彼此进行交互以实现一个共同的目标。把需要进行大量计算的工程数据分割成小块,由多台计算机分别计算,再上传运算结果后,将结果统一合并得出数据结论的科学。

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

集群和分布式,都是描述的一组计算机。集群的所有节点跑的是同样的任务,而分布式系统的节点跑的是分解后的任务。以修手机为例:维修一部手机要分为检测、维修、测试三个环节,为了提高效率,雇了10位工程师。如果每个工程师维修时,对每台手机进行检测、维修和测试,这就是集群的工作方式。如果2位工程师负责检测,5位工程师负责维修,剩下的3位工程师负责测试,这就是分布式的工作方式。

应用中的区别

在工作中,有时候并没有严格按照概念去理解这两个词。但是,回想一下什么时候用集群这个词,Redis集群、MySql集群、Nginx集群等等,按照上述的定义分析,这些集群里的每个节点,都是跑的同样的业务。微服务平台、云计算平台,这些平台的节点往往跑着不同的业务,组成强大的能力对外提供服务,这就是分布式系统。

集群的关键作用是提升并发处理能力。例如:一台MySql数据库不能满足性能需求,通过分表分库方案,部署多台实例;一个Redis节点不足以支撑业务,多个节点组成集群提高并发处理能力。但凡能够组成集群的,往往都是职责单一,功能目标明确的应用。相对来说,集群化是简单的,对服务几乎无侵入的,通过入口分发负载,应用与应用之间是等价的、无感知的。

分布式的关键作用是解耦以便于快速迭代。单机版应用能不能做的很强大、很复杂?当然可以!十几年前的SAP、Oracle ERP软件,这些业务巨复杂的系统,都是可以部署在一台服务器上的。通过模块化、SOA等设计理念,工程师们也可以协同工作写出复杂的应用。这些软件可能一年才需要升级一次,但互联网应用几乎每周都在发版升级,显然这种开发模式在互联网领域并不适用。通过把功能模块拆分出来,部署在不同的节点,按节点进行升级,实现快速迭代。

通过上面的讲述,这种理论模型的分布式,和真实的分布式还是不同。没有谁见过分布式系统中的业务模块,是单节点部署的。是的,没有错,现实中的分布式系统,其实是分布式+集群的综合体。这样的模式,结合了两者的优势,即实现了解耦,又做到了高并发能力,完美呼应了互联网对应用的需求。其他的概念,高可用、一致性等,都是在分布式+集群的理念上,发展出来的解决具体问题的方法论。

总结

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

针对我的理解,你有什么想说的吗?欢迎拍砖。

mysql的集群和分布式区别_集群和分布式,你知道其中的区别吗?相关推荐

  1. mysql的集群和分布式区别_集群和分布式的区别

    简单概括: 集群:多个人在一起做同样的事 . 分布式 :多个人在一起做不同的事 . 负载均衡:决定将任务以某种规则分给谁做. 详细分析 (1)分布式是指多个系统协同合作完成一个特定任务的系统. 分布式 ...

  2. redis setnx 分布式锁_手写Redis分布式锁

    分布式锁使用场景 现在的系统都是集群部署,每个服务都不是单节点的了.比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3.库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者 ...

  3. 请列举你了解的分布式锁_终于搞懂分布式锁是什么了!

    当下在互联网技术架构中,最流行的莫过于分布式架构了.为什么大家纷纷都采用分布式架构呢? 1.高效低廉,将部署在高性能机的程序分散在多个小型机中部署: 2.扩展性强,可随着业务的扩展而横向扩展系统的性能 ...

  4. java集群和分布式 区别_集群和分布式的区别?

    集群和分布式有什么区别? 分布式系统: 分布式系统(distributed system)是建立在网络之上的软件系统.正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性.因此,网络和分布式系统 ...

  5. java集群和分布式 区别_集群与分布式的联系以及区别

    集群(Cluster)是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算机. 在客户端看来,一个集群就象是一 ...

  6. 群签名和环签名的区别_苹果企业签名和苹果超级签名的区别

    iPhone使用的用户越来越多,现在苹果APP的签名业务也逐渐成熟,苹果签名可以解决APP上架问题上架APP非常的漫长并且非常的严格,现在除了苹果企业签名还有了苹果超级签名,不过这两种签名之间又有什么 ...

  7. mysql读提交和重复读区别_读已提交和可重复读的区别 命令行测试

    可重复读:两个事务进行数据操作他们是互不干扰的 ,事务先A进行数据查询,事务B进行一次事务修改并进行数据提交,事务A再进行一次查询,数据是不改变的. 读已提交:两个事务进行数据操作,事务先A进行数据查 ...

  8. i5集显和独显的区别_集显核显独显有哪些区别 集显核显独显区别介绍【详解】...

    显卡是除处理器之外最受大家关心的硬件装备了,要是显卡配置不到位,其他再好都是浮云,而对于游戏玩家来说,显卡性能差的话更是影响游戏的运行,可折腾人了.今天小编为大家分享"集显".&q ...

  9. Java用蚁群算法求最短路径_蚁群算法最短路径java

    改进蚁群算法求解最短路径问题 袁亚博,刘羿,吴斌 [摘要]摘要:针对蚁群算法在求解最短路径问题时存在容易陷入局部最优 解的问题,对经典蚁群算法提出三方面改进.... 网络出版时间:2016-11-21 ...

最新文章

  1. C++ 笔记(32)— 预处理、文件包含include、宏替换define、条件包含ifndef、define
  2. 小米android10怎么样,感觉小米10太贵不完美?这些Android旗舰也许就有你的菜!
  3. [9.28模拟] good
  4. 《怎样解题》-波利亚
  5. 【数据结构与算法】之深入解析“买卖股票的最好时机含手续费”的求解思路与算法示例
  6. SVG 基础知识 回顾
  7. java为什么被开发者_为什么开发者对Java 9如此的兴奋
  8. ubuntu 查看日历,日期
  9. DipperRiver.Net通信协议设计
  10. Linux使用vi/vim打开文档/文件报错E325:ATTENTION Found a swap file by the name
  11. win7计算机菜单,教您win7右键菜单设置方法
  12. [P4063][JXOI2017]数列(DP)
  13. 基于Java的体育场地预约系统
  14. 手机安全卫士------查询号码归属地
  15. 电脑如何恢复数据?电脑文件清空了如何恢复数据?
  16. 开源项目学习:cJSON库的学习和使用(上)---以天气JSON数据为例
  17. matlab 空间方程,matlab - 如何从MNA方程组到MATLAB中的状态空间[A,B,C,D] mimo? - 堆栈内存溢出...
  18. Java与模式之建造者模式详解
  19. lambda函数引用学习记录
  20. 多国金融监管和投资机构代表齐聚香港“HashKey2019数字资产全球峰会”,共探从“江湖”到“庙堂”之路...

热门文章

  1. ptrace跟踪子进程
  2. nginx的反向代理upstream说明
  3. 微信聊天框(html+css+js)实现
  4. Android P 源码如何修改屏幕密度
  5. 自制香浓芝麻酱的做法,重庆顶香味的老师傅手艺
  6. python将OCR识别的表格还原到excel中
  7. 教你用Python爬取手机App数据!居然有人说爬不了APP
  8. C++顺序结构——对角线
  9. oracle9i档案文件创建,Oracle9i数据库系统管理 哪里有档案管理软件啊?
  10. Linux的系统安全及应用