计算机时间问题漫谈

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

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.产品设计建议

  • 时间不一致是常态,要基于这个前提来设计
  • 可以以抽象的时间代替具体时间,如业务流水号
  • 以相对时间代替绝对时间
  • 日志要有基于自身时钟的时间戳,建立自己的时间体系,以便于自身问题的排查和定位
目录
相关文章
|
4月前
|
存储
学习计算机组成原理------第一天(额外学的)
这篇文章介绍了计算机系统的层次结构和计算机性能指标,包括存储器性能指标(如MAR和MDR位数对存储容量的影响)、CPU性能指标以及系统整体性能指标。
学习计算机组成原理------第一天(额外学的)
|
2月前
|
缓存 Java Go
计算机是如何工作的
计算机是如何工作的
20 0
|
4月前
|
缓存 安全 固态存储
计算机提高计算机运行速度
【8月更文挑战第4天】
76 1
|
7月前
|
缓存 Unix Shell
回顾计算机运行中发生的事情
【5月更文挑战第1天】本文介绍了计算机启动和操作系统运行的过程。当计算机启动时,BIOS引导加载程序加载内核到内存,然后内核初始化并探测硬件。启动后,init或upstart程序启动守护进程和系统服务,包括X服务器。用户登录时,身份验证后,用户获得相关权限并启动Shell或图形桌面。程序运行时,内核通过系统调用管理进程,实现多任务处理。内存管理通过虚拟内存和内存层次结构,如寄存器、缓存和主存,确保进程安全并有效地共享资源。如果进程试图访问非法内存,会触发段错误。文件权限则进一步保护系统免受恶意程序影响。
120 8
回顾计算机运行中发生的事情
|
6月前
第2章 计算机中信息的表示方法
第2章 计算机中信息的表示方法
|
7月前
|
存储 数据处理 数据库
计算机中的单位详解
计算机中的单位详解
646 0
|
7月前
|
存储 缓存 Linux
计算机是如何工作的(简单介绍)
计算机是如何工作的(简单介绍)
127 0
|
7月前
|
存储
计算机组成原理学习笔记(待更新)
计算机组成原理学习笔记(待更新)
83 0
|
大数据
32位计算机与64位计算机的区别
32位计算机与64位计算机的区别
306 0
|
Java Unix 程序员
1.计算机是如何工作的(下)
1.计算机是如何工作的(下)
61 1