大数据经典论文解读
徐文浩
bothub 创始人
13844 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 59 讲
大数据经典论文解读
15
15
1.0x
00:00/00:00
登录|注册

23 | Spanner(二):时间的悖论

你好,我是徐文浩。
在上节课里,我们一起了解了 Spanner 的整体架构。Spanner 的整个架构并不会让人有什么意外之喜,遵循的仍然是标准的分布式数据库的架构设计,通过对于数据分区、Paxos 同步复制等一系列的机制来实现一个超大规模的全球数据库。而对于网络延时,则是选择了对数据分区进行“调度”的策略,让数据尽可能接近读写它的用户,而不是让一份数据在所有的 Zone 里出现一份。
不过,其实对于 Spanner 这样的系统来说,最有挑战的问题并不是如何调度数据,而是在这样一个“全球”数据库里,如何实现事务。这个问题,也就是我们这节课的主题了。这节课,我会主要带你学习这两个知识点:
分布式数据库,会面临哪些我们意想不到的挑战。特别是其中不可靠的网络和不可靠的时钟,会为我们实现事务带来哪些困扰。
为什么 Megastore 这样简单的两阶段事务难以解决这些挑战,而 Spanner 是如何设计机制,来解决这个问题的。
相信学完了这节课,你能对 Spanner 面临的时钟误差下的可线性化挑战有所了解,也能对分布式数据库事务的实现有更深一步的掌握。

Megastore 的事务性能怎么样?

我们先来回顾下 Megastore 的数据库事务实现。在 Megastore 里,我们只能在单个实体组上实现一阶段事务。一旦需要跨越两个实体组,我们要么放弃事务性,采用 Megastore 的消息机制,要么我们就要选择两阶段事务。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Spanner: 解决全球数据库挑战的分布式系统 Spanner是一种全球规模的分布式数据库系统,旨在解决全球数据库中的时钟误差和实现分布式事务的挑战。该系统通过数据分区和Paxos同步复制等机制实现全球数据库,并探讨了在分布式环境下的事务实现挑战。Spanner通过事务管理器和锁表来支持分布式事务,并使用时间戳范围来确保事务提交的先后顺序关系。为了解决时钟同步和时间戳选择可能带来的问题,Spanner采用原子钟和GPS的组合,并通过条件等待策略将时钟误差范围缩小到1毫秒到7毫秒之间。这种策略使得分布式事务的“可线性化”问题得到了工程上的解决。Spanner的设计和解决方案为读者提供了对全球规模分布式数据库系统的深入了解。 在Spanner这样的全球数据库里,实现事务面临着跨数据中心的网络延时和服务器时钟不同步的问题。传统的NTP同步时钟的方式会导致数十毫秒的时钟差异,给分布式事务带来了很大的挑战。Google采用了原子钟+GPS时钟来缩短各个服务器的时钟差异问题,并通过条件等待策略解决时钟误差带来的问题。Spanner的核心思想是让协调者收集所有事务参与者的本地时钟,并为事务分配一个时间戳,实际事务提交的时间则在各个机器上等待到这个时间戳过去之后。这种策略使得分布式事务的“可线性化”问题得到了工程上的解决。 Spanner的设计和解决方案为读者提供了对全球规模分布式数据库系统的深入了解。如果读者对分布式系统中的部分系统故障和失效的情况感兴趣,可以阅读《数据密集型应用系统设计》的第8章。同时,读者也可以思考在日常使用互联网产品时,是否遇到过时钟差异问题带来的奇怪体验。Spanner的解决方案为读者提供了对全球规模分布式数据库系统的深入了解,并为分布式系统中的时钟同步问题提供了一种解决思路。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据经典论文解读》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 在路上
    徐老师好,看直播的时候有时候会卡顿,当我重新连接服务器之后,看的内容不是最新的,而是掉线前看过的内容。如果两个人同时用手机看直播,很可能出现一个人看到的内容落后另一个人看到的内容,那个看到落后内容的人要么会带上耳机,假装别人正在看的直播不存在,要么关掉自己的手机,凑过去和别人一起看。
    2021-11-22
    7
  • 核桃
    spanner的设计中通过原子钟和GPS的方式来保证时钟偏移误差压缩在一定范围内,这个技术方式不适合绝大部分的企业,因为成本太高了,而且专门维护这个也需要很多成本和时间的。但是有时候更多就是考虑引入外部的全局事务ID中心,这个方案会更加常见一点。 另外关于前面提到的分布式事务的可线性化问题,这里其实目前在文件系统中有类似的解决方案。文件系统中管理磁盘空间的时候,有几个结构,分别是可用空间,正在申请的空间,延迟释放的空间等等,因为有时候删除数据也需要时间的,但是先把日志记录起来,然后把释放的空间加到延迟释放这里,等到全部搞定了,再放到可用空间里面。 那么在银行转账这个例子中,就是冻结资金,可用资金等来管理了,在转账前,日志先落盘记录起来,然后把可用资金划扣掉,接收方也是先放到冻结资金金额里面等方式来处理,这样的操作,更加精细化一点。
    2022-02-26
    3
  • Helios
    世界杯期间A和B在赌球,A已经看到结果说“给钱,给钱”,B说“扯呢,这不还有两分钟了么”。
    2021-12-29
    1
    1
  • 槑·先生
    事务加上时钟,好复杂
    2022-06-13
  • 夏至
    分布式事物的坑很多,实际应用系统设计基本都是在避免分布式事物的前提下,使用分布式读写提高性能和可用性。
    2022-02-18
  • Helios
    既然spanner实现分布式事务也是需要两阶段提交,megastore也是需要两阶段提交,通过原子钟 +GPS 时钟的metastore是不是也能实现同样的效果?
    2022-01-07
    1
  • 那时刻
    处理时间的问题一致是痛点,其一是时间同步;其二是处理时区的时间。
    2021-11-22
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部