浅析分布式系统之体系结构 基本属性 -- 故障
热力学第二定律”指出,封闭系统中的熵只会增加,不会减少,而熵增的方向就是时间流逝的方向,故而物质的有序程度必然会随着时间的流逝变得越来越低,比如说人类的衰老,从本质上来说就是一个熵增的过程,我们吃饭,锻炼和服用各种抗氧化补充剂就是在通过“负熵”来减少熵的增加。除非只存在于概念之中的分布式系统,只要作为整个宇宙的一部分而真实存在系统也必然存在故障。故障是系统的固有属性,由于熵增的存在,故障无法完全消除,只能和生物一样通过“负熵”(运维)来减少熵的增加。
故障的分类与定义
1)对于系统造成的影响的维度:
表 1 不同层次的故障
系统发生故障时,其造成后果,在系统当中产生的影响由里及表分为三个层次,这三个层次是互相关联互为因果的,错误执行(fault)是根源,如果错误执行(fault)得不到纠正,则系统的局部就会产生错误(Error),当这个错误最终在系统整体状态层面体现也是就故障。由于系统局部的状态以及错误太多且不为外界所知,所以生产实际中的故障一般都是指 failure.
2)时间维度:
故障从发生的时间已经产生的后果来看分为以下两类:
表 2 故障在时间维度的分类
故障模型
基于故障的成因、表现以及是否可以探知等于维度,可以对于故障进行建模,这些模型对于观察者隐藏了具体细节,使他们从更高的层面看待系统故障。故障模型有强弱之分,总的来说越强的模型需要的达成的维度及其条件越多,适应的情景越特殊且狭窄,需要涉及系统属性变量也越多,故障模型也是如此。
表 3 对于不同强弱的故障模式的分类说明
能够对于故障有一定认识是十分重要的。若能够保证分布式系统所处的物理环境为受控环境(良好管理的机房),且保证系统的绝大多数故障为可探知的强故障,(例如:Fail Stop 失败停止故障(可以探知)等故障),则在设计分布式系统时,往往无需恶意攻击的场景以及拜占庭故障等属于最弱,最糟糕的故障场景以降低系统设计的复杂性并能大幅提高系统的可靠性与系统运行速度。
ref:
https://www-inst.eecs.berkeley.edu/~cs162/sp16/static/readings/Original_Byzantine.pdf
https://www.cnblogs.com/jackson0714/p/fenbushi.html
https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing
版权声明: 本文为 InfoQ 作者【snlfsnef】的原创文章。
原文链接:【http://xie.infoq.cn/article/3a57f28b5a935ed66456dfec8】。文章转载请联系作者。
评论