有了三臺服務器,無論哪臺服務器都可以運行,您需要採用分佈式方法。問題在於,如果發生故障,您可能無法解決是否運行腳本的難題。
首先,您可以讓一臺計算機連接到其他計算機並告訴它們不要運行。這被稱爲「壓制」方法;但是,如果無法連接到其他計算機,則會出現很多問題。問題在於大多數起步程序員都無法真正瞭解網絡環境對設計程序需要的變化。請花一點時間閱讀典型文章fallacies of distributed computing.
Chron通過不關心其他計算機上發生的情況來解決此問題,因此chron具有錯誤的設計目標。
有了三臺電腦,您還將擁有三個不同的時鐘,並擁有自己的速度和時間。一個好的分佈式解決方案將有一些時間概念,並不直接依賴每臺機器的時鐘。
分佈式解決方案(如果它們容忍故障或故障)必須能夠在沒有與其他機器可靠通信的情況下運行。有時候,這個小組被分成兩半,一組機器不能與另一組通信。在許多情況下,這兩個組織都會執行「關鍵」行動,因爲擔心另一個組織不會。在其他情況下,這兩個小組可能不會執行「關鍵」行動,假設其他小組確實如此。一個好的解決方案將確保「關鍵行動」執行一次,即使計算機無法通信。通常這是通過「多數」來完成的,如果您不能訪問所涉及的至少大部分機器,那麼您的組(法定人數)無法執行關鍵操作。
看看Paxos算法以瞭解問題;而且,一旦你更加意識到問題,考慮到「分佈式計算的謬誤」,回頭看看你選擇的技術,以確定他們試圖解決哪些問題的部分。也意識到完美的,100%正確的解決方案可能是不可能的;因爲運行腳本的預先選擇的機器可能會遭受網絡故障,然後依次發生電源故障,使得機器只承擔網絡中斷。
這是我必須做的實際任務,但是因爲它是一個完整的用例,所以這也可以是一個面試問題。有沒有辦法讓最終用戶提供的腳本保存在這3臺服務器中? Apache館長的NodeCache可以用於相同的嗎? – user3811124 2014-12-05 05:39:46