立即使用
跨境知识
发布时间:6月前
957 44
阿里云、Amazon、Google 云数据库方案架构与技术分析

文章标题: 阿里云、Amazon、Google 云数据库方案架构与技术分析

新文章标题: 主流云计算平台的云数据库方案架构与技术分析


"一切都会运行在云端"。云时代早已来临,本文着眼于顶级云服务商阿里云、Amazon、Google的云数据库方案背后的架构,以及笔者最近观察到的一些对于云数据库有意义的工业界的相关技术的进展,希望读者能有所收获。


亚马逊的技术架构与部署


现在越来越多的业务从自己维护基础设施转移到公有(或者私有)云上, 带来的好处也是无需赘述的,极大降低了 IaaS 层的运维成本,对于数据库层面来说的,以往需要很强的 DBA 背景才能搞定弹性扩容高可用什么的高级动作,现在大多数云服务基本都或多或少提供了类似的服务。


Amazon RDS

其实说到公有云上的云数据库,应该最早 Amazon 的 RDS,最早应该是在 2009 年发布的,Amazon RDS 的架构类似在底层的数据库上构建了一个中间层(从架构上来看,阿里云 RDS,UCloud RDS 等其他云的 RDS 服务基本是大同小异,比拼的是功能多样性和实现的细节)。


这个中间层负责路由客户端的 SQL 请求发往实际的数据库存储节点,因为将业务端的请求通过中间层代理,所以可以对底层的数据库实例进行很多运维工作,比如备份,迁移到磁盘更大或者 IO 更空闲的物理机等。这些工作因为隐藏在中间层后边,业务层可以做到基本没有感知,另外这个中间路由层基本只是简单的转发请求,所以底层可以连接各种类型的数据库。


Amazon DynamoDB

对于刚才提到的水平扩展问题,一些用户实在痛的不行,甚至能接受放弃掉关系模型和 SQL。比如一些互联网应用业务模型比较简单,但是并发量和数据量巨大,应对这种情况,Amazon 开发了 DynamoDB,并于 2012 年初发布 DynamoDB 的云服务。其实 Dynamo 的论文早在 2007 年就在 SOSP 发表,这篇有历史意义的论文直接引爆了 NoSQL 运动,让大家觉得原来数据库还能这么搞。


Dynamo 对外主打的特点是水平扩展能力和通过多副本实现(3副本)的高可用,另外在 API 的设计上可以支持最终一致性读取和强一致性读取,最终一致性读取能提升读的吞吐量。


阿里云 DRDS

但是那些 RDS 用户的数据量也是在持续增长的,对于云服务提供商来说不能眼睁睁的看着这些 RDS 用户数据量一大就走掉或者自己维护数据库集群。比如对于 RDS 的扩展方案,我介绍两个比较典型的:第一个是阿里云的 DRDS (不过现在好像从阿里云的产品列表里拿掉了?),DRDS 其实思路很简单,就是比 RDS 多一小步,在刚才提到的 RDS 的中间层中加入用户配置的路由策略,比如用户可以指定某个表的某些列作为 sharding key 根据一定规则路由到特定的实例,也可以垂直的配置分库的策略。


Amazon Aurora

后来时间来到了 2015 年,Amazon 走了另外一条路。在 2015 年,Amazon Aurora 发布。Aurora 的资料在公网上并不多,Aurora 提供了 5x 于单机 MySQL 5.6 的读吞吐能力,不过最大也就扩展到 15 个副本,副本越多对写吞吐影响越大,因为只有一个 Primary Instance 能提供写入服务,单个副本最大支持容量 64T,而且支持高可用以及弹性的扩展。


值得一提的是 Aurora 的兼容性。其实做数据库的都知道,兼容性是一个很难解决的问题,可能实现上很小的差异就会让用户的迁移成本变得很大,这也是为什么中间件和分库分表的方案如此反人类的原因,我们大多都在追求用户平滑的迁移体验。


Google Cloud BigTable

Google 作为大数据的祖宗一样的存在,对于云真是错过了一波又一波:虚拟化错过一波让 VMWare 和 Docker 抢先了(Google 早在十年前就开始容器的方案,要知道容器赖以生存的 cgroups 的 patch 就是 Google 提交的);云服务错过一波让 Amazon 抢先了(Google App Engine 真是可惜):大数据存储错过一波让开源的 Hadoop 拿下了事实标准,以至于我觉得 Google Cloud BigTable 服务中兼容 Hadoop HBase API 的决定,当时实现这些 Hadoop API for BigTable 的工程师心中应该是滴血的 :)


Google Cloud Datastore

在 2011 年,Google 发表了 Megastore 的论文,第一次描述了一个支持跨数据中心高可用 + 可以水平扩展 + 支持 ACID 事务语义的分布式存储系统。 Google Megastore 构建在 BigTable 之上,不同数据中心之间通过 Paxos 同步,数据按照 Entity Group 来进行分片。Entity Group 本身跨数据中心使用 Paxos 复制,跨 Entity Group 的 ACID 事务需要走两阶段的提交,实现了 Timestamp-based 的 MVCC。


Google Spanner

虽然 Megastore 慢,但是架不住好用。在 Spanner 论文中提到,2012 年大概已经有 300+ 的业务跑在 Megastore 上,在越来越多的业务在 BigTable 上造 ACID Transaction 实现的轮子后,Google 实在受不了了,开始造一个大轮子 Spanner,项目的野心巨大,和 Megastore 一样,ACID 事务 + 水平扩展 + SQL 支持。


Google F1

在 Spanner 项目开始的同时,Google 启动了另外一个和 Spanner 配套使用的分布式 SQL 引擎的项目 F1,底层有那么一个强一致高性能的 Spanner,那么就可以在上层尝试将 OLTP 和部分的 OLAP 打通。F1 其实论文题目说是一个数据库,但是它并不存储数据,数据都在 Spanner 上,它只是一个分布式查询引擎,底层依赖 Spanner 提供的事务接口,将用户的 SQL 请求翻译成分布式执行计划。


Open source cloud-native database

2016 年在硅谷突然有个新词火了起来 GIFEE,Google Infrastructure For Everyone Else,大家意识到好像随着新一代的开源基础软件的繁荣发展,原来在 Google 内部的基础设施已经有很多高质量的开源实现。


亚马逊的技术架构与部署


Kubernetes + Operator

刚才提到了一个词 Cloud-Native,其实这个词还没有准确的定义,不过我的理解是应用开发者和物理设施隔离,也就是业务层不需要再去关心存储的容量性能等等一切都可以透明水平扩展,集群高度自动化乃至支持自我修复。


老司机简介

黄东旭,PingCAP 联合创始人/CTO,资深 infrastructure 工程师,擅长分布式存储系统的设计与实现,开源狂热分子,著名的开源分布式缓存服务 Codis 的作者,对于开源文化和技术社区建设有独到的理解。


今日荐文

点击下方图片即可阅读

腾讯QQ团队开源

分布式后台毫秒服务引擎全解析:

引擎架构、RPC、灰度……

开发优质客户,从阔象出海开始
免费、不限次查看真实采购商和供应商的贸易概述
免费试用
输入手机号
忘记密码
输入密码
AMY
alert_warn 该企业数据暂未公开
发现更多的优质采购商
请联系客服
专属热线:
官方邮箱:
AMY
立即扫码联系客服
开通高级版会员,畅享专属特权,海量贸易数据随意查看
新年享钜惠,6折福利迎新春,仅限前10位用户专享
年付5折 月付
时效
支付方式
费用
¥1608.00
收款信息
收款公司名: 重庆知站科技有限公司
收款账户: 50050122680000000033
开户行名称: 中国建设银行股份有限公司开州支行龙锦名都分理处
* 请务必在备注中注明购买物品明细:
温馨提示
1、 成功汇款后,请通过下方二维码联系客服,提供转账凭证、开通会员账号、领取发票
2、 线下汇款请直接向您在阔象出海的专属账户汇款。各种方式的到账时间一般为: 农行1-2天,跨行3-5天 (具体到账时间以银行的实际到账时间为准)
需要帮忙,请联系我们客服
为您提供帮助和支持
专属热线:
官方邮箱:
KF
立即扫码联系客服
支付
费用
¥1608.00
支付