点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

作者 | 至尊宝

来源 | cnblogs.com/aspirant/p/5697807.html

在IDF05(Intel Developer Forum 2005)上,Intel首席执行官Craig Barrett就取消4GHz芯片计划一事,半开玩笑当众单膝下跪致歉,给广大软件开发者一个明显的信号,单纯依靠垂直提升硬件性能来提高系统性能的时代已结束,分布式开发的时代实际上早已悄悄地成为了时代的主流。

吵得很热的云计算实际上只是包装在分布式之外的商业概念,很多开发者(包括我)都想加入研究云计算这个潮流,在google上通过“云计算”这个关键词来查询资料,查到的都是些概念性或商业性的宣传资料,其实真正需要深入的还是那个早已被人熟知的概念——分布式。

分布式可繁也可以简,最简单的分布式就是大家最常用的,在负载均衡服务器后加一堆web服务器,然后在上面搞一个缓存服务器来保存临时状态,后面共享一个数据库,其实很多号称分布式专家的人也就停留于此,大致结构如下图所示:

这种环境下真正进行分布式的只是web server而已,并且web server之间没有任何联系,所以结构和实现都非常简单。

有些情况下,对分布式的需求就没这么简单,在每个环节上都有分布式的需求,比如Load Balance、DB、Cache和文件等等,并且当分布式节点之间有关联时,还得考虑之间的通讯,另外,节点非常多的时候,得有监控和管理来支撑。

这样看起来,分布式是一个非常庞大的体系,只不过你可以根据具体需求进行适当地裁剪。按照最完备的分布式体系来看,可以由以下模块组成:

  • 分布式任务处理服务:负责具体的业务逻辑处理

  • 分布式节点注册和查询:负责管理所有分布式节点的命名和物理信息的注册与查询,是节点之间联系的桥梁

  • 分布式DB:分布式结构化数据存取

  • 分布式Cache:分布式缓存数据(非持久化)存取

  • 分布式文件:分布式文件存取

  • 网络通信:节点之间的网络数据通信

  • 监控管理:搜集、监控和诊断所有节点运行状态

  • 分布式编程语言:用于分布式环境下的专有编程语言,比如Elang、Scala

  • 分布式算法:为解决分布式环境下一些特有问题的算法,比如解决一致性问题的Paxos算法

因此,若要深入研究云计算和分布式,就得深入研究以上领域,而这些领域每一块的水都很深,都需要很底层的知识和技术来支撑,所以说,对于想提升技术的开发者来说,以分布式来作为切入点是非常好的,可以以此为线索,探索计算机世界的各个角落。

集群是个物理形态,分布式是个工作方式。

只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,嗯,C/S架构也可以叫分布式。

集群一般是物理集中、统一管理的,而分布式系统则不强调这一点。

所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。

分布式是相对中心化而来,强调的是任务在多个物理隔离的节点上进行。中心化带来的主要问题是可靠性,若中心节点宕机则整个系统不可用,分布式除了解决部分中心化问题,也倾向于分散负载,但分布式会带来很多的其他问题,最主要的就是一致性。

集群就是逻辑上处理同一任务的机器集合,可以属于同一机房,也可分属不同的机房。分布式这个概念可以运行在某个集群里面,某个集群也可作为分布式概念的一个节点。

一句话,就是:“分头做事”与“一堆人”的区别

分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。

分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。

举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。

而分布式,从窄意上理解,也跟集群差不多, 但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。

分布式的每一个节点,都完成不同的业务,一个节点垮了,哪这个业务就不可访问了。

简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

例如:如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行该任务需10小时。

采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型)

而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,1小时后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务!

集群一般被分为三种类型,高可用集群如RHCS、LifeKeeper等,负载均衡集群如LVS等、高性能运算集群;分布式应该是高性能运算集群范畴内。

  • 分布式:不同的业务模块部署在不同的服务器上或者同一个业务模块分拆多个子业务,部署在不同的服务器上,解决高并发的问题

  • 集群:同一个业务部署在多台机器上,提高系统可用性

大白话讲

小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。

为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群。

本文通过OpenWrite的Markdown转换工具发布

关注我,回复“加群”加入各种主题讨论群

  • Java开发人员 2019 生态系统信息图

  • MyBatis解析:颠覆你心中对事务的理解!

  • 大批 IDEA 激活码到期之后的乱象...

  • MyBatis 中的九种设计模式

  • 高效程序员的七个习惯

朕已阅 

分布式与集群的区别究竟是什么?相关推荐

  1. [架构] 分布式和集群的区别

    一次在群里面看到群友们在讨论这个的区别,看了他们发表的言论,觉得很有道理,很通俗易懂,就当做学习的笔记记录在这里: 用两个例子看清楚分布式和集群的区别: 例子1: 如果一个任务由10个子任务组成,每个 ...

  2. 分布式精华问答 | 秒懂分布式与集群的区别

    布式的处理方式越来越受到业界的青睐--计算机系统正在经历一场前所未有的从集中式向分布式架构的变革.今天,我们就来看看关于分布式的精华问答吧! 1 Q:什么是分布式系统? A:要理解分布式系统,主要需要 ...

  3. 什么是分布式,分布式和集群的区别又是什么?

    1. 什么是分布式 ? 分布式系统一定是由多个节点组成的系统. 其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的. 这些连通的节点上部署了我们的节点,并且相互的操作会有协同. 分布 ...

  4. 架构-分布式与集群的区别

    架构-分布式与集群的区别 先说区别: 一句话:分布式是并联工作的,集群是串联工作的.   简单说:分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. [ ...

  5. 什么是分布式,分布式和集群的区别又是什么?这一篇让你彻底明白!

    1. 什么是分布式 ? 分布式系统一定是由多个节点组成的系统. 其中,节点指的是计算机服务器,而且这些节点一般不是孤立的,而是互通的. 这些连通的节点上部署了我们的节点,并且相互的操作会有协同. 分布 ...

  6. java中集群和分布式的区别_java 分布式与集群的区别和联系

    java 分布式与集群的区别和联系 一.先说区别: 一句话:分布式是并联工作的,集群是串联工作的. 1.分布式是指将不同的业务分布在不同的地方. 而集群指的是将几台服务器集中在一起,实现同一业务. 分 ...

  7. 需要单机还是集群部署_单机、分布式、集群的区别与联系

    一.单机结构 一个系统业务量很小的时候所有的代码都放在一个项目中,然后这个项目部署在一台服务器上就好了,整个项目所有的服务都由这台服务器提供.这就是单机结构.单机结构的缺点是显而易见的,单机的处理能力 ...

  8. 分布式 和 集群的区别

    简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率. 例如: 如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任 ...

  9. 分布式与集群的区别到底是什么?

    零基础自学java,点击了解:https://how2j.cn 本文章转载自(如有侵权联系我删除):微信公众号Java技术栈 分布式 在IDF05(Intel Developer Forum 2005 ...

最新文章

  1. (备忘)Java数据类型中String、Integer、int相互间的转换
  2. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(分组颜色配置、添加数据点)实战
  3. docker生成tomcat镜像
  4. jQuery中事件及常用事件总结、jQuery中常见效果、隐式迭代、链式编程、样式操作、动画队列、不同元素绑定同一个事件
  5. 机器学习算法(8)——朴素贝叶斯、最小风险贝叶斯决策
  6. 工厂供电MATLAB仿真,工厂供电虚拟仿真实验设计研究
  7. linux下无root权限安装python2.7和pip以及安装cuda9.0,cudnn7.4,pytorch-gpu
  8. 数据结构和算法1 稀疏数组
  9. C#预处理器指令【转】
  10. 2021最新电视盒子TV源码开源电视影视APP影视源码
  11. 【MATLAB】MATLAB基本运算
  12. 计算机最大化快捷键,Win7笔记本电脑窗口最大化和最小化的快捷键是什么
  13. 51单片机LCD1602电子时钟
  14. Word基础(三十二)脚注与尾注
  15. 用html制作问卷调查
  16. “庄家”:腾讯的投资“六合彩”
  17. select2 取值 遍历 设置默认值
  18. 系统工程理论与实践投稿经验_【系统工程理论与实践杂志】投稿经验与期刊点评_审稿、版面费用_退稿_要求与流程_影响因子_级别_发行周期_见刊时间_极作期刊...
  19. 过来人都是怎么学习stm32的
  20. 4084 号码牌(并查集)

热门文章

  1. 各主流浏览器内核总结
  2. Visual Studio 2017 快捷键
  3. 电子测量与仪器学报中刊心得
  4. Win10与Ubuntu双系统设置开机启动项
  5. 2011年1月至2012年12月预言诗---四
  6. 网络广告CPA、CPC、CPM、CPO、PPC、PPL、CPTM缩写解释
  7. AD模数转化电路的一种实现方式
  8. 小白的MatSWMM使用心路(一)——安装试运行过程与可能常见问题的解决
  9. 1016 Phone Bills (25)(25 分)
  10. 基于proteus的51单片机仿真实例七十六、8-3编码芯片74HC148应用实例