分布式系统中的故障模型

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

内容简介:在分布式系统的设计中,一个很重要的属性就是

在分布式系统的设计中,一个很重要的属性就是 容错 。要 容错 那一定要先知道在分布式系统中通常存在哪些错误模型,以及他们之间的关系[^1]。

Byzantine or arbitrary failures

拜占庭问题 是分布式系统中很难处理的问题。出现该问题的节点进入一种“混乱”的状态,对确定的请求 φ ,故障节点给一部分请求返回 R1 ,而给另一部分请求返回 R2 。比如,机器的内存出现了故障,程序从内存对应位置读取 KEY 的值,一会儿是 R1 ,一会儿是 R2 ,则反应到API上就可能是这种问题。在一个可信的分布式系统中,如果没有特殊需要,我们可以不考虑这种极端场景。如果需要解决该问题,可以采用 BFT(Byzantine Fault Tolerance) / Practical Byzantine Fault Tolerance [^2]等共识方法,其能够容忍1/3的节点出现 拜占庭问题

Authentification detectable byzantine failures

可检测拜占庭问题 是服务进程有时可能会出现 拜占庭问题 ,但是它不会否认自己之前打成的共识。通常是服务进程崩溃后,马上被重新启动时,会出现该问题,因为在崩溃前会根据当前情况响应一些请求,但是崩溃重启后,一些未打成共识的状态可能被丢弃,再次进行响应时,可能会跟崩溃的响应不同。

Performance failures

性能故障 比较好理解,就是服务进程做出了正确的响应,但是这个响应在错误的时间抵达(过早或者过晚)。比如网络产生的拥堵、请求重试等。

Omission failures

失效故障性能故障 的一个特例,就是对应的服务器的响应可能永远无法到达。比如产生了消息丢失。

Crash failures

崩溃故障 就是服务进程停止了任何响应,比如进程崩溃等。

Fail-stop failures

当服务进程进入 崩溃故障 后,并且能够被别的正常服务进程检测到它的故障,则成它进入到 失败停止故障

故障模型指间的关系

在这些故障模型中, 拜占庭问题 更严重一些, 失败停止故障 轻微一些。当有 拜占庭问题 发生时,我们无法分辨出哪些服务进程是正确的,到底发生了什么。如果有服务进程发生了 失败停止故障 ,则其他进程可以清楚的知道它出现了故障。形式上, byzantine failuresauthentification detectable byzantine failuresperformance failuresomission failurescrash failuresfail-stop failures .

在一般的分布式系统中,我们不太需要关注 拜占庭问题 ,应该重点关注 performance failuresomission failurescrash failuresfail-stop failures ,因为他们更容易出现,也更容易影响我们的系统。

参考


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

查看所有标签

猜你喜欢:

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

如何把事情做到最好

如何把事情做到最好

乔治·伦纳德 / 张乐 / 中国青年出版社 / 2014-2 / 29.90元

•改变全球9800万人的人生指导书 •全美第一本系统阐述学习与成功之道的经典著作 •长期盘踞全美畅销书榜单 •21年后,这本传奇之书终于在中国震撼上市 •把事情做到最好,第一不强求天赋,第二不介意起步的早晚,你要做的就是“起步走”并“不停地走” 《如何把事情做到最好》出 版于1992年,经久不衰,经过一代又一代的读者口碑相传后,畅销至今。作者以其独特的视角告诉人们,如......一起来看看 《如何把事情做到最好》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

在线进制转换器
在线进制转换器

各进制数互转换器

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器