互联网大数据时代下亚马逊是如何解决数据存储的
也正因为这样,Gartner 魔力象限已经连续第11年将亚马逊云科技列为云基础设施平台,以及服务象限的领导者。
对于一个普通的消费者而言,亚马逊是世界最大的网络零售商,销售额占到了美国服装行业的1/3以上。对于跨境电商卖家来说,亚马逊是一个高端且有高利润的平台。亚马逊一点通的服务,则更是在一定程度上极大地便利了人们的生活。
那么大家有没想过,亚马逊平台发展的这么好,为什么要涉及云计算,云服务呢?答案也很简单,自己要用。
亚马逊平台的自我发展改革
亚马逊云科技的母公司,也就是亚马逊,本身就是世界上最大的电商平台。而电商对基础架构的要求特别高,因此对云服务需求非常强烈。 这种需求一般都带有四个特征。
- 电子商务是一种季节性很强的业务。黑五或者双十一,电商网站的流量会暴涨,因此服务器必须可以弹性扩容,一防宕机,二防浪费。
- 电商平台涉及大量商品SKU,各种商品信息和历史交易信息都得找个地方存储,所以需要大量的存储空间。
- 电商是交易平台,凡是和钱直接打交道的生意,必须稳字当头。所以底层架构必须稳定。
- 电商平台上有很多第三方卖家,因此平台的可扩展性和兼容性也很重要。
这些需求,那些主营卖广告的门户网站,卖软件的IT公司,开发硬件的同行都不需要考虑,但对于亚马逊这么一个飞速发展的电商平台,属于是卡脖子的问题,所以说,别人开发云服务是为了赚钱,亚马逊是为了求生。但也正是在2006年涉及云服务后,在短短的十年间,它可以说乘着云服务趋势改变了整个IT行业。
关于这句话,绝对不是空穴来风!
据 Canalys 的分析师估计, Amazon 在云基础设施即服务(IaaS)市场的份额达到33.8%,比它的三大劲敌微软 Azure、谷歌 Google Cloud 和 IBM 的合计份额(30.8%)还要高。
从2006年迈出的一小步,推出 Amazon Web Services,以 Web 服务的形式向企业提供 IT 基础设施服务。以一个简单的数据中心机柜和几台电脑为出发点,开始思考和探索“如何让计算变得像开灯一样简单”。 在这里,亚马逊云科技开始构建云的核心基础架构。通过将虚拟机和存储服务提供给开发者,用户不需要构建自己的服务器,就可以获取计算和存储能力,并且可以像水电一样随取随用。
到如今16年在云服务中走出了一大步,从云服务到云无处不在,从数据爆发到AI应用,云基础架构的创新从未停止。亚马逊云基础架构,在计算(Amazon Graviton 已经从第一代演进到第三代,实现云底座重构,计算性能大幅提升, Amazon EC2向自动优化、自动镜像发展,加速云计算创新),存储(极具广度和深度的存储选项:提供灵活部署方式,方便用户管理数据)网络,安全,可持续发展,5大领域的创新成果,有目共睹。
云服务解决了那些实际问题
在五大创新领域中,存储技术问题可能是电商平台最注重的技术之一。就拿数据库来讲。1995年亚马逊创立时,所有的逻辑只在一个单体应用里,也只有一个数据库。
随着业务的拓展,到了2001年,亚马逊进入了面向服务架构(SOA)阶段,比如商品、订单、服务等模块都在那个时期形成。此后,亚马逊进入到了更多的领域,产品迭代和客户体验迭代的速度越来越快,这些已经按照SOA拆分出来的模块,自己又会变成超大的单体。所以2002年开始到2006年,亚马逊正式启动了微服务化架构。通过采用微服务、配合专门构建的数据库,企业可以摆脱传统单一的数据库在性能、功能、扩展性等方面的桎梏,有效提高创新速度,并且降低成本。
十多年来,亚马逊云科技不断加速数据库相关服务落地,并针对不同应用场景需求推出了多种数据库服务产品,为客户提供兼具高性能、高可用性、可扩展及成本效益的专用数据库服务,支撑客户现代化应用的快速部署及创新。目前亚马逊云科技可以提供十多种专门构建的数据库服务,支持关系、键值、文档、内存、图、时间序列、宽列和分类账八大数据类型。
亚马逊云科技提供了100余种产品免费套餐。其中,计算资源Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。
https://aws.amazon.com/cn/free/
不仅价格优惠活动力度大,专为云平台打造的关系型数据库 Amazon Aurora 也是目前亚马逊云科技历史上用户数量增速最快的云服务。
Amazon Aurora 云数据库
由于 Aurora 是为了代替 MySQL,而 MySQL 用于关系型数据库,所以 Aurora 仅负责处理关系型数据库的服务,即 RDS(Relational Database Service)。我们其实可以从图中看出相当多的信息,Aurora 仅有 Primary RW(Read/Write) DB一个主节点用于处理写请求,而其余的则为从节点 Secondary RO(Read-Only) DB用于处理读请求,论文中指出 Secondary RO DB(也就是只读副本)可以多达15个。另外,每个 Aurora 配备六个存储节点,它们分布于区域中的三个可用区中,提供优异的数据持久性和可用性。其中有两个节点使用 Amazon Simple Storage Service(S3)存储技术进行备份,而剩余4个节点则直接存储在本地的 SSD 上。
用户的应用通过 Customer VPC 接入,然后可以读写位于不同 AZ(Availability Zone)的数据库。而不同的 AZ 分布于全球的不同的Region中。当用户的请求发送到 Primary RW DB 时,RDS HM(Host Manager)会检测到请求,并调用Aurora 进行相应的操作。如果是写操作,则将相关信息发送给 Secondary RO DB进行备份,同时将命令写入存储节点。如果是读操作,则直接从存储节点读取数据返回。
使用传统 MySQL 遇到的性能问题
Amazon 在日常开发和维护中发现,计算能力和存储性能已经不再是其工作的瓶颈了,取而代之的是网络的流量。其实对于 Amazon 来说,只要有钱,CPU 能用最好的就能解决计算能力的问题,机械硬盘不够用固态硬盘,固态硬盘不够就上内存,存储性能也解决了,但是网络的延迟靠大带宽是很难解决的,而拉近机房位置也是有上限的,必须要从业务逻辑和服务组件上找问题。所以他们发现了 MySQL 在分布式系统中消耗了大量的流量,还提高了延迟。具体如下图所示。
从图中我们可以看出,传统的 MySQL 如果想要执行一次写入操作必须经历以下几步:
- 主节点将数据写入 EBS1
- EBS1 将数据写入备份镜像 EBS2
- 主节点将相关数据发送给从节点
- 从节点将数据写入 EBS3
- EBS3 将数据写入 EBS4
其中,第1,3,5步是串行的,也就是说,只有第1步完成了,才能执行第3步,第3步完成了才能执行第5步。这无疑增加了服务器返回数据的延迟。另外传统的 MySQL 在写入和传输数据时还需要很多的额外信息,这又增加了网络带宽的消耗。也就是说,MySQL 的使用在分布式系统产生了两个问题。
- 应答延迟太高
- 消耗网络带宽太多
所以当 Amazon 发现使用传统 MySQL 的弊端之后,决定设计新的组件来代替 MySQL 以解决上述两个问题。
组件1:The Log Is The Database
针对 MySQL 在同步数据的过程中发送的信息太多,这该怎么办呢?Amazon 也算是家大业大,直接自己重新设计标准,以往的数据库是真的数据库,现在他们用WAL也就是 Log 来整合所有有用的信息并删去无用的信息,既减少了数据传输量又保证了需要保留的信息。同时,他们使用了链式复制结构代替主从结构,简化了保证数据一致性的复杂度。具体架构如下图所示。
以三个副本为例,当位于AZ1的主节点收到写请求后,它将请求的相关数据直接写入六个存储节点中,然后,将数据和一些额外的信息通过链式复制结构传递给位于 AZ2和 AZ3其他节点。和上图进行对比,明显可以看到主从节点之间网络通信中传输的数据减少了,主节点向存储节点写入数据时也从五种数据变为一种。这里要特别指出的是,此处的数据已经从 MySQ 定义的 Log 变为 Amazon 为 Aurora 量身定制的 Log。由于需要传输数据量的减少,同步所消耗的网络带宽也大幅地减少了。
另外,因为主节点负责将 Log 写入存储节点,而从节点仅存储 Log 不需要负责写入存储节点,这样就减少了在 MySQL 中额外的第四步和第五步操作的时间。而 MySQL 中的两级EBS存储操作也由一级 Quorum 的代替,就像上一篇文章提到的,两级存储的时间是两次操作的时间之和,而一级的 Quorum 操作的时间则是取决于 Quorum 中最长的应答时间。这样, Aurora 也优化了应答延迟的时间。
组件2:Storage Node
上面,我们提到主节点将 Redo Log 写入存储节点。但是,此时 Redo Log 还未执行,需要在存储节点中执行相应的操作后才算真正完成。下面,我们再来看看 Redo Log 到达存储节点以后需要进行哪些操作。论文中给出的流程图如下。
具体的流程解释如下
- 存储节点通过 Incoming Queue 接受主节点的 Log。
- 存储节点将 Log 存到本地硬盘后向主节点发送 ACK,用以确认 Quorum。
- 由于网络的不可靠和 Quorum 机制,当前存储节点可能缺失了部分Log。在这一步,它将 Log 排序并找出缺失的 Log。
- 通过和其他存储节点进行交换信息,将缺失的 Log 复制到本地,将所有 Log 填充完整。
- 到目前为止,系统中存储的仍是 Log 而非用户需要数据,这一步执行 Log 对应的操作,并写入数据库中。
- 定期地将数据存为快照并存入 Amazon S3中。
- 定期地进行垃圾收集,删除过期数据。
- 用 CRC 定期检验数据。
从流程中我们可以看到,只有第一步和第二步可能影响应答延迟,其余的步骤都由存储节点在后台执行。这样一来,因为无需等待执行完毕,应答延迟就进一步降低了。Amazon Aurora 描述的技术看起似乎很通用,使用 WAL 代替 MySQL 的信息,在存储节点执行命令而不是在本机执行,使用 Chain Replication 等等。 但是能将这些技术恰到好处地使用在实际的系统中,并进行优化才是大厂的技术底蕴。 这里讲的恐怕只算是对 Aurora 的惊鸿一瞥,真的想了解实现细节还得去 Amazon 内部看看。
用数据来说明它的性能
官网对 Amazon Aurora 的性能是这样描述的:吞吐量最高可以达到标准 MySQL 的 5 倍、标准 PostgreSQL 的 3 倍。这些平淡的文字可能无法引起你的共鸣,下面给大家看一组亚马逊近些年来的统计数据,来看看通过自身研发的技术能应对多少数据量。
亚马逊活跃卖家
截止到2019年12月31日,亚马逊全站点约有800多万的卖家,其中有293万的活跃卖家,也就是有293万的卖家当前有商品在售。上图左边两列数据,是根据活跃卖家的数量将这16个站点划分为了三个梯队。第一个梯队是美国站,活跃卖家数量超过了100万,占比38%;第二梯队是以英国为首的欧洲五站以及印度、日本和加拿大,活跃卖家数都在15万到30万之间;第三梯队是墨西哥到新加坡,活跃卖家数在5万及5万以下,去年新开的3个站点都在这个梯队。右边两列的数据,是活跃卖家的增长数量。排名前三的站点分别是巴西、墨西哥和西班牙。亚马逊2019年10月11日接受美国司法制裁时透露:美国站有89.8万的卖家,其中有38.4万的个人卖家和51.4万的企业卖家,个人卖家约占40%。这个数据表明,在亚马逊的美国站,个人卖家非常活跃。
日访问次数
接着,是亚马逊各站点的日访问人次,也就是流量情况。我们统计了其中8个卖家比较关心的站点,分别是美国、日本、加拿大和欧洲五站。它们按照日访问人次的多少排序,依次是美国、日本、德国、英国、法国、意大利、西班牙、加拿大。
这些统计还只是19年当时的数据量,在我们发展迅速的今天,亚马逊云科技,也随着数据量的发展愈加强大。在中国,华米科技、九州通、嘉谊互娱、虎牙直播等各行业客户,也正在使用亚马逊云科技数据库相关服务。虎牙直播是一家以游戏直播为核心业务的技术驱动型内容公司,旗下主要产品包括国内知名游戏直播平台虎牙直播、风靡东南亚和南美的游戏直播平台 NimoTV 等,前者月活跃用户突破1.78亿,后者月活用户达到3,000万。在巩固扩大业务市场、提升海内外各地用户体验过程中,虎牙使用 Amazon Aurora 替换传统 MySQL 实现数倍性能提升,通过 Amazon DynamoDB 自动扩容、轻松应对10倍以上推送流量突增,利用 Amazon ElastiCache for Redis 实现内存数据全球化,并使用 Amazon Neptune 标定直播欺诈行为。
受欢迎的原因远不止这么多
亚马逊云服务能够这么受欢迎当然不止这些,它还专门为开发者们打造了多种学习平台:
- 入门资源中心:从0到1 轻松上手云服务,内容涵盖:成本管理,上手训练,开发资源。https://aws.amazon.com/cn/getting-started/
- 架构中心:亚马逊云科技架构中心提供了云平台参考架构图表、经过审查的架构解决方案、Well-Architected 最佳实践、模式、图标等。https://aws.amazon.com/cn/architecture/
- 构建者库:了解亚马逊云科技如何构建和运营软件。https://aws.amazon.com/cn/builders-library/
- 用于在亚马逊云科技平台上开发和管理应用程序的工具包:https://aws.amazon.com/cn/tools/
降低门槛 让更多人享受云计算。也是他们商业原则之一,亚马逊云科技还秉持着一套「低价+巨量+微薄利润」的商业逻辑。
福利一:100余种产品免费套餐。其中,计算资源 Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。
https://aws.amazon.com/cn/free/
福利二:最新优惠大礼包,200数据与分析抵扣券,200机器学习抵扣券,200$微服务与应用开发抵扣券。
https://www.amazonaws.cn/campaign/
福利三:解决方案 CloudFormation 一键部署模版库
https://aws.amazon.com/cn/quickstart/
从2006年上线起到2020年5月,亚马逊云科技累积主动降价82次。 一家优秀的企业需要考虑的不仅仅是自己能从新技术中得到什么,还应该让别人从新技术中获利。其实我们很难说用一篇两篇文章来记录亚马逊云科技的巨大进步和创新,但这种植根心底、一切从用户出发的进取精神却给我留下了深刻印象:一个探路者的创新不息、领势而行。
【专属福利】
福利一:100余种产品免费套餐。其中,计算资源 Amazon EC2首年12个月免费,750小时/月;存储资源 Amazon S3 首年12个月免费,5GB标准存储容量。
https://aws.amazon.com/cn/free/
福利二:最新优惠大礼包,200数据与分析抵扣券,200机器学习抵扣券,200$微服务与应用开发抵扣券。
https://www.amazonaws.cn/campaign/
福利三:解决方案 CloudFormation 一键部署模版库
https://aws.amazon.com/cn/quickstart/
原文来自亚马逊云科技开发者文章:
https://dev.amazoncloud.cn/column/articleDetail?id=631ad7b55b411c3e2136fcc9
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341