05 | 全局时钟:物理时钟和逻辑时钟你Pick谁?
该思维导图由 AI 生成,仅供参考
常见授时方案
- 深入了解
- 翻译
- 解释
- 总结
全局时钟在分布式数据库设计中扮演着关键角色。本文介绍了常见的授时方案和具体实现。文章首先强调了全局时钟的重要性,并列举了常见的授时方案,包括TrueTime、HLC、TSO和STP。TrueTime采用多时间源和物理时钟,具有高可靠性和全球化部署的优势,但也存在时钟偏移和回拨的问题。HLC采用混合逻辑时钟,解决了TrueTime的硬件依赖性,但仍存在整体性时间误差。TSO采用单时间源和单点授时的方式,实现简便但性能有上限。最后,STP采用单时间源和多点授时,介于HLC和TSO之间。文章还详细介绍了TiDB的实现方式,通过Placement Driver节点和etcd实现了高可靠的单点授时服务,并解决了新主产生时间戳大于旧主的问题。总的来说,全局时钟在分布式数据库设计中具有重要意义,不同的授时方案各有优劣,需要根据具体需求进行选择和实现。文章还介绍了HLC和STP的具体实现方式,以及它们在CockroachDB和巨杉中的应用。文章最后提出了思考题,鼓励读者思考时间对分布式数据库的影响,并欢迎读者在评论区留言讨论。
《分布式数据库 30 讲》,新⼈⾸单¥59
全部留言(19)
- 最新
- 精选
- KayGuoWhu全局时钟的目的是,生成全局唯一的时间戳。和全局唯一ID的区别和作用,有什么差异?
作者回复: 时钟的本质是用于比较事件发生的先后次序,不具有唯一性,但逻辑时钟可以弥补唯一性的问题。而唯一ID只具有唯一性,无法比较次序。
2021-03-2713 - 朱海昆工作中分布式数据库落地的还是相对少。目前项目各种分布式服务,一般都依赖于一个序列号生成器,一般采用雪花或者雪花变种的一些算法实现。为了保证序列号的唯一或者进一步保证递增,依赖于时钟的同步。现在的做法一般都是结合业务场景,对时钟进行一定的校验,同时对于时钟回拨做一些容错等处理解决问题。 目前主流还是用应用层的方案来解决分布式的各种问题,如果将来分布式数据库成熟了,应用解决方案会大大简化。
作者回复: 说的不错,而且我认为分布式数据库已经进入了规模化商用阶段,应用会逐渐多起来的。
2020-08-1911 - 扩散性百万咸面包老师能不能再多解释一下关于多时间源的意思? 1. 我理解多授时点应该是指当前集群有多个可以获取时间的服务器。TiDB的PD是通过集群化来做到高可用的,那么这为什么还被归于单授时点呢? 2. 多时间源怎么理解?文中提到Spanner是GPS+物理时钟,是说最终的时间计算会通过这2个指标计算的意思吗?如果是单时间源的话,获取的时间只取决于一个因素?
作者回复: 你好,第一个问题,TiDB的PD虽然是高可靠的,但工作的只是主节点,所以还是单点授时。第二个问题,多时间源,是说多个独立提供时间的实例,比如部分原子钟和GPS坏掉了,其他的原子钟可以照常提供时间不受影响。
2020-08-2229 - 开心哥从牛顿力学进入爱因斯坦的相相对论时空!
作者回复: 这大概就是学术研究的乐趣,突然发现自己关注的东西,跃升到了更高的维度,哈哈。
2020-08-198 - piboyehlc判断大小是先 高位,再低位,判断的时候本地时间可以忽略吧?
作者回复: 你好,还是比较本地时间的,否则就是纯粹的逻辑时钟了,那样无关事件的时钟偏差就太大了。有兴趣的话,也可以研究下课程中的论文,有疑问我们再一起讨论。
2020-08-235 - Lukia“103 到 106 的“可分配时间窗口”,在这个时间窗口内 PD 可以使用系统的物理时间作为高位,拼接自己在内存中累加的逻辑时间,对外分配时间戳。 ” 如果主PD在104发生了故障,切换新主PD之后岂不是105和106的时间窗口都不可用了?
作者回复: 是的,已经分配的时间窗口就舍弃了,这样保证不会时间戳不会重叠
2020-09-173 - 真名不叫黄金感谢老师分享~ 顺便说下我对Spanner的理解: Spanner解决True Time回拨的问题,应该是使用等待~ True Time会返回一个时间区间,保证真实时间是在这个区间内的,那么Spanner会等待这个时间过去,以此保证时钟不会回拨
作者回复: 说的对,点赞。我在第12讲会详细谈这个问题。
2020-08-212 - 游弋云端期待老师后续的时钟应用场景恩讲解!
作者回复: 嗯,这个还是蛮重要的
2020-08-20 - myrfy时间决定了数据库系统看到的事件发生顺序。对于对同一条记录进行操作的oplog在不同节点之间复制,然后在不同节点apply的时候,决定了谁在谁之前操作
作者回复: 这个理解有点小问题,复制的顺序并不影响操作的顺序和数据的可见性,还是要看操作的全局时间。推荐关注一下第12讲
2020-08-19 - wy单体数据库时代,我们一般都会忽略时间问题,因为即使时间是错的,但是起码它是递增的。但是在分布式数据库中,多个分片可能分布在不同的机房里面,这些机房甚至可能在不同的国家,可能会出现时间倒退的现象,对于分布式数据库的数据一致性的实现来说是影响很大的2021-01-065