想知道是否有人对一种好的算法有任何建议或示例,以保证一台且只有一台服务器在同时启动的多台服务器中被设置为主服务器?
我想出了以下内容,但问题在于下面的最后一个问题:
或者这一切从一开始就很糟糕吗?有更好的办法吗?
这个问题有多种解决方案。如果您假设共享文件系统始终可用,那么问题就简单了。
这不是一个万无一失的解决方案,因为它依赖文件系统来控制对文件的访问(两台计算机都尝试同时写入文件)。然而,因为主文件中应该只有一个主机名,所以最后一步应该保证只有一台计算机真正认为它是主文件。
如果不假设始终存在共享文件系统,问题会有点困难。
您描述的问题称为“领导者选举”。一种可能的解决方案称为筏算法。 github上有一个c#实现:https://github.com/hhblaze/Raft.Net