分布式系统中的分层死锁检测
先决条件:分布式系统中的死锁检测
在分层死锁检测算法中,站点以分层方式排列,站点检测仅涉及其后代站点的死锁。分布式死锁算法将死锁检测的责任委托给各个站点,而在分层结构中,每个站点都有本地检测器,它们相互通信其本地等待图 (WFG)。
方法:
使用其本地 WFG 在该站点检测到单个站点本地的死锁。每个站点还将其本地 WFG 发送到下一个级别的死锁检测器。因此,涉及 2 个或更多站点的分布式死锁将由控制这些站点的最低级别的死锁检测器检测到。
在这种方法中,有两种检测方法:
1. Ho-Ramamoorthy 算法:
- 仅使用两个级别,即主控制节点和集群控制节点。
- 集群控制节点用于检测其成员之间的死锁并将其集群外的依赖关系报告给主控制节点。
- 主控节点负责检测集群间死锁。
2. Menasce-Muntz 算法:
- 叶控制器负责分配资源,而分支控制器会发现其子节点在树中跨越的资源之间存在死锁。
- 网络拥塞是可以管理的,节点故障不像完全集中的那样严重。
- 可以通过诸如连续分配报告或定期分配报告等方式进行检测。
好处:
- 如果层次结构与站点集群本地的资源访问模式一致,则与集中式和分布式方法相比,这种方法可以提供有效的死锁检测。
- 它减少了对中心站点的依赖,从而降低了通信成本。
缺点:
- 如果死锁跨越多个集群,这种方法将是低效的。
- 实现起来更复杂,并且会涉及对锁和事务管理器算法的非平凡修改。