メインコンテンツまでスキップ

ExpTech NTP Server

· 約2分
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-T2、X-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