你有没有遇到过这种情况:服务器A和服务器B的时间相差了0.5秒,日志里明明先发生的事情却跑到后面去了。在一个稍微大一点的网络里,这种“时间打架"几乎天天都在发生。而专门来解决这个问题的硬件,就是GPS授时仪。
GPS授时仪不是给普通手表或手机校时的,它的工作环境通常是机房、调度中心、自动化产线这类地方。外形一般像一台薄薄的设备,背后有一堆接口——网口、串口、BNC头,前面板是一块显示时间和卫星状态的屏幕。只要接上天线,它能同时接收多颗GPS卫星发来的时间码,然后转换成现场的NTP、PTP、IRIG-B或者简单的脉冲信号。其他设备接上它,就能把自己的时钟拉回来。
为什么会需要这样一台设备呢?很多人觉得让服务器自己联网同步不就行了。这里面有两个现实问题。一是安全,很多工业网络和政务内网是不允许连接互联网的,但GPS信号是单向广播,只收不发,天然就隔离了网络攻击。二是精度,普通NTP同步受网络抖动影响,误差常常跑到几十毫秒,而一台接受GPS信号的授时仪在本地直接输出,可以把误差压到微秒甚至纳秒级。
从使用角度看,GPS授时仪接设备并不复杂。常见的有三种接法:当你只要求毫秒级时间一致,走网线用NTP协议就能满足,一台设备可以给几百台服务器校时。当你需要微秒级精度,比如电力故障录波或者铁路信号系统,就改用IRIG-B直流码,通过同轴电缆或光纤传输。还有一种更简单——直接输出一个秒脉冲或者分脉冲,让后端的PLC或采集卡自己锁住这个边沿。
需要注意的一个实际问题是天线安装。GPS授时仪的天线必须看到天空,不能放在金属吊顶下面,也不能贴着大功率设备走线。很多现场不稳定,不是授时仪坏了,而是天线被遮挡或者馈线被踩断了。另外,一些老的GPS授时仪只收L1频段民用信号,在城市峡谷环境下容易掉星,现在更多设备会额外加一个北斗模块做备份。
说到底,GPS授时仪并不神秘,它就是把天上的时间抓到地上,再用本地接口分发给需要它的设备。一台小盒子放在机柜里,默默输出脉冲和报文,系统里的每一台机器才能安心地按同一个节奏工作。时间不打架了,故障排查也就清爽多了。
