分布式

分布式

  1. 定义:
    分布式是一种模型结构,区别于核心式,可以从字面理解为“分布在各处”(分布式计算是指同一时间使用多台计算机处理一个任务。)

  2. 理解:
    假如中国专门造了一台超级电脑,用来计算天气预报的数据,然后所有的电视台都从这台电脑获取数据,然后播放天气预报。那么这种模式就是核心式的,这台电脑处于核心位置,如果这台电脑坏了,不能工作了,那么所有电视台的天气预报都不能进行了。
    现在这样设计,每个省各自出一台普通电脑,然后这些电脑联合工作,一起计算天气预报,虽然每台电脑的计算能力远没有那台超级电脑强,但是它们协同工作,即使某台或者某几台电脑坏了,计算仍然能继续(坏了的那几台的计算工作将会转移到其他电脑上)。这样就降低了每台电脑的重要程度,使得天气预报系统更加稳定,不过这些电脑之间的协调就比较复杂了。

  3. 并行计算
    并行计算是同时使用多个处理器处理事务。
    并行计算是有用且必要的原因很多。最简单的原因是性能;如果我们要把一个冗长的计算分成小块、打包给不同的处理器,就可以在相同时间内完成更多工作。

  4. 分布式不等于并行计算

    某软件,功能如下:

    1. 提示用户输入两个数 A 和 B
    2. 在内部,对 A 和 B 执行某数学运算,获得 C
    3. 输出 C

    这三个步骤是无法并行的。它们需要被依次执行。但是这个软件依然可以被改为分布式的 按照123分成三个步骤,把步骤2 的计算过程独立为一个 Process 移动到另外一台计算机上完成。
    如果我们从整个系统流程的观点来看,并没有什么并行。整个过程都是顺序执行的。只不过执行时出现了“跨设备”的现象而已。可见,分布式本身就只如其字面意思所指,指的仅仅是从结构角度的分散而已。

3.拆分+连接是分布式系统的本质
所谓分布式,无非就是”将一个系统拆分成多个子系统并散布到不同设备“的过程而已。
本质上而言,实现一个分布式系统,最核心的部分无非有两点:
1. 如何拆分——可以有很多方式,核心依据一是业务需求,二是成本限制。这是实践中构建分布式系统时最主要的设计依据。
2. 如何连接——光把系统拆开成 Process 还不够,关键是拆开后的 Process 之间还要能通信,因此涉及通信协议设计的问题,需要考虑的因素很多,好消息是这部分其实成熟方案很多

  1. 为什么你要使用分布式?
    • 为了性能扩展——系统负载高,单台机器无法承载,希望通过使用多台机器来提高系统的负载能力
    • 了增强可靠性——软件不是完美的,网络不是完美的,甚至机器本身也不可能是完美的,随时可能会出错,为了避免故障,需要将业务分散开保留一定的冗余度
  2. 分布式学习入门——基础知识要点
    • Process(进程)。在分布式系统中,进程是基本单元
    • 通信协议。Process 间需要相互配合才能完成工作,因此通信协议是最基本要解决的问题。这部分其实挺复杂,牵涉面光,不过核心还是抓住两方面,一是存在哪些需求,二是各个协议如何满足这些需求
    • 命名法。两个 Process 要通信,必须相互知道对方的名字,名字可以是数字,也可以是结构化的字符串。例如众所周知域名系统就是一种命名方案,但是方案还有很多,各有特点
    • 协作。上面都在谈 Process 之间的通信,可是为什么要通信?因为要协作。协作是个复杂的主题,其中最基本最基本的一个问题就是同步问题。而聊同步问题必然要聊“锁”……知识点就这么展开了
    • 一致性。数据存储时,最基本的问题。其实也是实际设计系统时常常需要反复考虑的问
    • 容错。冗余是容错的基础,但并不是全部,分布式本身为实现容错提供了一些便利,这也是实际设计系统时常常需要考虑的问题

参考 :
作者:林建入
链接:http://www.zhihu.com/question/22764869/answer/56011081

如果您觉得还有遗漏的或是有错误的,请在评论里留言,谢谢。

posted @ 2019-06-16 18:41  梦亦殇  阅读(88)  评论(0编辑  收藏  举报