领导者选择

时间:2012-08-03 11:10:46

标签: algorithm cluster-computing distributed-computing master-slave distributed-system

我有x台机器,我想选择1来完成特定的工作(主机)。我有一个数据库,这是这些机器唯一的共享资源,没有机器间通信机制。

为了选择一台机器,我正在考虑为数据库写一个值,并选择先选择哪一个(比如说M1)。 M1定期更新数据库以说明其存活。当M1死亡时,其他机器看到M1最近没有更新DB,将尝试写入db以承担主要机器角色。

在任何给定的时间点,我可以让机器写入db的值,因此每台机器都会尝试写入相同的值吗?如果时钟在所有机器中同步,我可以选择YYMMDDHHMM。但情况可能并非如此。

任何指针/想法?

2 个答案:

答案 0 :(得分:1)

您可以使用DBMS的功能来查询服务器本身的时间,以遵循您在此处概述的方法。

为了保持这种水密性,你需要注意一些问题:

  • 在测试当前工作节点的活跃性时,必须在表上获取写锁定,以确保测试工作者的活力和作业的声明是作为一个原子动作完成的。这避免了多个工人同时提出索赔。
  • 每当当前工作人员更新表以断言其活跃性时,它必须遵循相同的锁定机制以检测任何其他工作人员已接管工作的情况
  • 为了甚至知道其他一些工作人员接管了这份工作,你需要加入某种身份证明,以便看到谁正在做这项工作

这些只是通用的评论,因为根据您的描述,您不清楚如何全面详细地实现算法。

答案 1 :(得分:1)

根据数据库为您提供的锁定语义以及检测失败客户端的优势,每台计算机尝试获取公共排它锁可能就足够了。无论哪台机器获得独家锁定都是领导者。