Agentic AI、具身智能、强化学习框架、端侧大模型……来QCon上海站,感受AI的未来! 了解详情
写点什么

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

  • 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:307645

评论

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

GardenPlanner for Mac最新激活版(园林绿化设计软件)

胖墩儿不胖y

Mac软件 园林设计工具

ATE机台哪家强?

IC男奋斗史

芯片 半导体 职场经验 芯片测试 ATE测试

Programming abstractions in C阅读笔记:p179-p180

codists

ChatGPT搅动AI芯片的“一池春水”

IC男奋斗史

AI 英伟达 芯片 半导体 AI芯片

大模型训练:深度学习的高级挑战

Geek_cf26da

大模型训练 大模型 千帆大模型平台

苹果Mac文件管理浏览软件Path Finder中文破解版 支持Mac14系统

Rose

mac文件管理软件 Path Finder Path Finder破解

可观测 AIOps 的智能监控和诊断实践丨QCon 全球软件开发大会总结

阿里巴巴云原生

阿里云 云原生 AIOPS 可观测

XTransfer重磅发布“AI员工”,安信成CRM“数智化”再提速

XTransfer技术

AI CRM XTransfer

DBeaverUltimate 23 for Mac数据库管理软件

展初云

数据库管理 Mac软件

RAG (检索增强生成)技术详解:揭秘基于垂直领域专有数据的Chatbots是如何实现的

Baihai IDP

AI 白海科技 rag 检索增强生成 Chatbots

这三大爆款开源项目竟出自同一个20人的小公司?

硅基新手村

垂直大模型训练的关键步骤与策略

Geek_cf26da

大模型训练 千帆大模型平台

茶百道全链路可观测实战

阿里巴巴云原生

阿里云 云原生 可观测

Bridge 2024 (BR)新功能介绍及破解安装教程

Rose

Adobe Bridge 2024 BR2024下载 Bridge 2024破解版 Bridge 2024 中文版

几款好用的苹果Mac硬盘检测工具

Rose

SSD mac软件下载 Mac硬盘健康 硬盘检测软件

使用CSS圆锥渐变创建背景图案

南城FE

CSS css3 前端 渐变

启动速度提升 10 倍:Apache Dubbo 静态化方案深入解析

阿里巴巴云原生

阿里云 云原生

Python开发:pycharm pro 2023 永久激活秘钥【Mac/win】

Rose

Python开发 PyCharm破解版 PyCharm Pro密钥 JetBrainsPyCharm

从策略和实践,带你掌握死锁检测

华为云开发者联盟

开发 华为云 图算法 华为云开发者联盟 死锁检测

使用 Kubernetes 简化平台工程

SEAL安全

DevOps kubernetes 运维 企业号10月PK榜

Termius 8 for Mac多协议远程管理软件

展初云

Mac软件 远程连接管理工具 远程访问

Navicat Premium 16 Mac数据库管理工具

展初云

数据库管理工具 Mac软件

Apache Dubbo 云原生可观测性的探索与实践

阿里巴巴云原生

Apache 阿里云 云原生 dubbo

基于 Triple 实现 Web 移动端后端全面打通

阿里巴巴云原生

阿里云 微服务 云原生

Avid Sibelius Ultimate 2023 for Mac(西贝柳斯音乐记谱软件)

Rose

西贝柳斯终极解锁版 Avid Sibelius 2023 Mac Mac乐谱制作软件

华为云应用中间件DCS系列—Redis实现(社交APP)实时评论

阿里云“玩转云上 StarRocks3.0 湖仓分析”,开启数据分析新范式

阿里云大数据AI技术

EVE-NG的Windows客户端安装

小魏写代码

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