跳至主要内容

ExpTech NTP Server

· 閱讀時間約 3 分鐘
YuYu1015
Full-Stack Engineer (全端工程師)

越來越多 ExpTech 相關產品及服務需要時間同步服務, 在 bclswl0827 avatarttyAMA0

的幫助下, 剛好有這個機會,加上我自己小小加料一下, 就有了這個 ExpTech NTP Server,此外也順便一起把舊的時間同步機制整理一下。

舊架構

早期是用一個很簡單的 HTTP 服務,在 Body 回傳 Unix Timestamp(text/plain)。 因為當時對時間精度沒有特別要求,所以這個「陽春版」其實撐了滿長一段時間。

新架構

現在改成在 time.exptech.com.tw:123 提供 SNTP(UDP) 時間同步服務, 同時保留 HTTP 介面,方便在無法用 UDP 的環境(例如 Web)也能對時。

SNTP

先拿幾個常見的公共 NTP Server 來對照一下:

各家 NTP Server 對照

Google NTP Server

Google NTP Server

Cloudflare NTP Server

Cloudflare NTP Server

Apple NTP Server

Apple NTP Server

TW NTP Server

TW NTP Server

ExpTech NTP Server

最後是主角 ExpTech 自家的 NTP Server:

ExpTech NTP Server

HTTP GET(text/plain)

除了 SNTP 以外,也可以用 HTTP 的方式取得時間:

  • 會在 Header 回傳 X-NTP-T2X-NTP-T3
  • 同時也會在 Body 回傳 Unix Timestamp(向下相容舊架構)
ExpTech NTP (HTTP) Server

總結

實測結果:

  • SNTP 協議:誤差約 ±5ms,精度表現很好,實測結果相當穩定
  • HTTP 協議:誤差約 ±50ms(主要是 TCP 開銷),雖然精度沒有 SNTP 那麼理想,但在 Web 等無法使用 UDP 的情境下,非常實用

依照實際使用環境選擇 SNTP 或 HTTP,就能在不同平台上都維持不錯的時間同步效果。


特別感謝

感謝 台灣數位串流有限公司 TWDS(Taiwan Digital Streaming) 提供伺服器贊助,讓 ExpTech NTP Server 能夠穩定運作。

TWDS LogoTWDS Logo