50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

谷歌对外发布了云 Spanner Beta 版

  • 2017-03-05
  • 本文字数:1083 字

    阅读完需:约 4 分钟

谷歌已经为她的全球分布式关系型数据库服务云Spanner 对外发布了Beta 版。作为谷歌云平台的一部分,它同时提供ACID 事务和高可用性,看起来像是颠覆了CAP 理论。

Spanner 已经在谷歌内部广为使用了,现在正在向公众开放。它是一个可管理的云数据库,可以作为谷歌云平台的一部分使用,而且不会涉及底层的基础设施。

Spanner 看起来和传统关系型数据库一样,有 ACID 事务、SQL、关系型模式等。但是,它是分布式的,在地理上跨谷歌基础设施,可以满足日益增长的更大事务处理量。除此之外,它还有强一致性,在提供数据服务时只有几毫秒的延迟。

CAP 理论证明一个数据库系统不可能同时满足以下三种特性:可用性、一致性和分区容忍性。关系型数据库倾向于牺牲可用性,而 NoSQL 数据库则用最终一致性换来了高可用性。

事实上 Spanner 也没有颠覆 CAP 理论,它只是在功能上看起来像是这样而已。谷歌基础设施副总裁 Eric Brewer解释到:

Eric Brewer:这意味着根据 CAP 的定义,Spanner 就是一个 CA 系统了吗?从技术上来说可以直截了当地回答“不是”,但从实际效果来说,却可以认为是“是”,用户可以认为它就是 CA 的而直接使用。

Brewer 总结道,在 Spanner 系统中,出现网络分区的可能性是 1 比 105。如果这种情况真的发生了,系统会选择一致性,从技术的角度看就是 CP 的。但是,由于这种可能性极低,所以也可以就认为它是可用的。

在 Brewer 的白皮书中,他解释这种级别的可靠性的基础在于Spanner 是运行在谷歌全球自建网络中的。Spanner 的网络包从来不会发到公共互联网中,而且由于冗余级别非常之高,像切断光纤之类的灾难性事件也不会导致断网。

还有一些第三方,比如 Cloudera 的分布式系统工程师 Henry Robinson 也认可这样的说法,他解释道:

Henry Robinson:可以从这个角度去考虑:CAP 理论告诉我们每个系统都会有她自己的阿基里斯之踵,或者说是软胁,这就意味着在一定时间之内要放弃 C 或者放弃 A。谷歌则把 Spanner 的软胁深深地埋在了某个黑洞里。

为了确保 ACID 特性,Spanner 实现了典型的分布式事务模型——两阶段提交。Brewer 解释说尽管这个模型要求所有的成员都必须在线,因此有些降低可用性,但 Spanner 通过使用一个 Paxos 组来绕过了这个问题,换句话说,当某些成员不在的时候,一个多数选举的结果也可以生效。

Spanner 也使用了谷歌的全球同步的锁 TrueTime。Brewer 说 TrueTime 同时使用了 GPS 接收器和原子时钟来保证时间的准确性。它可以正确地为分布式事务打上时间戳,从而保证外部一致性。

面向公众的云 Spanner 仍然是 Beta 版,现在还可以在线上免费试用

阅读英文原文 Google Launches Cloud Spanner Public Beta

2017-03-05 18:002638
用户头像

发布了 152 篇内容, 共 78.7 次阅读, 收获喜欢 64 次。

关注

评论

发布
暂无评论
发现更多内容

解决方案架构师的小锦囊 - 架构图的 5 种类型

亚马逊云科技 (Amazon Web Services)

技术 职业 亚马逊云科技

初探 Lambda Powertools TypeScript

亚马逊云科技 (Amazon Web Services)

typescript Serverless Lambda AWS

我是如何用 Amazon Serverless 创建一个门铃的

亚马逊云科技 (Amazon Web Services)

Serverless Lambda AWS showdev

Java单例模式实现,一次性学完整,面试加分项

爱好编程进阶

Java 面试 后端开发

LabVIEW控制电脑关机、休眠、注销和重启

不脱发的程序猿

LabVIEW LabVIEW控制电脑

2021年秋招,薪资排行NO

爱好编程进阶

Java 面试 后端开发

Choreographer全解析

爱好编程进阶

Java 面试 后端开发

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day39

爱好编程进阶

Java 面试 后端开发

[Day23]-[数据结构]手写LRU

方勇(gopher)

LeetCode LRU 数据结构算法

采用百度飞桨EasyDL完成指定目标识别

DS小龙哥

4月月更

Plato Farm-以柏拉图为目标的农场元宇宙游戏

西柚子

AtomicIntegerArray源码分析与感悟

爱好编程进阶

Java 面试 后端开发

Java 结合实例学会使用 静态代理、JDK动态代理、CGLIB动态代理

爱好编程进阶

Java 面试 后端开发

Java语言特点

爱好编程进阶

Java 面试 后端开发

一个快速追踪密切接触者的开源脚本方案

冯骐

Python 数据分析 流调 密接 新冠疫情

顶级元宇宙游戏Plato Farm,近期动作不断利好频频

小哈区块

[Day22]-[链表]相交链表

方勇(gopher)

链表 LeetCode 算法和数据结构

解锁OpenHarmony技术日!年度盛会,即将揭幕!

OpenHarmony

大会 OpenHarmony

Java泛型机制详解;这些你都知道吗?

爱好编程进阶

Java 面试 后端开发

读《Software Engineering at Google》(14)

术子米德

架构师成长笔记

自动化的艺术

俞凡

架构 大厂实践 PayPal

22道Java Spring Boot高频面试题

爱好编程进阶

Java 面试 后端开发

k8s client-go源码分析 informer源码分析(1)-概要分析

良凯尔

Kubernetes 容器 云原生 Client-go

redis优化系列(二)Redis主从原理、主从常用配置

乌龟哥哥

4月月更

在docker上编译openjdk8

程序员欣宸

Java JVM 4月月更

“亿”点点技术情怀

不脱发的程序猿

程序员 程序人生 技术情怀

将新增和编辑的数据同步更新到列表

岛上码农

flutter ios开发 安卓开发 4月月更 跨平台开发

世界读书日:我想推荐这几本书

宇宙之一粟

书籍推荐 书单 4月月更

Java 线程池原理分析

爱好编程进阶

Java 面试 后端开发

LabVIEW实现应用程序停止或退出

不脱发的程序猿

LabVIEW

谷歌对外发布了云Spanner Beta版_数据库_Andrew Morgan_InfoQ精选文章