1、三个步骤完成华丽转身——任意软件变为“分布式”数据库
分布式——一个高大上的名词,是计算机软件设计中人民群众喜闻乐见的“逼格满满”、“不明觉厉”的几个名词之一。但很惋惜,这玩意儿一点也不复杂,甚至有些“简单”。不信?你只要遵循下述步骤便可将任何一个软件拆分为“分布式”的:网络
蹬蹬蹬蹬~大功告成。哈哈别打我,这真的是很严肃的通用型三步骤大杀器,对付任何软件,是任何软件均可以的。接下来我固然要解释清楚为何。分布式
2、跳出误区——分布式不等于并行计算性能
人们经常把分布式系统天然而然的和并行计算联系起来。然而这并不正确。实际上,分布式系统并不必定是并行的,举个简单的例子就能理解——学习
某软件,功能以下:设计
很简单吧?这三个步骤是没法并行的。它们须要被依次执行。可是这个软件依然能够被改成分布式的,方法就是用前面提到的方法,把步骤 2 的计算过程独立为一个 Process 移动到另一台计算机上完成。进程
若是咱们从整个系统流程的观点来看,并无什么并行。整个过程都是顺序执行的。只不过执行时出现了“跨设备”的现象而已。可见,分布式自己就只如其字面意思所指,指的仅仅是从结构角度的分散而已。开发
固然啊,现实世界中,咱们更多的时候钟情于分布式,仍是由于它与并行之间能够相互配合。例如实现既是分布同时也是并行的系统。字符串
好了,理解这一点以后就不难解释为何我会说前文提到的三步骤是万用大法了。接下来咱们继续讨论分布式自己。同步
3、拆分+链接是分布式系统的本质
所谓分布式,无非就是”将一个系统拆分红多个子系统并散布到不一样设备“的过程而已。
所谓分布式,无非就是”将一个系统拆分红多个子系统并散布到不一样设备“的过程而已。
本质上而言,实现一个分布式系统,最核心的部分无非有两点:
4、为何你要使用分布式?
分布式系统并不是灵丹妙药,解决问题的关键仍是看你对问题自己的了解。一般咱们须要使用分布式的常见理由是:
在以提供 Service 为主的服务端软件开发过程当中经常遇到这些问题。
5、一些分布式方案能解决你的问题,另外一些却不能,要学会的实际上是选择
笼统的讨论分布式没有太大的意义,就如我刚才所谈的,实际上分布式很容易实现。真正难的地方
在于如何选择正确的分布方案。
例如,当你想要创建一个分布式的数据管理系统的时候,你就必须得面对“一致性”问题。若是你对数据一致性要求很高,你就不得不容忍一些缺陷例如规模伸缩困难;而若是你放弃它,你能够轻松伸缩规模,但你必须解决好由此带来的一系列数据不一致致使的问题。(CAP 问题)
因而你会意识到,有许多种分布方案,为了正确解决你的问题,你须要对每个方案都进行了解,并评估,选择不一样的方案有时候区别不大,有时候却会深入的影响整个系统中其余部分的工做方式,甚至影响用户界面中用户操做时的流程。这是咱们学习分布式系统的重点所在。
6、分布式学习入门——基础知识要点
如我前面所讲,分布式入门不难。主要包含以下知识点:
上面几点是最基础的知识。了解了这些其实就算入门了。但是如何进阶呢?那么必然要开始学习下面的问题:
好了,若是这些你都学的差很少了,那我们“纸上谈兵”也就告一段落了。接下来进入实战演练。
7、实战演练?其实你已经开发过度布式系统了
你有没有开发过简单的增删改查软件?这类软件一般都须要搭配一个独立的数据库管理系统共同完成功能。实际上,只要你开发过这么简单的软件,那么你就已经开发过度布式系统了。
“什么,基于数据库管理系统开发出来的软件就能够算分布式呀?我作了不少这类软件,怎么我历来没听过这种说法?
真的,我没开玩笑。还记得咱们前面提到的吗,什么是分布式?不就是一个大系统拆分红多个小系统分散到不一样的设备上吗。回想一下,当你写一个简单的增删改查软件时,只要用到数据库管理系统,是否是具备以下特色:
你看,这不就是分布式系统的特色吗?
“啊,原来如此,但是我印象里一说分布式的话,应该会讲「集群」啊啥的吧,这么简单的也算?”
关于「集群」的问题咱们以后会谈到,它也是分布式系统的一个应用,但谈集群的时候,咱们谈的每每是更具体的东西。但我们看问题,须要抓住本质。别看麻雀小,五脏却俱全。
不过,你已经熟悉的东西,咱们在这里就再也不展开了,咱们不妨关注其余一些更有趣的话题。
8、实现一个简单的 Remote Procedure Call (远程过程调用)系统
(未完) 做者:林建入 连接:https://www.zhihu.com/question/22764869/answer/56011081 来源:知乎 著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。