2010-05-14 40 views
7

假設Web場中有許多負載平衡的Web服務器,在應用程序代碼中使用應用程序/ Web服務器時間來獲取系統日期/時間是安全的,還是應該將此責任留給數據庫服務器?在Web農場環境中,我們是否應該將系統日期/時間基於Web服務器或數據庫服務器?

webfarm中所有服務器上的機器日期/時間設置是否會出現不同步的機會?

如果日期/時間將由數據庫管理系統負責,那麼如果我們有負載平衡的集羣數據庫,這個策略將如何工作?

+0

爲什麼不是標準的UTC? – 2010-05-14 08:28:50

+0

這取決於你想用什麼時間。如果你只需要知道到最近的分鐘,那麼這是一個不同的問題,需要它到毫秒。 – 2010-05-14 08:29:48

+0

相反,使用System.DateTime.UtcNow - 這將避免您可能遇到的任何問題,如果機器不是全部設置爲相同的時區。 – 2010-05-14 08:33:34

回答

3

你應該有一個時間服務器( - :)

嚴重的是,第一種方法是確保所有服務器都使用一個協議來同步它們的時鐘。這會給你帶來一個已知最壞的情況偏差。只有當這種偏差大於你能容忍的程度(在Web應用程序中不太可能),你將需要設計一些特殊的東西。 通常情況下,數據庫將會正常,但是如果它是羣集的,那麼您可能需要指定一個專用服務器作爲時間守護者。

但請注意,您的準確性將始終受網絡的最大滯後限制。

1

最好只在所有的服務器上設置相同的時間,這樣您就不必擔心了,否則總會有時間混淆。

如果服務器上的時鐘是定期從時間服務器設置的,它們應該至少精確到彼此100ms以內,這可能已經足夠了,儘管顯然這取決於您正在嘗試執行的操作。

相關問題