从分布式到云端服务:Google Spanner 成长之路
|
一个 spanserver 有交易管理者,用于支持分布式事务.交易管理者在单一 Paxos 组内不会参与交易执行,但是当多个 Paxos 组之间进行交易时它会参与进去,参与人之一会被选举为协调组长,基于 phase-2 commit 协议执行协调. 目录是一组连续的键,这些键使用相同的前缀(你可以想象成一个桶).Directory 是一个数据分配的基本单元.Directory 里面的所有数据有定义好的备份设置,并且 Paxos 组之间的数据传输也是指定的. 一个应用程序可以在一个 universe 内部创建 1 个或多个数据库,一个数据库有多张表(没有上限).一张表有行和列,比关系型数据库表多的是有版本信息.在 Spanner 的模式定义语言里,你可以在表之间使用 INTERLEAVE IN 申明层次(hierachical)关系.在层次关系的最顶层表示一张 directory 表.根据 directory 表里定义的键,字表命名是根据字典排序的.ON DELETE CASCADE 被用于当 directory 表的一行数据被删除时,相应地一起删除子表里面的数据. ?F1Spanner 的最早的客户是 F1,它是一个 Google 广告系统的后台程序.F1 在美国境内一共有 5 个副本.许多其他的应用程序最有可能的是在一个地理区间内在 3 到 5 个数据中心中间复制数据,但是它们具有相对独立的失效模式(failure mode).也就是说,大多数应用程序会首选较低延迟,只要能够挺过 1 到 2 次的数据中心故障. Google F1 SQL 数据库管理系统构建在 Spanner 之上,用于替换 Google 的 MySQL 定制版本.Spanner 使用 Paxos 算法作为操作的一部分,用于在数百个数据中心之间共享数据. 技术总结Spanner 提供了类似于关系型数据库的功能支持和操作方式,每张表都有主键、可以管理和删除级联表的数据.Spanner 支持 ACID 和 SQL 语句.由于 Spanner 会把上亿条数据存放在全球很多数据中心里,所以当你读取数据时,Spanner 把读取请求发到物理上最接近你的数据中心,当你写入数据时,你会存储到多个数据中心.如果数据中心整体停止服务,你也可以从副本数据中心环境读取数据. Spanner 并不开源,但是有开源实现 CockroachDB,源码请访问 https://github.com/cockroachdb/cockroach. 发布 Cloud Spanner 测试版本2017 年 2 月 14 日(情人节),Google 宣布 Cloud Spanner 发布测试版本.这是一个基于云端的全球分布式关系数据库服务,支持包括 ACID 交易、SQL 语义,支持水平扩展和高可用性.当我们构建一个基于云端的应用程序时,数据库管理员和开发人员都需要去选择使用关系型数据库或者 NoSQL 数据库,关系型数据确保交易持久性,NoSQL 数据库提供了简单、水平扩展和数据分布式.Cloud Spanner 打破了这种非此即彼的选择方案,提供了集两个关键能力与一体的,完全管理的服务. Cloud Spanner 与 Google 颇有渊源,早在 2012 年的一份文件中 Google 就记录了 Cloud Spanner,并且已在内部使用多年.目前谷歌的云数据库服务阵营包括 Google Bigtable(谷歌 2015 年发布的一个全面管理、高性能、可扩展的 NoSQL 数据库服务)、Google Container Engine(谷歌为解决企业管理大量容器技术编排的繁琐工作而推出的容器管理服务) 等. Google 产品经理 Deepti Srivastava 曾在一篇博文中写道: Cloud Spanner 通过在熟悉的关系数据库环境中支持标准工具和语言,简化了应用程序开发.它是传统关系数据库支持运行的工作负载的理想选择,如库存管理,金融交易和控制系统以及其它系统. Cloud Spanner 同 GCP、Cloud SQL、Cloud Datastore、Cloud Bigtable 一起,丰富了我们数据库服务的能力. 作为一个可控的服务,Cloud Spanner 给 DBA 提供了下列重要福利:
Cloud Spanner 并没有违反 CAP 定理.这些年,我们已经让 Spanner 打赢了 Google 内部很多场战斗,数百个不同的应用程序,PB 级别的数据在全球的数据中心间转移.在 Google,Spanner 支持每秒数以百万计次的查询,运行的应用程序包括 AdWords 和 Google Play. (编辑:网站开发网_盐城站长网 ) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

