什么是分布式处理系统
分布式——一个高大上的名词,是计算机软件设计中人民群众喜闻乐见的“逼格满满”、“不明觉厉”的几个名词之一。但很可惜,这玩意儿一点也不复杂,甚至有些“简单”。不信?你只要遵循下述步骤即可将任何一个软件拆分为“分布式”的:
将你的整个软件视为一个系统(不管它有多复杂)
将整个系统分割为一系列的 Process(进程), 每个 Process 完成一定的功能
将这些 Process 分散到不同的机器上。分散后,选择若干种(没错一种可能不够)通信协议把他们连接起来
- 蹬蹬蹬蹬~大功告成。哈哈别打我,这真的是很严肃的通用型三步骤大杀器,对付任何软件,是任何软件都可以的。接下来我当然要解释清楚为什么。
- 二、跳出误区——分布式不等于并行计算
- 人们常常把分布式系统自然而然的和并行计算联系起来。然而这并不正确。实际上,分布式系统并不一定是并行的,举个简单的例子就能理解——
- 某软件,功能如下:
提示用户输入两个数 A 和 B
在内部,对 A 和 B 执行某数学运算,获得 C
输出 C
- 很简单吧?这三个步骤是无法并行的。它们需要被依次执行。但是这个软件依然可以被改为分布式的,方法就是用前面提到的方法,把步骤 2 的计算过程独立为一个 Process 移动到另外一台计算机上完成。
- 如果我们从整个系统流程的观点来看,并没有什么并行。整个过程都是顺序执行的。只不过执行时出现了“跨设备”的现象而已。可见,分布式本身就只如其字面意思所指,指的仅仅是从结构角度的分散而已。
- 当然啊,现实世界中,我们更多的时候钟情于分布式,还是因为它与并行之间可以相互配合。例如实现既是分布同时也是并行的系统。
- 好了,理解这一点之后就不难解释为什么我会说前文提到的三步骤是万用大法了。接下来我们继续讨论分布式本身。
- 三、拆分+连接是分布式系统的本质
- 所谓分布式,无非就是”将一个系统拆分成多个子系统并散布到不同设备“的过程而已。
- 本质上而言,实现一个分布式系统,最核心的部分无非有两点:
如何拆分——可以有很多方式,核心依据一是业务需求,二是成本限制。这是实践中构建分布式系统时最主要的设计依据。
如何连接——光把系统拆开成 Process 还不够,关键是拆开后的 Process 之间还要能通信,因此涉及通信协议设计的问题,需要考虑的因素很多,好消息是这部分其实成熟方案很多
- 四、为什么你要使用分布式?
- 分布式系统并非灵丹妙药,解决问题的关键还是看你对问题本身的了解。通常我们需要使用分布式的常见理由是:
为了性能扩展——系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力
为了增强可靠性——软件不是完美的,网络不是完美的,甚至机器本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度
- 在以提供 Service 为主的服务端软件开发过程中常常遇到这些问题。
- 五、一些分布式方案能解决你的问题,另一些却不能,要学会的其实是选择
- 笼统的讨论分布式没有太大的意义,就如我刚才所谈的,实际上分布式很容易实现。真正难的地方在于如何选择正确的分布方案。
- 例如,当你想要建立一个分布式的数据管理系统的时候,你就必须得面对“一致性”问题。如果你对数据一致性要求很高,你就不得不容忍一些缺陷例如规模伸缩困难;而如果你放弃它,你可以轻松伸缩规模,但你必须解决好由此带来的一系列数据不一致导致的问题。(CAP 问题)
- 于是你会意识到,有许多种分布方案,为了正确解决你的问题,你需要对每一个方案都进行了解,并评估,选择不同的方案有时候区别不大,有时候却会深刻的影响整个系统中其他部分的工作方式,甚至影响用户界面中用户操作时的流程。这是我们学习分布式系统的重点所在。
- 六、分布式学习入门——基础知识要点
- 如我前面所讲,分布式入门不难。主要包含如下知识点:
Process(进程)。在分布式系统中,进程是基本单元
通信协议。Process 间需要相互配合才能完成工作,因此通信协议是最基本要解决的问题。这部分其实挺复杂,牵涉面光,不过核心还是抓住两方面,一是存在哪些需求,二是各个协议如何满足这些需求
命名法。两个 Process 要通信,必须相互知道对方的名字,名字可以是数字,也可以是结构化的字符串。例如众所周知域名系统就是一种命名方案,但是方案还有很多,各有特点
协作。上面都在谈 Process 之间的通信,可是为什么要通信?因为要协作。协作是个复杂的主题,其中最基本最基本的一个问题就是同步问题。而聊同步问题必然要聊“锁”……知识点就这么展开了
- 上面几点是最基础的知识。了解了这些其实就算入门了。可是如何进阶呢?那么必然要开始学习下面的问题:
一致性。数据存储时,最基本的问题。其实也是实际设计系统时常常需要反复考虑的问题
容错。冗余是容错的基础,但并不是全部,分布式本身为实现容错提供了一些便利,这也是实际设计系统时常常需要考虑的问题
分布式系统由哪几部分组成并有什么优势
分布式系统由分布式输入节点、分布式输出节点、网络交换机组成,大大减少设备种类及数量,大大节约空间与成本。分布式系统例如XUNWEI、BOAC等等。
分布式系统有哪些优点
1.什么是分布式系统 分布式系统(distributed system)由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。 分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以...
2.分布式系统的优点 (一)可靠性(容错) 分布式计算系统中的一个重要的优点是可靠性。一台服务器的系统崩溃并不影响到其余的服务器。 ...
3.分布式系统的缺点 (一)故障排除 故障排除和诊断问题。 (二)软件 更少的软件支持是...
-分布式系统