23 | Spanner(二):时间的悖论
Megastore 的事务性能怎么样?
- 深入了解
- 翻译
- 解释
- 总结
Spanner: 解决全球数据库挑战的分布式系统 Spanner是一种全球规模的分布式数据库系统,旨在解决全球数据库中的时钟误差和实现分布式事务的挑战。该系统通过数据分区和Paxos同步复制等机制实现全球数据库,并探讨了在分布式环境下的事务实现挑战。Spanner通过事务管理器和锁表来支持分布式事务,并使用时间戳范围来确保事务提交的先后顺序关系。为了解决时钟同步和时间戳选择可能带来的问题,Spanner采用原子钟和GPS的组合,并通过条件等待策略将时钟误差范围缩小到1毫秒到7毫秒之间。这种策略使得分布式事务的“可线性化”问题得到了工程上的解决。Spanner的设计和解决方案为读者提供了对全球规模分布式数据库系统的深入了解。 在Spanner这样的全球数据库里,实现事务面临着跨数据中心的网络延时和服务器时钟不同步的问题。传统的NTP同步时钟的方式会导致数十毫秒的时钟差异,给分布式事务带来了很大的挑战。Google采用了原子钟+GPS时钟来缩短各个服务器的时钟差异问题,并通过条件等待策略解决时钟误差带来的问题。Spanner的核心思想是让协调者收集所有事务参与者的本地时钟,并为事务分配一个时间戳,实际事务提交的时间则在各个机器上等待到这个时间戳过去之后。这种策略使得分布式事务的“可线性化”问题得到了工程上的解决。 Spanner的设计和解决方案为读者提供了对全球规模分布式数据库系统的深入了解。如果读者对分布式系统中的部分系统故障和失效的情况感兴趣,可以阅读《数据密集型应用系统设计》的第8章。同时,读者也可以思考在日常使用互联网产品时,是否遇到过时钟差异问题带来的奇怪体验。Spanner的解决方案为读者提供了对全球规模分布式数据库系统的深入了解,并为分布式系统中的时钟同步问题提供了一种解决思路。
《大数据经典论文解读》,新⼈⾸单¥59
全部留言(7)
- 最新
- 精选
- 在路上徐老师好,看直播的时候有时候会卡顿,当我重新连接服务器之后,看的内容不是最新的,而是掉线前看过的内容。如果两个人同时用手机看直播,很可能出现一个人看到的内容落后另一个人看到的内容,那个看到落后内容的人要么会带上耳机,假装别人正在看的直播不存在,要么关掉自己的手机,凑过去和别人一起看。2021-11-227
- 核桃spanner的设计中通过原子钟和GPS的方式来保证时钟偏移误差压缩在一定范围内,这个技术方式不适合绝大部分的企业,因为成本太高了,而且专门维护这个也需要很多成本和时间的。但是有时候更多就是考虑引入外部的全局事务ID中心,这个方案会更加常见一点。 另外关于前面提到的分布式事务的可线性化问题,这里其实目前在文件系统中有类似的解决方案。文件系统中管理磁盘空间的时候,有几个结构,分别是可用空间,正在申请的空间,延迟释放的空间等等,因为有时候删除数据也需要时间的,但是先把日志记录起来,然后把释放的空间加到延迟释放这里,等到全部搞定了,再放到可用空间里面。 那么在银行转账这个例子中,就是冻结资金,可用资金等来管理了,在转账前,日志先落盘记录起来,然后把可用资金划扣掉,接收方也是先放到冻结资金金额里面等方式来处理,这样的操作,更加精细化一点。2022-02-263
- Helios世界杯期间A和B在赌球,A已经看到结果说“给钱,给钱”,B说“扯呢,这不还有两分钟了么”。2021-12-2911
- 槑·先生事务加上时钟,好复杂2022-06-13
- 夏至分布式事物的坑很多,实际应用系统设计基本都是在避免分布式事物的前提下,使用分布式读写提高性能和可用性。2022-02-18
- Helios既然spanner实现分布式事务也是需要两阶段提交,megastore也是需要两阶段提交,通过原子钟 +GPS 时钟的metastore是不是也能实现同样的效果?2022-01-071
- 那时刻处理时间的问题一致是痛点,其一是时间同步;其二是处理时区的时间。2021-11-22