计算机时间问题漫谈

简介: 计算机的时间问题比一般的认知要复杂,尤其是在涉及模块间合作的场景时会出现很多惊喜。本文旨在简要说明面临的挑战和产品设计上的一些建议。

1.引言

  • 当没有手表的时候,你不清楚现在是几点。
  • 当有了1块手表时,你知道现在是几点。
  • 当有了2 块手表时,它们的时间显示不一致时,你又不知道现在是几点。
  • 当你碰到有个人和你一样都有手表,但时间不一致时,你还是不知道现在是几点。
  • 当你对着电视对标,看了眼电视显示是 6 点整,当低头调完表时,再看表这时电视又比手表快了几秒,于是又继续调表,经过几轮后,好像偏差不大了。
  • 过了几个月,你发现手表又和电视上的不一致了……
  • 当学了高中物理后,知道了电视信号传播是需要时间了,知道了电视上的时间只是导播随电视画面一起传给你播放的画面,于是全国各地看到的 6 点的画面其实是有先后的。
  • 当你出国后,发现国外有人有他们心中的“CCTV”,你又开始思考不同国家的人的时间差。
  • ……

2.问题分析

我们在日常生活中面临的问题,计算机系统也面临同样的问题,站在计算机系统角度面临 4 种时间。

  • 自己的系统时间

    • 硬件时钟:计算机硬件有个使用电池的实时时钟(Real-time Clock, RTC)也叫(CMOS时钟,BIOS时间)。这个于电池质量和使用时长等有关。
    • 系统时钟:又名软件时钟,由Linux内核计算为自1970年1月1日午夜UTC以来的秒数。系统时钟的初始值由硬件时钟计算。系统正常运行后,由系统内核独自运行系统时钟。
  • 自己选择对标的基准时间:可选择自建自己的时间服务器,也可选择对标公共时间服务器
  • 协作模块的时间:由于每个系统选取的时间坐标不同,则大家在协作时时间不一致是常态,如果凑巧一致且长期一致,真是罕见的幸事。
  • 世界公认的标准时间:一般认为UTC和GMT是相等的,但是会存在0.9秒以内的误差,这是由于地球不规则自转引起的。

    • UTC(Universal Time Coordinated),即协调世界时。全世界统一的世界标准时间。需要不规则地加入闰秒。
    • GMT(Greenwich Mean Tim),格林尼治平均时间。

image.png

3.产品设计建议

  • 时间不一致是常态,要基于这个前提来设计
  • 可以以抽象的时间代替具体时间,如业务流水号
  • 以相对时间代替绝对时间
  • 日志要有基于自身时钟的时间戳,建立自己的时间体系,以便于自身问题的排查和定位
目录
相关文章
|
2月前
|
存储
学习计算机组成原理------第一天(额外学的)
这篇文章介绍了计算机系统的层次结构和计算机性能指标,包括存储器性能指标(如MAR和MDR位数对存储容量的影响)、CPU性能指标以及系统整体性能指标。
学习计算机组成原理------第一天(额外学的)
|
17天前
|
缓存 Java Go
计算机是如何工作的
计算机是如何工作的
18 0
|
1月前
|
存储 量子技术 芯片
计算机历史
计算机历史
45 1
|
2月前
|
缓存 安全 固态存储
计算机提高计算机运行速度
【8月更文挑战第4天】
56 1
|
5月前
|
存储 数据处理 数据库
计算机中的单位详解
计算机中的单位详解
501 0
|
5月前
|
存储 缓存 Linux
计算机是如何工作的(简单介绍)
计算机是如何工作的(简单介绍)
116 0
|
Java Unix 程序员
1.计算机是如何工作的(下)
1.计算机是如何工作的(下)
56 1
|
存储 达摩院 量子技术
计算机组成原理:计算机的发展历史
本文介绍计算机发展的四个阶段、微型计算机发展历史。
9042 0
计算机组成原理:计算机的发展历史
|
存储 芯片
1.计算机是如何工作的(上)
1.计算机是如何工作的(上)
106 0
|
存储 算法 机器人
计算机的组成是什么样的?计算机的指挥中心CPU为啥那么强大?
计算机的组成是什么样的?计算机的指挥中心CPU为啥那么强大?
242 0