如何通俗地理解「分布式系统」?

如何通俗地理解「分布式系统」,它解决了哪些问题,有什么优缺点?

阅读 5.3k
12 个回答

关于“分布式系统”的定义,《分布式系统原理和范型》一书中是这样定义分布式系统的:“分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像是单个相关系统”。关于这个定义,我们直观的感受就是:首先,这种系统相对来说比较牛逼,起码由好几台主机组成。以谷歌、亚马逊等服务商而言,他们的数据中心都由上万台主机支撑起来的。其次,虽然很牛逼,但对于外人来说,是感觉不到这些主机的存在。也就是说,我们只看到是一个系统在运作。

"宕机事件"为例,平时,我们压根不知道所提供的服务背后是由多少台主机组成,但是等到宕机才知道,是多么严重的事故。从进程角度看,两个程序分别运行在两个台主机的进程上,它们相互协作最终完成同一个服务(或者功能),那么理论上这两个程序所组成的系统,也可以称作是“分布式系统”。当然,这个两个程序可以是不同的程序,也可以是相同的程序。如果是相同的程序,我们又可以称之为“集群”。所谓集群,就是将相同的程序,通过不断横向扩展,以提高服务能力的方式。“分布式系统”和“集群”的定义够都简单吧。分布式系统有哪些优势那么,为啥我们要用分布式系统?说起分布式系统,我们就不得不说下分布式系统的祖先——集中式系统。集中式系统跟分布式系统是完全相反的两个概念。集中式系统就是把所有的程序、功能都集中到一台主机上,从而往外提供服务的方式。集中式系统最容易理解了。比如,我们主机的PC电脑,或者手机,我们把各种软件都安装在一台机子上,当我需要什么功能,我就从这台机子上去获取。再比如,我们在学生时代做的课程设计或者开发时的小应用,我们把Web服务器、数据库等都会安装到一台电脑上。好处是,易于理解、方便维护,想要的东西我都放到了一个地方,东西好找啊。当然弊端也是显而易见的,如果这台机子崩了,或者硬盘坏了,那相当与整个系统就奔溃了,而且如果备份也是在这个硬盘上,那相当于招了灭顶之灾。

有个名言,就是“不要把鸡蛋放在一个篮子里”。对于系统而言也是如此。厂商的机子不可能永远保证永远不坏,我们也无法保证黑客不会来对我们的系统搞基,最为关键的是,我们自己无法保证自己的程序不会出bug。所以问题无法避免,错误也不可避免。我们只能鸡蛋分散到不同的篮子里,来减轻一锅端的风险。这就是为什么需要分布式系统的原因。使用分布式系统的另外一个理由是可扩展性。毕竟任何主机(哪怕是小型机、超级计算机)都会有性能的极限。而分布式系统可以通过不断扩张主机的数量以实现横向水平性能的扩展。

已参与 「极客观点」 ,欢迎正在阅读的你也加入。

新手上路,请多包涵

分布式系统通俗的解释:

就好比你有一个饭店,里面有一个厨子,他负责整个饭店的炒菜工作,如果他哪天生病了,那么你这个饭店就直接停业了,但是如果你雇三个厨子(假设厨子的能力一样)在饭店里工作,不仅整个饭店炒菜的速率会提高,而且避免了一个厨师生病,整个饭店就停业的风险。

厨子就像一个系统。分布式系统就是可以降低整个系统的风险,保证了系统的高可用。大概可以这样理解

已参与 「极客观点」 ,欢迎正在阅读的你也加入。

这个叫做高可用,而不是系统。简单的来说就是存副本,关键词三地五中心高可用

新手上路,请多包涵

我自己的理解:分布式系统能广为人知,跟社会的发展脱不了干系,每年的网民数量在逐步递增,随即带来的就是访问量以及数据量的问题,以前的单体架构不足以满足社会的发展,分布式系统存在的意义就是解决这样的事情,高并发、高可用、高、高性能,这也是常说的三高;至于优点前面已经说了,缺点的话我个人理解是取决于物理因素了,比如网络带宽等等,也会因为一些环境架构原因,通常最让人头疼的优化就是实时数据更新的问题

分布式系统:一系列独立的计算机,内部以一定协议协调,而对用户暴露的接口而言像是只在操作一个系统。

计算机网络:一系列计算机建立联系,相互通信的技术。

什么是分布式系统?分布式系统是若干独立计算机的集合,这计算机对用户来说就像单个相关系统。也就是说分布式系统背后是由一系列的计算机组成的,但用户感知不到背后的逻辑,就像访问单个计算机一样。分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据。
图片
什么是分布式系统分布式系统和计算机网络系统的异同点是什么?分布式系统和计算机网络系统的共同点是:多数分布式系统是建立在计算机网络之上的,所以分布式系统与计算机网络在物理结构上是基本相同的。他们的区别在于:分布式操作系统的设计思想和网络操作系统是不同的,这决定了他们在结构、工作方式和功能上也不同。网络操作系统要求网络用户在使用网络资源时首先必须了解网络资源,网络用户必须知道网络中各个计算机的功能与配置、软件资源、网络文件结构等情况,在网络中如果用户要读一个共享文件时,用户必须知道这个文件放在哪一台计算机的哪一个目录下;分布式操作系统是以全局方式管理系统资源的,它可以为用户任意调度网络资源,并且调度过程是“透明”的。当用户提交一个作业时,分布式操作系统能够根据需要在系统中选择最合适的处理器,将用户的作业提交到该处理程序,在处理器完成作业后,将结果传给用户。在这个过程中,用户并不会意识到有多个处理器的存在,这个系统就像是一个处理器一样。
图片
并行原则上,并行应用也可以在共享存储器多处理机上运行,但共享存储器系统不能很好地扩大规模以包括大量的处理机。HPCC(高性能计算和通信)应用一般需要一个可伸缩的设计,这种设计取决于分布式处理。容错应用因为每个PE是自治的,所以分布式系统更加可靠。一个单元或资源(软件或硬件)的故障不影响其他资源的正常功能。固有的应用许多应用是固有分布式的。这些应用是突发模式(burstmode)而非批量模式(bulk mode)。这方面的实例有事务处理和Internet Javad,程序。这些应用的性能取决于吞吐量(事务响应时间或每秒完成的事务数)而不是一般多处理机所用的执行时间。对于一组用户而言, 分布式系统有一个特别的应用称为计算机支持的协同工作(Computer Supported Cooperative Working,CSCW)或群件(groupware), 支持用户协同工作。另一个应用是分布式会议, 即通过物理的分布式网络进行电子会议。同样,多媒体远程教学也是一个类似的应用。

已参与 「极客观点」 ,欢迎正在阅读的你也加入。

不要把鸡蛋放在一个篮子里。

已参与 「极客观点」 ,欢迎正在阅读的你也加入。

分布式系统主要解决两个问题

  1. 把专业的事交给专业的系统来做
  2. 多个人做同一件事, 解决一个出问题时系统还能用

已参与 「极客观点」 ,欢迎正在阅读的你也加入。

类似于加盟点,当你想喝奶茶的时候,可以就近,或者去排队人少的店铺,

分布式系统很重要,最主要就是解决并发问题,同时展绿码就是典型的并发问题。


已参与 「极客观点」 ,欢迎正在阅读的你也加入。

大概下图这样子
图片.png

主要解决了高并发的问题

已参与 「极客观点」 ,欢迎正在阅读的你也加入。

我的理解是把整个系统分成不同的模块,再将不同的模块分别部署到不同的服务器上。

主要用于解决局部问题导致所有服务夯机的问题。这也就是他的优势,方便快速定位、解决问题。

已参与 「极客观点」 ,欢迎正在阅读的你也加入。

道生一,一生二,二生三,三生万物。——《道德经》

首先分布式并不是一个一开始就存在的概念,是从集中式系统逐步衍生出分布式系统的。在计算机哲学里,大型计算机系统存在着对立的两个极致:

一端是极致的高性能计算(HPC),使用多台具有数千个CPU的超级计算机。这通常用于计算密集型科学计算任务,如天气预报或分子动力学(模拟原子和分子的运动)。

另一端是云计算或者叫分布式计算,常常伴随着多个数据中心互相协作共同提供服务,其中每个数据中心部署着无数台网络连接的商品级主机。

当然,通常企业或者个人使用的情况,都在这两端的中间。现如今是一个信息爆炸的社会,我们每天要接受和处理海量的数据,对互联网而言更甚。不少互联网业务需要为整个国家,乃至洲际、全世界范围提供服务。所以分布式系统在总体成本和扩展性上的优势使它成为大多数情况的更优选择。

发展历史
自从20世纪60年代大型主机被发明出来以后,大型主机被广泛运用于科研技术发展。得益于大型主机优越的性能表现和良好的稳定性,大部分的程序被设计及运行在单台大型主机上的优势非常明显。所以计算机系统快速进入了集中式系统的阶段。后续互联网快速发展起来,人们对共享互联的要求越来越迫切。同时电脑逐渐走入民用,其首要解决的问题就是小型化和微型化。但是微型化和硬件性能存在着天然的矛盾,所以分布式系统的概念应运而生。

通俗理解
从字面意思上理解,集中式系统是将系统运行在单个或极少数超级主机上,分布式系统则是整个系统分布在多台主机上运行。从设计思路上,则是将系统的纵向扩展(疯狂在单个超级计算机上增强或者堆砌硬件),改为了横向扩展(多个主机并行合作,如果需要更多资源可以通过弹性增加主机来解决)。分布式系统可能包含多个应用、组件,分别提供不同的功能,组成一个分布式系统对外提供服务。同时系统内的各个子系统通过网络进行通信,所以分布式系统中的计算机没有空间的限制。这些计算机可能被放在不同机柜上,也可能被部署在不同的机房,还可能在不同的城市甚至不同国家和地区。

优缺点
和集中式系统相比,分布式系统的性价比更高、处理能力更强、可靠性更高、也有很好的扩展性。但是分布式系统也带来一些问题。

首先,分布式必要条件是网络,分布式集群规模越大,计算机之间的网络通信越频繁,乃至于会成为影响整个系统处理性能的瓶颈。其次,一个分布式集群中的服务器数量越多,服务器宕机、磁盘损坏及各类故障的概率也就随之增加了。同时分布式系统虽然有很多计算机,但用户使用时请求只会落在其中一台,需要良好设计的架构及机制来保证在不同计算机上的数据访问和修改的请求最终得到一致的数据结果。

内容来源:Alluxio 软件工程师 王宇阳
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
极客观点
子站问答
访问
宣传栏