写点什么

Google 发布面向 App Engine 的 High Replication Datastore

  • 2011-01-15
  • 本文字数:1162 字

    阅读完需:约 4 分钟

分布式、可伸缩及高可靠的数据存储将成为业界的下一个圣杯。在发布 Google App Engine Datastore 两年后,Google 开始直面这个问题。其 Master/Slave 复制架构的设计意图在于支持“快速、一致的读需求”,同时还支持快速的写需求。但 Google 需要重新审视这个问题

你可能注意到了,我们过去半年一直在与 App Engine Datastore 的某些可靠性问题进行着斗争。在过去的几个月中,我们取得了长足的进步。然而,解决这些问题所积累的经验使我们认识到需要重新考虑一下设计假定了。

上周,Google 发布了“High Replication Datastore”以为读和写提供更高层次的可用性。但这也是有代价的,那就是增加了写延迟,同时 API 中的一致性保证也发生了变化。

High Replication Datastore 使用 Paxos 算法来实时同步跨越多个数据中心的数据,进而增加了用于维护数据复制的数据中心数量。这么做最大的好处在于计划的维护周期内,应用的所有功能都保持完全的可用性,对于大多数意外的基础设施问题也一样。

Google 警告开发者:

由于是分布式数据库,正如 CAP(Consistency,一致性;Availability,可用性;Partition tolerance,分区容错性)所示,开发者需要非常小心地对应用进行架构,因为随着成本的增加、可靠性的增强以及复杂性的增加,性能不可避免地会降低。

为了帮助开发者将现有的应用数据迁移到 High Replication Datastore 上,Google 提供了一些迁移工具。由于复制量的增加,Google 还将价格提高了 1/3。

Todd Hoff 称之为“向完全的分布式未来迈进的一大步”

HRD 的目标是需要将数据复制到至少 3 个数据中心的、需要完整的 ACID 语义、高一致性保证的任务关键性应用。

Google 新的数据存储定义了一种介于 RDBMS 抽象元组和 NoSQL 具体的行列存储之间的一种数据模型。在 RDBMS 中,数据模型声明在 Schema 中并且是强类型的。每个 Schema 都有一个表集合,每张表包含一个实体集合,每个实体包含了一个属性集合。属性具有名称,其值具有相应的类型。

Bigtable 可以在相同的行 / 列对中存储多个值,只不过时间戳不同。该特性实现了多版本并发控制(MVCC):当使用了事务时,在写入值时需要带上其事务的时间戳。在读取时会使用上一次事务的完整时间戳以避免部分更新的情况出现。

平均的读延迟在 10 毫秒左右,具体时间取决于数据量,这表明大部分读都是本地的;平均的写延迟在 100——400 毫秒左右,具体时间取决于数据中心之间的距离、写入的数据大小以及完整复制的数量等因素。

曾经只被大公司用于构建任务关键性应用的“大基础设施”现在也充分利用了长尾理论,可以构建创新型应用了,这在几年前是无法想象的事情。你打算使用 Google App Engine 么?自己的解决方案中需要这样的数据存储么?这种基础设施给你带来的最大好处是什么呢?

查看英文原文: Google Releases the High Replication Datastore for App Engine

2011-01-15 22:163694
用户头像

发布了 88 篇内容, 共 271.1 次阅读, 收获喜欢 9 次。

关注

评论

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

摄影利器一加9 Pro,让你轻松成为手机摄影师

Geek_8a195c

如何请求一个需要登陆才能访问的接口(基于cookie)——apipost

Proud lion

大前端 后端 Postman Cookie 接口工

架构实战营第一期 -- 模块五作业

clay

架构实战营

vue入门:http客户端axios

小鲍侃java

8月日更

LT浏览器——响应式网站测试利器

FunTester

性能测试 自动化测试 web测试 兼容性测试 测试报告

前端,测试如何修改后端接口返回的响应数据

CodeNongXiaoW

项目管理 大前端 测试 后端 接口管理工具

AI 场景的存储优化之路

焱融科技

人工智能 云计算 AI 分布式 高性能

业内首发!腾讯位置服务推出移动端3D数据可视化图层

Go 语言,一文彻底搞懂 slice 实现原理

微客鸟窝

Go 语言 8月日更

波场链DAPP开发|波场链TRONCHAIN介绍

Geek_23f0c3

DAPP智能合约交易系统开发 波场链DAPP开发 tronchainDAPP

有效管理数据安全性—— Pulsar Schema 管理

Apache Pulsar

Apache Pulsar StreamNative schema

抖音快手短视频获客系统软件开发

手撸二叉树之单值二叉树

HelloWorld杰少

数据结构与算法 8月日更

低代码:时代的选择

华为云开发者联盟

云计算 软件开发 低代码 硬件 IT系统

抖音快手短视频智能询盘获客系统软件开发介绍

JVM集合之类加载子系统

阿Q说代码

JVM 加载 类加载器 双亲委派 8月日更

AI+云原生,把卫星遥感虐的死去活来

华为云开发者联盟

AI 容器 云原生 k8s 遥感影像

Java筑基 - JNI到底是个啥

码农参上

Java jni 8月日更

抖音快手智能获客黑科技软件系统开发费用

【Flutter 专题】64 图解基本 TextField 文本输入框 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

Compose 中的文字

Changing Lin

8月日更

Apache HBase MTTR 优化实践:减少恢复时长

华为云开发者联盟

Apache hadoop zookeeper HBase MapReduce服务

【LeetCode】合并两个排序的链表Java题解

Albert

算法 LeetCode 8月日更

netty系列之:自定义编码和解码器要注意的问题

程序那些事

Java Netty 程序那些事

接口测试--apipost如何自定义变量

与风逐梦

软件测试 接口测试

2分钟玩转中文接口测试工具-ApiPost

CodeNongXiaoW

项目管理 大前端 测试 后端

JS对象拷贝:深拷贝和浅拷贝

华为云开发者联盟

js 对象 对象拷贝 深拷贝 浅拷贝

老用户运营从哪里切入?

boshi

运营 私域运营

Python代码阅读(第12篇):初始化二维数组

Felix

Python 编程 Code Programing 阅读代码

面试官:你说说一条更新SQL的执行过程?

艾小仙

spring 大事务

Rubble

8月日更

Google发布面向App Engine的High Replication Datastore_架构_Jean-Jacques Dubray_InfoQ精选文章