我有x台机器,我想选择1来完成特定的工作(主机)。我有一个数据库,这是这些机器唯一的共享资源,没有机器间通信机制。
为了选择一台机器,我正在考虑为数据库写一个值,并选择先选择哪一个(比如说M1)。 M1定期更新数据库以说明其存活。当M1死亡时,其他机器看到M1最近没有更新DB,将尝试写入db以承担主要机器角色。
在任何给定的时间点,我可以让机器写入db的值,因此每台机器都会尝试写入相同的值吗?如果时钟在所有机器中同步,我可以选择YYMMDDHHMM。但情况可能并非如此。
任何指针/想法?
答案 0 :(得分:1)
您可以使用DBMS的功能来查询服务器本身的时间,以遵循您在此处概述的方法。
为了保持这种水密性,你需要注意一些问题:
这些只是通用的评论,因为根据您的描述,您不清楚如何全面详细地实现算法。
答案 1 :(得分:1)
根据数据库为您提供的锁定语义以及检测失败客户端的优势,每台计算机尝试获取公共排它锁可能就足够了。无论哪台机器获得独家锁定都是领导者。