分布式系统 死锁检测

分布式系统 死锁检测

在本文中,您将了解分布式系统中的死锁检测及其方法、处理策略、问题和解决方案。

什么是分布式死锁

当分布式系统中使用分布式事务或并发控制时,可能会发生分布式死锁。它可以通过分布式技术(如边缘追踪)或通过从死锁检测器的本地等待图(WFG)创建全局等待图来进行识别。虚拟死锁在分布式系统中被识别但由于内部系统延迟而不存在。

在分布式系统中,无法防止或避免死锁,因为系统规模太大。因此,只能进行死锁检测。分布式系统死锁检测技术需要以下内容:

1. 进展

该方法可以检测系统中的所有死锁。

2. 安全

该方法必须能够检测到所有系统死锁。

检测分布式系统中死锁的方法

检测分布式系统中死锁的各种方法如下:

1. 集中式方法

集中式方法只有一个资源负责检测死锁,它简单易用。但缺点包括单个节点的过载和单点故障(即整个系统依赖于一个节点,如果该节点发生故障,整个系统会崩溃),使系统不太可靠。

2. 分层方法

分层方法是集中式和分布式方法在分布式系统中的整合。在这种策略中,一个节点处理一组选定的节点或负责死锁检测的节点群集。

3. 分布式方法

在分布式技术中,多个节点一起工作来检测死锁。由于工作负载在所有节点之间平均分配,因此不存在单点故障。它还有助于提高死锁检测的速度。

处理死锁的策略

分布式系统中处理死锁的各种策略如下:

  1. 处理死锁主要有三种方法:死锁预防、死锁避免和死锁检测。
  2. 在分布式系统中,处理死锁变得更加复杂,因为没有任何站点对系统的当前状态具有完全的了解,并且每个站点之间的通信都涉及有限且不可预测的延迟。
  3. 操作系统使用死锁避免方法来确定系统是否处于安全或不安全状态。进程必须向操作系统报告最大资源数,进程可以请求完成其执行。
  4. 通常通过在开始执行之前实现一个同时获取所有必要资源的进程,或者通过抢占已经拥有资源的进程来实现死锁预防。
  5. 在分布式系统中,这种方法效率低下且不实际。
  6. 存在循环等待时,需要检查进程资源交互的状态来检测死锁。
  7. 在分布式系统中处理死锁的最佳方式似乎是死锁检测。

死锁检测的问题

分布式系统中死锁检测的各种问题如下:

  1. 基于死锁检测的死锁处理需要解决两个基本问题:首先,检测现有的死锁;其次,解决检测到的死锁。
  2. 检测死锁涉及解决两个问题:维护等待图(WFG)和搜索WFG以确定是否存在环路。
  3. 在分布式系统中,一个循环可能包含多个站点。对环路的搜索高度依赖于通过整个系统表示的WFG。

解决死锁检测

在分布式系统中,死锁检测的各种方法如下:

  1. 死锁解决包括在系统的WFG中打破现有的等待依赖。
  2. 它包括解除多个死锁进程并将它们的资源分配给死锁的阻塞进程,以便它们可以继续执行。

分布式系统中的死锁检测算法

在分布式系统中的死锁检测算法如下:

  1. 路径推送算法
  2. 边缘追踪算法
  3. 扩散计算算法
  4. 基于全局状态检测的算法

路径推送算法

路径推送算法通过保持显式全局WFG来检测分布式死锁。主要的概念是为每个分布式系统站点创建一个全局WFG。当这个类的算法中的一个站点执行死锁计算时,它将其本地WFG发送给所有相邻站点。路径推送算法这个术语是为了突出全局WFG路径的发送。

边缘追踪算法

边缘追踪方法通过沿着图的边缘发送特殊的消息(称为探测)来验证分布式图结构中的循环。这些探测消息与请求和响应消息不同。如果一个站点接收到与其之前发送的匹配探测消息,则可以取消循环的形成。

扩散计算算法

在这个算法中,死锁检测计算通过系统的WFG进行扩散。这些技术使用回声算法来检测死锁,并且基于这个计算叠加了底层的分布式计算。如果这个计算失败,发起者将报告死锁全局状态检测。

基于全局状态检测的算法

基于全局状态检测的死锁检测算法利用以下事实:

  1. 可以在不冻结底层计算的情况下获取分布式系统的一致快照。
  2. 如果在快照收集开始之前系统中存在稳定属性,它将被保留。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程