分布式系统中的各种故障
恢复故障可能是一个复杂的问题,尤其是在分布式系统中,其中可能有多个参与设备和多个故障点。查找程序中的不同角色并询问每个角色“如果程序的该部分发生故障会发生什么?”是非常有启发性的。设计一个能够从故障中恢复的可靠系统需要识别系统必须处理的故障类型。
在分布式系统中,我们需要处理主要四种类型的故障:
- 事务故障(中止),
- 站点(程序)故障,
- 介质(磁盘)故障,以及
- 通信线路故障。
其中一些是由于硬件引起的,另一些是由于软件引起的。
执行失败/方法失败
在任何系统中,事务都可能由于各种原因而失败。未能执行可能是由于事务中由不正确的输入数据引起的错误以及检测到当前或潜在的问题。此外,一些并发现金管理算法不允许事务继续或等待它们当前尝试访问的数据被另一项服务检索。这可以被视为一种故障。
在发生事务故障时采取的最常见方法是采取措施,从而将数据库重置到此事务开始之前的原始状态。
站点(系统)故障
系统故障的原因可以通过识别它是硬件故障还是软件故障来追溯。系统故障通常被认为会导致核心内存内容丢失。因此,由于系统故障,主内存中的任何数据库部分都会丢失。但是,存储在辅助存储器上的数据库被认为是安全且准确的。
在分布式数据库名称中,系统故障被称为站点故障,因为它们会导致故障站点在分布式系统中的其他站点上不可用。
我们通常在分布式系统中区分轻微故障和完全故障。完全故障意味着分布式系统中所有站点的同时故障;部分故障仅反映特定站点的故障,而其他站点仍然可以运行。可以通过尽快重新启动系统并在识别出故障点后更换故障点来恢复。
介质故障/辅助存储设备
介质故障是指辅助数据存储设备的故障。此类故障可能是由于操作系统错误和硬件错误(如头故障或控制故障)引起的。关键点是,第二个存档中的全部或部分数据库被认为是退化的且无法访问的。集成磁盘存储和归档是处理此类灾难性问题的常见策略。
介质故障通常被视为局部问题,因此,不能在分布式 DBMS 系统的可靠性中直接解决。
通信故障
有许多类型的通信故障。最常见的错误是消息排序错误、消息丢失和通信线路故障。前两个错误是计算机网络的功能;我们不会进一步研究它们。因此,在我们的 DBMS 忠诚度分布谈判中,我们期望计算机网络和软件下的硬件确保从特定站点的站点从一个进程到目的地的两个发送的消息在没有任何错误的情况下发送。
丢失或未经请求的消息通常是通信线路故障或(目标)站点故障的结果。如果通信线路发生故障,除了丢失发送的消息外,它还可能将网络分成两个或多个不相关的组。这称为网络碎片。如果网络被碎片化,则每个分区中的站点可能会继续运行。在这种情况下,进行访问存储在多个分区上的数据的交易成为一个重大问题。