裝置時鐘的不同步
- 一部裝置有一個時鐘,一百萬部裝置就有一百萬個時鐘,每個時鐘都不同步。
- 電腦時鐘有快有慢。今天可能同步,一年後就會不同步。
- 伺服器的時鐘和客戶端的時鐘,可以不同步。
- 如果伺服器系統涉及多個硬體,它們的時鐘也可以不同步。
注意及建議
- 很多作業系統都已經自動設定時鐘 NTP 同步。但開發者和作業人員最好親自檢查一下。
- 由於用戶能隨意改變自己的時鐘,又或者沒有設定時鐘同步,因此不要相信用戶端的時鐘。如果可能向伺服器查詢時間的話,就可以得到比較可靠的時間,甚至偵測時鐘有沒有嚴重不同步。(另見 不要相信用戶端 )
- 即使在伺服器端,也要假設所有伺服器之間都有些微的時差,例如一秒。
- 由於網絡容易出現差微不穩定延遲,要做到超低時差,要非常高成本,而且效益不高。與其追求超低時差,倒不如在程序上對時差有些許相容。
- 當裝置之間出現時差,除了可能收到「慢了半秒」的訊息外,還可能會收到「快了半秒」的「未來訊息」。尤其是後者,最容易導致系統出錯。
- 在 protocol 加插訊息的 timestamp,有助處理時鐘不同步的問題。