有了三台服务器,无论哪台服务器都可以运行,您需要采用分布式方法。问题在于,如果发生故障,您可能无法解决是否运行脚本的难题。
首先,您可以让一台计算机连接到其他计算机并告诉它们不要运行。这被称为“压制”方法;但是,如果无法连接到其他计算机,则会出现很多问题。问题在于大多数起步程序员都无法真正了解网络环境对设计程序需要的变化。请花一点时间阅读典型文章fallacies of distributed computing.
Chron通过不关心其他计算机上发生的情况来解决此问题,因此chron具有错误的设计目标。
有了三台电脑,您还将拥有三个不同的时钟,并拥有自己的速度和时间。一个好的分布式解决方案将有一些时间概念,并不直接依赖每台机器的时钟。
分布式解决方案(如果它们容忍故障或故障)必须能够在没有与其他机器可靠通信的情况下运行。有时候,这个小组被分成两半,一组机器不能与另一组通信。在许多情况下,这两个组织都会执行“关键”行动,因为担心另一个组织不会。在其他情况下,这两个小组可能不会执行“关键”行动,假设其他小组确实如此。一个好的解决方案将确保“关键行动”执行一次,即使计算机无法通信。通常这是通过“多数”来完成的,如果您不能访问所涉及的至少大部分机器,那么您的组(法定人数)无法执行关键操作。
看看Paxos算法以了解问题;而且,一旦你更加意识到问题,考虑到“分布式计算的谬误”,回头看看你选择的技术,以确定他们试图解决哪些问题的部分。也意识到完美的,100%正确的解决方案可能是不可能的;因为运行脚本的预先选择的机器可能会遭受网络故障,然后依次发生电源故障,使得机器只承担网络中断。
这是我必须做的实际任务,但是因为它是一个完整的用例,所以这也可以是一个面试问题。有没有办法让最终用户提供的脚本保存在这3台服务器中? Apache馆长的NodeCache可以用于相同的吗? – user3811124 2014-12-05 05:39:46