分布式没有全局时间 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kikione
V2EX    程序员

分布式没有全局时间

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

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

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

    https://en.m.wikipedia.org/wiki/Spanner_(database)
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1367 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 16:55 PVG 00:55 LAX 08:55 JFK 11:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86