• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kikione
V2EX  ›  程序员

分布式没有全局时间

  •  
  •   kikione · Nov 21, 2021 · 5400 views
    This topic created in 1816 days ago, the information mentioned may be changed or developed.
    不同计算机上的时钟未必会给出相同的时间?
    为什么会这样啊?
    25 replies  •  2021-11-23 02:05:55 +08:00
    geligaoli
    geligaoli
    Nov 21, 2021
    1
    如果系统允许几个毫秒的误差,用 ntpdate 就可以了。要是想达到微妙的误差,就得靠硬件了。
    QingXuJiaZhi
    QingXuJiaZhi
    Nov 21, 2021❤️4
    2
    因为根据相对论,每个参照系的时间都不同,而不同计算机就是不同参照系,自然不可能拥有相同的时间。
    MarkLazy
    MarkLazy
    Nov 21, 2021
    3
    所有的度量衡都有最小误差啊,时间也一样,只要控制在一定范围内不就没问题吗
    rrfeng
    rrfeng
    Nov 21, 2021
    4
    不同计算机上的时钟必然会给出不同的时间。
    ipwx
    ipwx
    Nov 21, 2021
    5
    因为晶振是有误差的。

    除非你用原子振荡计时。
    luoqeng
    luoqeng
    Nov 21, 2021
    6
    只有逻辑时钟 Lamport
    luoqeng
    luoqeng
    Nov 21, 2021
    7
    Google 的分布式数据库库用原子时钟保证误差
    luoqeng
    luoqeng
    Nov 21, 2021
    8
    sagaxu
    sagaxu
    Nov 21, 2021
    9
    同一台机器上,时间没有误差吗?
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Nov 21, 2021
    10
    原子钟的标准时间是个参考系,同步到其他设备上碍于物理距离 / 时间发生器(例如晶振)工艺,无法保持绝对意义上的同步。
    所以分布式系统为了保持同步动作,就需要额外的考量,增加其他的处理逻辑了
    MoYi123
    MoYi123
    Nov 21, 2021
    11
    这就是 CAP 理论中的 AP 系统.
    hallDrawnel
    hallDrawnel
    Nov 21, 2021
    12
    计算机自己的晶振时钟偏差其实可以很大,为了尽可能做到精确,IDC 可以部署原子钟同步时间,做到尽可能的一致。
    whevether
    whevether
    Nov 21, 2021
    13
    最好的方法就是统一使用网关上的时间
    sutra
    sutra
    Nov 22, 2021
    14
    chinvo
    chinvo
    Nov 22, 2021
    15
    可以考虑用 PTP
    Buges
    Buges
    Nov 22, 2021 via Android
    16
    就算是单机,要保证 monotonic time 也不是一件容易的事情。
    pythonee
    pythonee
    Nov 22, 2021
    17
    @whevether 那网关就是单点了
    pythonee
    pythonee
    Nov 22, 2021
    18
    我在想另外一个问题,分布式系统可不可以做到不依赖时间呀
    CRVV
    CRVV
    Nov 22, 2021
    19
    分布式可以有全局时间,比如 GPS 。从卫星发射它自己的时间,然后在地面接收到不同卫星发射的不同时间,用时间差可以算出来距离差,然后解出自己的坐标。
    整套系统的关键就是那个全局一致的时间。
    当然成本比较高,别的系统值不值得用就是另一回事了。
    luoqeng
    luoqeng
    Nov 22, 2021
    20
    @pythonee 分布式系统需要依赖的不是时间,是确认两台机器处理事情的先后顺序,顺序有全序 偏序关系。
    whevether
    whevether
    Nov 22, 2021
    21
    @pythonee 网关怎么是单点了。你玩过没? 你分布式有一个对外的通道。这个对外的闸门就是网关
    liuhan907
    liuhan907
    Nov 22, 2021 via Android
    22
    @whevether 网关不是单点那还不是回到这个问题上来了
    2i2Re2PLMaDnghL
    2i2Re2PLMaDnghL
    Nov 22, 2021
    23
    不可能存在完美的计时工具,因为时计即熵计。理论上完美的时计需要消耗全部的能量转化成等量的纯熵
    PDdavon
    PDdavon
    Nov 22, 2021
    24
    每台计算机只能根据晶振来确定从开机后到当前的时间,但是晶振本身也是受到温度影响的。而又由于网络延迟的不确定性,也不能完全相信其他节点传递过来的时间,只能是从几个信息源综合判定当前可能的时间。可以看下《数据密集型应用设计》 http://ddia.vonng.com/#/ch8?id=%e4%b8%8d%e5%8f%af%e9%9d%a0%e7%9a%84%e6%97%b6%e9%92%9f
    zeni123
    zeni123
    Nov 23, 2021 via iPhone
    25
    可以有的

    假如是全球规模的分布式系统 使用原子钟 gps 这样的全局时间来同步比网络通信更好

    https://en.m.wikipedia.org/wiki/Spanner_(database)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2349 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 11:33 · PVG 19:33 · LAX 03:33 · JFK 06:33
    ♥ Do have faith in what you're doing.