你在使用哪种编程语言?快来投票,亲手选出你心目中的编程语言之王 了解详情
写点什么

Google 揭开 Mesa 的神秘面纱——一个具备跨地域复制和近实时特性的可伸缩数据仓库

2014 年 8 月 24 日

Google 发表了一篇新的论文,该论文描述了他们内部所使用的一个被称为 Mesa 的新型数据仓库系统。Mesa 是一个规模横跨多个数据中心,并可以处理 PB 级数据的系统。该系统可以对查询作出亚秒级(sub-second)的响应,同时维持了 ACID 属性。

Mesa 主要是围绕 Google 的广告业务使用场景而设计的。据 Google 描述,随着他们的广告平台的不断发展,客户对各自的广告活动的可视化提出了更高的要求。对于更具体和更细粒度的信息需求,直接导致了数据规模的急速增长。Google 构建了 Mesa 从而能处理持续增长的数据量,同时它还提供了一致性和近实时查询数据的能力。我们可以从 Google 的白皮书中了解到 Mesa 的需求:

_ 原子更新。_ 某一单个的用户行为可能会引起多个关系数据级别的更新,从而影响定义在某个指标集上(例如:点击和成本)跨某个维度集(例如:广告客户和国家)的数千张一致性视图。所以系统状态不会在查询时处于一个只有部分更新生效的状态。

_ 一致性和正确性。_ 出于业务和法律的原因,该系统必须返回一致和正确的数据。即使某个查询牵涉到多个数据中心,我们仍然需要提供强一致性和可重复的查询结果。

_ 可用性。_ 系统不允许出现单点故障。不会出现由于计划中或非计划中的维护或故障所造成的停机,即使出现影响整个数据中心或地域性的断电也不能造成停机。

_ 近实时的更新吞吐率。_ 系统必须支持大约每秒几百万行规模的持续更新,包括添加新数据行和对现有数据行的增量更新。这些更新必须在几分钟内对跨不同视图和数据中心的查询可见。

_ 查询性能。_ 系统必须对那些对时间延迟敏感的用户提供支持,按照超低延迟的要求为他们提供实时的客户报表,而分批提取用户需要非常高的吞吐率。总的来说,系统必须支持将 99% 的点查询的延迟控制在数百毫秒之内,并且整体查询控制在每天获取万亿行的吞吐量。

_ 可伸缩性。_ 系统规模必须可以随着数据规模和查询总量的增长而伸展。举个例子,它必须支持万亿行规模和 PB 级的数据。但是即使上述参数再出现显著增长,更新和查询的性能必须仍然得以保持。

_ 在线的数据和元数据转换。_ 为了支持新功能的启用或对现有数据粒度的变更,客户端经常需要对数据模式进行转换或对现有数据的值进行修改。这些变更必须对正常的查询和更新操作没有干扰。

根据 Google 的描述,所有 Google 现有的大数据技术都无一能满足所有以上的需求。 BigTable 无法提供原子性和强一致性。而 Megastore Spanner F1 虽然为跨地域复制的数据提供了强一致性的访问,但是他们无法支持 Mesa 客户端所有需要的峰值更新吞吐率。

不管怎样,Mesa 在其不同的基础设施中充分利用了现有的 Google 技术组件。它使用了 BigTable 来存储所有持久化的元数据,使用了 Colossus (Google 的分布式文件系统) 来存储数据文件。此外,Mesa 还利用了 MapReduce 来处理连续的数据。

Mesa 概念上的数据模型与传统的关系型数据库极为相似。所有的数据都存储在表中。一个表同样也可以是另一个表的物化视图。每个表拥有一个指定了其结构的模式。因为“到底有多少”是广告业务中如此普遍的一个问题,所以一个例如像“SUM”这样的聚合函数可以作为表定义的一部分来指定。在模式中同样也可以指定一个或多个该表的索引。

在Mesa 中,最有意思的一个方面是处理更新的方式。Mesa 中存储的数据是多版本的,这使得当新的更新正在处理时,Mesa 可以向用户提供前置状态的一致性数据。通常,每隔几分钟,上游系统就会执行一次数据更新的批处理。独立的各个无状态的数据提交者实例,负责对跨(Mesa 运行所在的)全部数据中心的更新操作进行协调。提交者为每个更新批处理分配一个新的版本号,并基于 Paxos 一致算法向版本数据库发布全部与该更新关联的元数据。当一个更新满足提交的条件时,意味着一个给定的更新已经被全球范围内的大量 Mesa 实例进行了合并,提交者会将该次更新的版本号声明为新的提交版本号,并将该值存储在版本数据库里。查询通常都是根据提交版本号来分发的。

因为查询通常都是根据提交版本号来分发的,所以 Mesa 不需要在更新和查询之间进行任何的锁操作。更新都是由 Mesa 实例在批处理中进行异步实施的。这些属性使得 Mesa 获得了非常高的查询和更新吞吐率,同时也对数据一致性提供了保障。

Google 提供了数个关于 Mesa 的更新和查询性能的基准测试数据。一个简单的数据源,平均每秒可以读取 30 到 60MB 的压缩数据、更新 3 到 6 百万个不同的行和新增 30 万个新行。在单独的一天里,Mesa 执行了大约 5 亿次查询,返回了 1.7 到 3.2 万亿行,并且平均延迟是 10 毫秒,而且 99% 的延迟低于 100 毫秒。

据 Google 描述,Mesa 中所存储的数据总量在过去的两年内扩增到了原来的五倍。这暗示了 Mesa 在 Google 内部的生产环境中已经使用了至少两年之久。

如果你是一个技术极客,并且想对 Mesa 进行更多的了解,那么你可以参考 Google 的 Mesa 白皮书

查看英文原文: Google unveils Mesa - Geo-Replicated Near-Realtime Scalable Data Warehouse

2014 年 8 月 24 日 08:404739
用户头像

发布了 52 篇内容, 共 20.3 次阅读, 收获喜欢 5 次。

关注

评论

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

零信任网络架构建设及部分细节讨论(企业高管必看!)

Machine Gun

架构 网络安全 信息安全 渗透测试

微服务注册中心:Consul——概念与基础操作

程序员架构进阶

微服务 Consul 注册中心 28天写作 5月日更

把数字人民币打造成全球最佳的央行数字货币

CECBC区块链专委会

金融

Dubbo 路由规则之标签路由

青年IT男

dubbo

绍兴柯桥摄影摄像培训到哪里?兴德!

Geek_196d9f

绍兴柯桥插花花艺培训到哪里?兴德

Geek_196d9f

320万开发者在用的飞桨,全新发布推理部署导航图:打通AI应用最后一公里

百度大脑

人工智能 飞桨

Java设置Filter过滤了CSS等静态文件的问题

空城机

Java 5月日更

访问控制

escray

极客时间 安全 学习笔记 5月日更 安全攻防技能30讲

绍兴柯桥数码印花金昌描稿调色分色培训到哪里?兴德

Geek_196d9f

Feed流系统重构-架构篇

makemyownlife

架构 RocketMQ 分库分表 ShardingJDBC redisson

绍兴柯桥学历提升培训到哪里?兴德

Geek_196d9f

Bzz算力挖矿系统开发节点部署

薇電13242772558

数字货币 算力

发布两小时,霸榜Github,这套笔记可以解决90%以上的Java面试

神奇小汤圆

Java 程序员 架构 面试

华为推送踩坑记录

mengxn

网络攻防学习笔记 Day25

穿过生命散发芬芳

5月日更 网络攻防

人生算法:内控控制点

石云升

读书笔记 思维模型 5月日更

绍兴柯桥3Dmax效果图培训到哪里?兴德

Geek_196d9f

聊聊数据分析

数据社

数据分析 5月日更

Go 并发编程 — 深度剖析 sync.Pool 源码级原理

奇伢云存储

并发编程 云存储 Go 语言

架构学习笔记:微服务架构与SOA架构

风翱

微服务 SOA 5月日更

绍兴柯桥电脑办公培训到哪里?兴德

Geek_196d9f

python 常用模块详解

若尘

模块 Python编程 5月日更

签了!百度智能云携手浙江广播电视集团共推媒体数智化转型

百度大脑

媒体 百度智能云

5分钟速读之Rust权威指南(九)

码生笔谈

rust

虚惊一场

IT蜗壳-Tango

5月日更

选择排序&插入排序 - DAY 15

Qien Z.

排序算法 插入排序 5月日更

绍兴柯桥JAVA,web前端编程培训到哪里?兴德

Geek_196d9f

“丝绸之舟”创新区块链帮扶模式

CECBC区块链专委会

区块链 丝路

从寻人到航天,科技与公益的下一个交汇点正在“星辰”中诞生

脑极体

绍兴柯桥视频剪辑影视后期PR,AE培训到哪里?兴德

Geek_196d9f

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

技术为帆,纵横四海- Lazada技术东南亚探索和成长之旅

Google揭开Mesa的神秘面纱——一个具备跨地域复制和近实时特性的可伸缩数据仓库-InfoQ