写点什么

谷歌对外发布了云 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:002155
用户头像

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

关注

评论

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

为什么ConcurrentHashMap是线程安全的?

王磊

TDSQL PostgreSQL执行计划详解

腾讯云数据库

tdsql 国产数据库

TDSQL-C PostgreSQL版的高可用特性

腾讯云数据库

tdsql 国产数据库

中科柏诚:积极践行为中小企业服务宗旨,同乡村振兴有效衔接

联营汇聚

在线XML转JSON工具

入门小站

工具

架构训练营 毕业设计

dog_brother

「架构实战营」

ReactNative进阶(三十一): IoC 框架 InversifyJS 解读

No Silver Bullet

​React Native 1月月更 InversifyJS

华青融天加入,龙蜥社区再添科技风险监测领域新伙伴

OpenAnolis小助手

Linux 开源 合作伙伴

☕【Java深层系列】「并发编程系列」让我们一起探索一下CyclicBarrier的技术原理和源码分析

洛神灬殇

并发编程 AQS CyclicBarrier Java 线程 1月日更

RavenDB起步--第一个 RavenDB 程序

喵叔

20000字详解大厂实时数仓建设 | 社区征文

五分钟学大数据

数据仓库 实时数仓 1月月更 新春征文

第四节:SpringBoot中web模版数据渲染展示

入门小站

springboot

MySQL 如何解决幻读(MVCC原理分析)

Ayue、

MySQL InnoDB 1月月更

架构实战营模块六作业

Jude

架构实战营

一、数据结构

喵叔

RavenDB起步--安装以及示例数据库

喵叔

Redis:我是如何与客户端进行通信的

华为云开发者联盟

redis 通信 协议 指令 客户端

模块1作业

卡西毛豆静爸

架构实战营

看过来!腾讯文档上架优麒麟软件商店啦

优麒麟

Linux 开源 腾讯 操作系统 麒麟操作系统

为数据库性能调优插上 AI 的翅膀 | 调优测试框架 Matrix 团队访谈

PingCAP

鸿蒙轻内核M核源码分析:LibC实现之Musl LibC

华为云开发者联盟

鸿蒙 内存分配 LibC Musl LibC Musl

基于Flink CDC打通数据实时入湖

五分钟学大数据

flink 1月月更

Go 语言快速入门指南:Go 读取文本文件

宇宙之一粟

Go 数据读取 Go 语言 1月月更

RavenDB起步--客户端API(一)

喵叔

RavenDB起步--使用 RavenDB Studio

喵叔

1月月更|推荐学java——Spring事务

逆锋起笔

spring事务管理 spring ioc java 编程 Spring Java Spring事务

TDSQL-A技术架构演进及创新实践

腾讯云数据库

tdsql 国产数据库

智联生活行业加速器热门FAQ:物联网企业该如何与华为云合作?

华为云开发者联盟

物联网 华为云 智联生活 智联生活行业加速器 云市场

事件驱动架构在 vivo 内容平台的实践

vivo互联网技术

微服务 云原生 事件驱动架构

分享四款H5怀旧小游戏魔塔+伏魔记+三国霸业+寻仙纪

echeverra

前端 游戏

Netty核心概念之ChannelHandler&Pipeline&ChannelHandlerContext

CRMEB

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