计算机时间问题漫谈

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

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

  • 时间不一致是常态,要基于这个前提来设计
  • 可以以抽象的时间代替具体时间,如业务流水号
  • 以相对时间代替绝对时间
  • 日志要有基于自身时钟的时间戳,建立自己的时间体系,以便于自身问题的排查和定位
目录
相关文章
|
网络协议 算法 网络安全
EVE-NG:一种强大的网络模拟器和实验平台
随着网络技术的飞速发展,网络安全和网络性能问题越来越受到人们的关注。在这个领域,EVE-NG是一种广受欢迎的网络模拟器和实验平台。
|
存储 资源调度 分布式计算
CDP中配置Apache Hadoop Yarn的安全性
CDP中配置Hadoop Yarn的安全性。
971 0
CDP中配置Apache Hadoop Yarn的安全性
|
JSON 分布式计算 前端开发
前端的全栈之路Meteor篇(七):轻量的NoSql分布式数据协议同步协议DDP深度剖析
本文深入探讨了DDP(Distributed Data Protocol)协议,这是一种在Meteor框架中广泛使用的发布/订阅协议,支持实时数据同步。文章详细介绍了DDP的主要特点、消息类型、协议流程及其在Meteor中的应用,包括实时数据同步、用户界面响应、分布式计算、多客户端协作和离线支持等。通过学习DDP,开发者可以构建响应迅速、适应性强的现代Web应用。
1912 2
|
运维 Serverless 数据处理
函数计算产品使用问题之ComfyUI界面没有显示Manager按钮是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
数据采集 监控 搜索推荐
商业案例 I 数据中台用户场景案例
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
存储 固态存储 Java
文件系统使用固态硬盘(SSD)
【10月更文挑战第8天】
562 2
Unity精华☀️Audio Mixer终极教程:用《双人成行》讲解它的用途
Unity精华☀️Audio Mixer终极教程:用《双人成行》讲解它的用途
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
329 0
|
数据采集 C++
curl使用小记(二)——远程下载一张图片
curl使用小记(二)——远程下载一张图片
836 0
|
Linux 数据安全/隐私保护 Python
Linux配置网卡、创建用户赋予sudo权限、互信息等基本操作
以上是Linux配置网卡、创建用户赋予sudo权限、互信息的基本操作。这些步骤可以用于在Linux系统上进行网络配置、用户管理和信息分析。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
471 4