V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kikione
V2EX  ›  程序员

分布式没有全局时间

  •  
  •   kikione · 185 天前 · 2998 次点击
    这是一个创建于 185 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不同计算机上的时钟未必会给出相同的时间?
    为什么会这样啊?
    25 条回复    2021-11-23 02:05:55 +08:00
    geligaoli
        1
    geligaoli  
       185 天前
    如果系统允许几个毫秒的误差,用 ntpdate 就可以了。要是想达到微妙的误差,就得靠硬件了。
    cmdOptionKana
        2
    cmdOptionKana  
       185 天前   ❤️ 4
    因为根据相对论,每个参照系的时间都不同,而不同计算机就是不同参照系,自然不可能拥有相同的时间。
    qaqLjj
        3
    qaqLjj  
       185 天前
    所有的度量衡都有最小误差啊,时间也一样,只要控制在一定范围内不就没问题吗
    rrfeng
        4
    rrfeng  
       185 天前
    不同计算机上的时钟必然会给出不同的时间。
    ipwx
        5
    ipwx  
       185 天前
    因为晶振是有误差的。

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

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

    https://en.m.wikipedia.org/wiki/Spanner_(database)
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2460 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 15:59 · PVG 23:59 · LAX 08:59 · JFK 11:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.