阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

白话解析分布式系统,小白也能看懂

  • 2019-02-27
  • 本文字数:2678 字

    阅读完需:约 9 分钟

白话解析分布式系统,小白也能看懂

西方诗歌有云,无人是孤岛,你我心相系。今天,这句话同样适用于计算机。我们身边的服务器,个人电脑以及数据存储一直都在彼此通信。其实,我们每天使用的(和在开发的)应用和服务也都是构成完整系统的计算元素,彼此进行着交互,尽管很多时候我们感知不到。


对这些系统及其运行原理的研究属于分布式计算的一部分,而分布式计算又是分布式系统的核心所在。一方面,我们可以把分布式系统看作计算机科学的扩展或继续,它通常涉及问题解决、任务离散分解以及数据的处理、存储等。


但另一方面,分布式系统又完全不像计算机科学,因为分布式计算几乎不考虑计算机本身的运行方式。在处理单机问题时,我们可能觉得一切都很简单,但是如果涉及到多台计算机,这将会变成一个非常棘手的问题。

万物始于一

为了更好的理解分布式系统,我们最好换一个角度,一个完全相反的视角,那就是看一下哪些不是分布式系统。事先声明,即便是非分布式系统,其概念也存在很多争论。理论上,我们可以用很多方式来定义一个分布式系统的否集,因为分布式系统的定义很大程度上依赖于它是的组成元素。


对于非分布式系统,我们首先会想到的是单一系统,一个完全不与其他系统通讯并且只依靠自己的系统。



什么不是分布式系统(图译:不与其它系统交互的单一处理器或计算机就是非分布式系统)



我们电脑上的一个独立运行的处理器就是一个单一系统。如果一个处理器并不与其他处理器通信,那自然也就不能把它归到其它系统中。我们也可以把这个概念放大到计算机范畴,如果把它断网,则也可以认为是单一系统。但是也有研究做了相反的验证(论文:你的电脑早已经是分布式系统了,为什么你的系统还不是?)


分布式这个词,意思是分散、离散,将某些东西分散到某一个空间里。如果我们只是考虑字面意思,那么我们可以很自然的将只依靠自己的单一系统归为非分布式系统,毕竟只有一台机器在工作,我们不能将这个单系统再细分。


那在这种情形下,究竟什么才算是分布式系统呢?当然,如果我们考虑到现实中电脑的交互方式,我们就会意识到,大多数的电脑其实都属于分布式系统的范畴。电脑只有在很少的情形下单独运行,我们几乎总是在用自己的电脑来访问外部的程序或服务。


如果你玩过多玩家在线游戏,预定过一张机票,转发了一个猫咪的动画,或者观看了一部 Netflix 上的节目,又或者在 Amazon 上买了一件连体衣,所有的这一切其实都是通过分布式系统完成的。


其实,你几乎每天都在操作一个最大的分布式系统,那就是互联网。而分布式系统却不一定很大。实际上,大型化根本就算不上分布式的本质特征。



分布式系统定义(图译:分布式系统是指由既能同其他交互又能自主运行的个体所组成的系统)


某种程度上,分布式系统只不过是相互交流的多个个体,这些个体同时又在执行自己的一些操作。这样的系统可以简单如你房子里智能传感器或无线接口,或是一个能连接你笔记本电脑的无线键盘或鼠标。


只要系统里的处理器具有自主性,可以执行自己的功能操作,然后又可以同系统中其它的处理器交互,那我们就可以说这个系统是分布式的。

相互支持的节点

到这里,相信大家已经对分布式系统比较熟悉了。让我们更进一步,来看一下它的主要组成,也就是系统里的个体们。


你可能已经留意到,我使用了电脑,处理器甚至是机器来代指分布式系统的个体。具体用什么术语来描述这个分布式系统还要取决于系统本身。如果系统是一大堆分布式服务器,那么这个个体就是服务器,如果这个系统是指互相交流的处理器,那个体们就是处理器了。


为了避免术语使用上出入过大,我们需要采用一些更宽泛的专业名字。我们可以将分布式系统里的单独个体通称为节点。



分布式系统中节点的定义


(图译:分布式系统中的单个个体成为节点)


如果你觉得节点似曾相识,并让你想起了图论,那你的直觉还是挺厉害的,这两者之间确实是有联系的。如果我们把计算机网络当成分布式系统(他们其实也是),那么我们就可以把网络里不同节点的连接看成一个图。


我们知道分布式系统和其规模并没有直接联系,而不同规模的系统中的节点本质上也不相同。节点既可以是一个硬件设施(传感器),也可以是一款软件(客户端或服务端)。节点本身也不需要在同一个地方,因此系统是分布式的,他们可以分布在相距很远的地方。

节点新视角

尽管分布式系统的节点同图论中的节点非常相似,但分布式系统的节点还要相对麻烦一些,在处理非分布式系统的单一系统时,我们也需要对节点做一些假设。面对分布式计算,几乎我们能遇到的所有的障碍最后都归结到了一点:节点间的通讯。



节点中的操作 (图译:分布式系统中,节点里的操作很快,但节点间的通讯很慢)


分布式系统中的节点具有自治的特点,他们可以运行自己的操作而不需要依赖外部环境。换句话说,分布式系统中的某个节点可以独立运行,而不需要其他节点。节点可以非常快速地运行自己的任务。


节点里的操作很快,但是节点间的通讯却很慢


我们都知道,系统里的节点可以放置到不同地点,他们依靠系统以及网络来实现相互间的通讯,当然这也是一个完全不同的话题,我们不在这里展开。我们要求节点里的操作必须快速,但是我们对节点间的通讯却不作这样的要求。实际上,这种通讯通常非常缓慢,而且也不可靠,这也是分布式计算中最大的问题。



节点里的操作总是被顺序执行


节点里的任务不仅要求快速,而且要求顺序执行。我们可能一开始并没有想太多,毕竟事情总是有先后顺序的,但在分布式系统中情形就不一定了。


尽管节点内的操作需要顺序执行,但是节点接入到系统的那一刻,事情就变得复杂了。一旦我们把一个单节点接入分布式系统,所有节点的操作就有可能被乱序执行。


部分原因是系统中的每个节点都是根据自己的时钟进行操作的。



节点操作依赖其内部时钟


如果我们考虑分布式系统里的是不同的节点:传感器、处理器、服务端或者数据库,那么结果会很清楚。但是,我们也可以猜猜这在分布式系统中是如何成为潜在问题的?这其实是分布式计算里的另一大问题,我会在本系列的后续文章中予以介绍。


我们一旦把某个节点放入分布式系统,那么它可能就没那么令人喜爱了。但这何尝不是学习的乐趣呢,我们需要改变自己看待系统的方式,重新认识系统是如何作为整体来运行的,以及思考不同节点如何共同协作来快速完成任务,这的确是一个学习新知识的好方式。

更多资源

关于分布式系统,我们有太多的东西要学习,下面是一些入门补充资料:


1. 分布式系统简介, Maarten van Steen & AndrewS . Tanenbaum


2. 分布式系统高手进阶, MedianRawashdeh


3. 分布式系统入门, Professor Frank Eliassen


查看英文原文https://medium.com/baseds/many-nodes-one-distributed-system-9921f85205c4


2019-02-27 08:307099

评论

发布
暂无评论
发现更多内容

分析服务用多维度、多场景的用户分层,带您深度玩转精细化游戏运营

HMS Core

分析

30+场技术论坛 1000+科技新品发布 今年云栖大会我们关注什么?

阿里技术

云栖大会

3DCAT教育合作伙伴招募 | 价值80w权益等你来,立享最高级别技术支持

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

长安链源码分析之网络模块 net-liquid(5)

Vue响应式系统原理并实现一个双向绑定

yyds2026

Vue

Java读取csv文件的三种方式

技能实验室

10月月更

LED显示屏由什么组成?

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

Vue组件是怎样挂载的

yyds2026

Vue

两折!3DCAT实时渲染云超强算力帮你玩转元宇宙

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

云安全和传统安全有什么区别?又有什么关系?

行云管家

网络安全 数据安全 云安全

邂逅Vue3

渔戈

前端 Vue3 10月月更

Vue3的基本指令

渔戈

前端 Vue3 10月月更

Vue模板是怎样编译的

yyds2026

Vue

工作四年,靠这份Java面试宝典,跳槽到阿里,月薪直涨12K

收到请回复

Java 面试 语言 & 开发 金九银十

Springboot项目启动后获取配置属性

技能实验室

10月月更

戴尔Latitude 3330,实用办公党,解放双肩包

科技热闻

等保合规是什么意思?怎么做?

行云管家

网络安全 等保 过等保 等保合规

戴尔Latitude5000——回归职场初心

科技热闻

LP流动性质押挖矿dapp系统开发详情(案例演示)

开发微hkkf5566

随需应变,快速开发工作流

力软低代码开发平台

戴尔Precision 3660工作站:设计师手里的金刚钻

科技热闻

长安链源码分析之网络模块 net-liquid(7)

SUSE 推出业界首个自适应 Linux 平台原型

Anthony

Linux 自适应

navicat的使用与数据库的DML操作

渔戈

MySQL SQL语句 10月月更

电网攻击频发,云原生架构正在成为众矢之的

青藤云安全

网络安全 主机安全 青藤云安全

国家级认证!青藤获得安全运营类一级资质

青藤云安全

网络安全 主机安全 青藤云安全

创新引擎,值得信赖的生产力工具PowerEdge T550塔式服务器

科技热闻

长安链源码分析之网络模块 net-liquid(6)

专访超次元|这家头部虚拟赛道公司,如何借助3DCAT加速元宇宙建设?

3DCAT实时渲染

云计算 元宇宙 实时渲染 实时云渲染 云VR

文本识别与检测-【技术白皮书】第三章-第二节: 基于分割的场景文本检测方法

合合技术团队

人工智能 神经网络 文字识别 自然语言理解

华为架构师亲手操刀,世界五百强都在用的kafka也就那么回事

程序知音

Java kafka 架构 后端技术

白话解析分布式系统,小白也能看懂_架构_Vaidehi Joshi_InfoQ精选文章