Spanner 最早来自 Google 的一篇论文,并最终成为 Google Cloud 的一个服务。Spanner 简单来讲是一种两阶段提交的实现.

Spanner 的整体架构很复杂,包含的内容非常多。但核心主要是两个部分,分别是 TrueTime 和 Paxos Group。

TrueTime

分布式系统获取时间有两种方式:物理时间与逻辑时间。而由于物理时间不靠谱,分布式系统大部分使用逻辑时间。逻辑时间往往由一个节点生成时间戳,虽然已经很高效,但是如果要构建全球系统,这种设计就捉襟见肘了。

而 TrueTime 是一种逻辑与物理时间的融合,是由原子钟结合 IDC 本地时间生成的。区别于传统的单一时间点,TrueTime 的返回值是一个时间范围,数据操作可能发生在这个范围之内,故范围内的数据状态是不确定的(uncertainty)。系统必须等待一段时间,从而获得确定的系统状态。这段时间通常是比较短暂的,且多个操作可以并行执行,通常不会影响整体的吞吐量。

事务过程

Spanner 提供了三种事务模式

读写事务:该事务是通过分布式锁实现的,并发性是最差的。且数据写入每个分片 Paxos Group 的主节点。

只读事务:该事务是无锁的,可以在任意副本集上进行读取。但是,如果想读到最新的数据,需要从主节点上进行读取。主节点可以从 Paxos Group 中获取最新提交的时间节点。

<

Spanner如何实现事务?相关推荐

  1. 深入理解Spanner事务

    转载请附本文链接:https://blog.csdn.net/maxlovezyy/article/details/103745151 最近读了论文Spanner,发现其事务的实现还是蛮有意思的,设计 ...

  2. 谈谈Spanner和F1

    前言 本文不是一篇Spanner的介绍文章,主要想对于Spanner和F1解决的几个有代表性的问题做一个概括和梳理.接下来的行文安排将主要以问答的形式展开.对Spanner和F1不熟悉的盆友可以参考最 ...

  3. Google Spanner:谷歌的全球分布式数据库

    目录 1. 介绍 2. 实现 3. TrueTime 4. 并发控制 5. 实验分析 6. 相关工作 7. 未来的工作 8. 总结 Spanner: Google' s Globally-Distri ...

  4. Google Spanner (中文版)

    温馨提示:本论文由厦门大学计算机系林子雨翻译自英文论文,转载请注明出处,仅用于学习交流,请勿用于商业用途. [本文翻译的原始出处:厦门大学计算机系数据库实验室网站林子雨老师的云数据库技术资料专区htt ...

  5. 全球分布式数据库:Google Spanner翻译

    本文总体转自: http://www.sohu.com/a/126470421_463989 但在原博客基础上有批注. 目录 1 介绍 2 实现 2.1 Spanserver 软件栈 2.2 目录和放 ...

  6. [论文笔记] Google Spanner Distributed Database

    Spanner 是谷歌的可伸缩.多版本.全球分布.支持同步复制的数据库,它是第一个在全球范围内传递数据且保证外部一致的分布式事务的系统.论文叙述了它的架构.特征.许多设计的依据和一个新的可以暴露时钟不 ...

  7. 分布式系统中的时间和顺序——关于Spanner中的Linearizability

    引言 随着信息科技的在人类生活中的不断渗透,数据规模和计算规模也与日俱增,某些问题已经无法在单机系统上进行处理,只能寻求分布式系统的解决方案. 分布式系统用多个设备来处理特定问题,但是如何保证这样的处 ...

  8. Youtube 都在用的 Cloud Spanner 到底是“何方神圣”

    数据库是应用程序运行过程中至关重要的一部分,Cloud Spanner 作为唯一一个企业级.全球分布和强一致性的企业级数据库服务,将关系数据库结构的优点与非关系型数据库的规模完美结合.更独特的是,Sp ...

  9. spanner论文zt

    Spanner的意义到底是什么? 关于替代MySQL,论文是如此描述的: MySQL的数据分片机制,会把每个客户和所有相关的数据分配给一个固定的分区.这种布局方式,可以支持针对单个客户的索引构建和复杂 ...

最新文章

  1. LeetCode简单题之二叉搜索树中的众数
  2. bootstrap-代码-内联代码
  3. 1046 划拳 PAT乙级(C++)
  4. java classpath设置_Java CLASSPATH设置
  5. 局域网聊天 一个十分热门的话题
  6. SpringBoot入坑-请求参数传递
  7. 029 RDD Join相关API,以及程序
  8. Thread+Handler 线程 消息循环(转载)
  9. 网页怎么调用云服务器资源,如何将网页资源放到云服务器
  10. 美国地名大全(美国城市名称英文、中文)
  11. Linux搭建FTP服务器
  12. Postman,Insomnia用户登录请求验证码错误的原因
  13. mysql 允许局域网连接_设置Mysql允许局域网或外部连接
  14. matlab 四分位距,四分位数及matlab实现
  15. BIT_陆小果的一元多项式
  16. 【Kong】网关-rate-limiting限流
  17. SpringBoot日记本系统全程直播09:项目一期完结
  18. URL锚点HTML定位技术机制、应用与问题
  19. GBase XDM使用场景
  20. 201621123030《Java程序设计》第5周学习总结

热门文章

  1. 手动挂载USB/光驱步骤
  2. 手机号码正则 中文姓名正则
  3. python数据模糊匹配,使用python中两个数据集的模糊匹配创建标志
  4. skywalking使用mysql_SkyWalking 使用 MySQL Storage
  5. lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond
  6. iis7 下php 环境配置文件,IIS7.X配置PHP运行环境小结_php
  7. Java中int数字_java int 比较数值里面是否有某个数字
  8. 调用某个按钮事件_高级UI晋升之触摸事件分发机制(一)
  9. r语言 求几个数的最小公倍数_【微课】北师大版五年级数学上册第五单元8找最小公倍数...
  10. python实现ssh登录后捕获回显_针对python的paramiko库ssh登录h3c设备print输出回显是空白的解决办法...