分布式系统中的通讯模型

栏目: 后端 · 发布时间: 6年前

内容简介:人们在谈及分布式系统的理论时,首先要明确其前置的在因此我们可以推导出:

人们在谈及分布式系统的理论时,首先要明确其前置的 通讯模型 (有的地方也称为 时间模型 )的约定。比较常见的有 同步网络模型异步网络模型部分同步网络模型

同步网络模型

同步网络模型 中:

  1. 进程间的消息通讯、传输延时有界。认为通讯耗时是有确定范围的;
  2. 每个进程的处理速度是确定的。我们可以确切知道进程中每步算法的耗时。

因此我们可以推导出:

  • 每个进程间的时钟是同步的,因为前面的定义 12 ,所以我们可以使用通讯来同步各个机器上的时钟,使得各个机器的时钟误差在 ΔT 内。
  • 如果一个请求超过的应答超过 ,则可以判定对端异常。

同步网络模型 使用起来最简单,是理想的网络模型,但是它就跟物理实验中的”光滑平面”一样,在实际环境中并不存在。

异步网络模型

异步网络模型 中,我们引用 FLP 不可能性 中的定义:

原子钟

因此我们可以推导出:

  • 各个机器上的时钟没有可参考性,因为 3 每个机器不能自发保持时间的一致性,并且因为 12 ,机器时间也无法同步时钟在一个有界的误差之内。所以依赖超时机制的算法并不可用。
  • 因为 12 ,当一个请求在本地时钟上超时后,我们无法判断这个请求是否是因为对端异常造成的。这是一个经典的 两军问题 场景,故,我们无法对其他实例进行故障探测。

异步网络模型 是一个最理想的”最差”网络模型,但是其复杂度又远超我们实际情形。

部分同步网络模型

我们现实中遇见的网络模型通常介于 同步网络模型异步网络模型 两者之间。因为在我们所知的大部分系统, 在大部分时间内

  • 进程间的消息通讯、传输延时是有上界的;只有在网络过载、网络分区故障时,才没有上界;
  • 每个进程的处理速度是确定的;只有在发生 GC 、磁盘IO阻塞等异常情况时,每个进程的处理速度才不可确定。
  • 每个机器上的时钟我们可以认为是基本同步的,比如我们可以使用 NTP 来同步机器时间,而且多数机器上有独立的 时钟芯片 ,我们也可以粗略认为各个机器上时间流逝的速度是相同的。但是严格要求时序的系统除外。

结论

FLP 不可能性 中已经明确给我们指明了分布式系统中的矛盾点,我们需要结合 部分同步网络模型异步网络模型 的约束条件变化,以及我们的业务需求,去做出具体的取舍。比如在 分布式编程中的故障探测 就给出了 故障探测 需要做出的取舍。

参考


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Mining

Data Mining

Jiawei Han、Micheline Kamber、Jian Pei / Morgan Kaufmann / 2011-7-6 / USD 74.95

The increasing volume of data in modern business and science calls for more complex and sophisticated tools. Although advances in data mining technology have made extensive data collection much easier......一起来看看 《Data Mining》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具