分布式系统中的通讯模型

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

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

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

同步网络模型

同步网络模型 中:

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

因此我们可以推导出:

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

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

异步网络模型

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

原子钟

因此我们可以推导出:

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

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

部分同步网络模型

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

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

结论

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

参考


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

查看所有标签

猜你喜欢:

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

HTML5与CSS3基础教程(第8版)

HTML5与CSS3基础教程(第8版)

[美] Elizabeth Castro、[美] Bruce Hyslop / 望以文 / 人民邮电出版社 / 2014-5 / 69.00元

本书是风靡全球的HTML和CSS入门教程的最新版,至第6版累积销量已超过100万册,被翻译为十多种语言,长期雄踞亚马逊书店计算机图书排行榜榜首。 第8版秉承作者直观透彻、循序渐进、基础知识与案例实践紧密结合的讲授特色,采用独特的双栏图文并排方式,手把手指导读者从零开始轻松入门。相较第7版,全书2/3以上的内容进行了更新,全面反映了HTML5和CSS3的最新特色,细致阐述了响应式Web设计与移......一起来看看 《HTML5与CSS3基础教程(第8版)》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

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

HEX HSV 互换工具