时钟对应用程序来说很重要,它可以回答以下问题:
在分散式系统中,时间是一件棘手的事情,因为彼此的沟通可能会延迟且又不晓得延迟多久,更甚者,每台机器在硬体内都有自己的时钟:石英振荡器 (quartz crystal oscillator),此设备并不完全准确,所以每台机器都有自己的时间概念,这就代表了跟其他机器比起来可能有快有慢。
还好我们可以选择使用 网路时间协定 (Network Time Protocol) NTP 来同步时钟。
现代电脑有 2 个类型的时钟: 单调递增时钟 (Monotonic Clock) 和 日历钟 (Time-of-Day Clock),区分它们是很重要的,它们有不同的用途。
日历钟根据了 壁时计时刻 (wall-clock time) 回传了挂上该时钟开始到现在的时间,简单说就是从 UTC 1970-01-01 开始到现在经过的秒数(或毫秒),不计算闰秒。相关函式有 Linux 的 clock_gettime(CLOCK_REALTIME)
和 Java 的 System.currentTimeMillis()
。
日历钟通常会使用 NTP 来同步时间,在特定情形中,如果本地时钟超过 NTP 服务器太多,它会强制重置且跳回先前的时间点,因为上述论点以及它们经常忽略闰秒的关系,日历钟比较不适合来测量执行时间。
单调递增时钟就很适合来测量执行时间或间隔 (interval) 、timeout 或回应时间。它来自於系统启动後流逝的时间,所以它保证时间会一直往前进,相关函式有 Linux 的 clock_gettime(CLOCK_MONOTONIC)
和 Java 的 System.nanoTime()
。
当 NTP 检测到电脑的石英移动太快或太慢时,NTP 有可能会调整单调递增时钟向前移动的频率(称为 slewing the clock),预设是允许时钟速率加快或减慢 0.05%,但 NTP 不会让该时钟往前或往後跳,这个特性让大多数的系统能将执行时间等等的测量精确到奈秒等级。
乾是 TGI Friday 加上明天要上班所以懒的写了,剩下的明天补上吧!
<<: [Day10] 设定 Actions On Google 专案
>>: [Day10] JavaScript - 传值 & 传参考
那今天呢,我们来讲解一下请LIR注册ASN需要几个重要的Object 首先,我们这边是以RIPE为例...
在有必要的时候,我们可能需要使用寄信来通知使用者、寄信给公会小姐、 把AI数据视觉化的资料寄给老板。...
昨天熬夜看小说,今天早上爬不起来就翘班(开玩笑的,是请假 今天赶快发一发文我要来去补眠 今天的题目↓...
ls 指令会列出目录中的各个档案与目录,供使用者浏览整个目录的结构,是个十分常用的指令。 但它的设计...
根据FIPS 199,“确定信息系统的安全类别需要进行更多的分析,并且必须考虑驻留在信息系统上的所有...