云栖干货回顾 | 云原生数据库POLARDB专场“硬核”解析

POLARDB是阿里巴巴自主研发的云原生关系型数据库,目前兼容三种数据库引擎:MySQL、PostgreSQL、Oracle。POLARDB的计算能力最高可扩展至1000核以上,存储容量可达100TB。
POLARDB融合了商业数据库稳定、可靠、高性能的特征,同时具备开源数据库简单、可扩展、高速迭代的优点,适合各个行业公司的创新业务使用。本专场中,来自阿里云、江娱互动以及猿辅导的各位技术大咖一块儿共同探讨了下一代云原生数据库POLARDB。

一、云原生数据库的演进方向和客户价值

阿里云智能数据库总经理曹伟为你们介绍了云原生数据库的演进方向以及阿里云POLARDB数据库的产品能力。

阿里云RDS和POLARDB都属于OLTP的关系性数据库,那就让咱们先看下全球关系型数据库的市场状况。数据库

现在,关系型数据库依旧是“老大哥”,可是过去的十年中关系型数据库领域也发生了一些微妙的变化。伴随着开源运动的兴起和MySQL、PostgreSQL等数据库的出现,不少用户开始在生产系统中大量使用开源数据库,所以商业数据库的市场受到了必定的挤压。性能优化

开源数据库的出现影响了整个数据库市场的格局和版图,也为阿里巴巴在数据库市场提供了一个重大的机会。通过十年的时间,阿里云数据库作到了“全国第一,全球领先”。固然,影响数据库格局的重要因素除了开源以外,还有云计算的兴起。服务器

在云时代,数据库的演化经历了从采购License自建到云上托管数据库再到云原生数据库的转变。过去云是云,数据库是数据库,数据库只是部署在云上。但在云原生时代,数据库和云是合二为一的,云就是数据库,数据库就是云。网络

云原生数据库具备如下的几个发展趋势:

弹性:弹性不只仅是规格的弹性,而是将来CPU、容量等计算资源均可以按量付费。
HTAP:以前TP和AP是分开处理的,TP使用关系型数据库,而AP使用大数据存储。将来则会融合二者,提供一个入口跑事务,一个入口跑报表和BI。
智能:智能让数据库更加实用,将来数据库的磁盘备份、内存调度等都不须要DBA来操做,而是所有由数据库本身来完成。此外,数据库还可以自动完成诊断和修复。
混合云:由于一些合规的要求,并非全部数据都能跑在云上,所以还须要使用这种云上云下互联的生态。

云原生数据库已经成为了一种趋势,智能和混合负载成为了用户使用数据库必须依赖的特性。而因为这些特性具备很是高的技术门槛,所以在将来的两到三年内,云原生技术落后的数据库厂商必将会被淘汰。数据结构

对于不少企业而言,若是采用自建数据库方案,那么不管是对于研发仍是运维而言,都会带来不少痛点,好比:多线程

活动上线时形成压力突增,而数据库却来不及升级;
业务发展很快,来不及进行拆库,也来不及分库分表;
应用扩容以后,上百台ECS链接一台数据库,所以在高并发下性能不好;
使用读写分离,可是刚更新的数据却查询不到;
主从复制常常中断;
一次全量数据备份须要大量时间,而且必须锁表等。

这些都是互联网公司在使用自建数据库时会遇到的问题。那么,如何解决这些问题呢?答案就是须要一个强大的云原生数据库。架构

所以,阿里云提供了POLARDB数据库。POLARDB基于业界先进的Shared-Everything架构,简单而言,就是借助高速的RDMA网络将全部数据库节点链接在同一网络下。POLARDB采用计算与存储分离的架构,数据节点是无状态的,所以一旦发生宕机能够随时进行迁移。并发

对于企业级数据库而言,通常会从可靠性、可用性、性能、弹性、成本和易用性这六个方面进行评价。负载均衡

在可靠性方面,POLARDB基于Parallel Raft协议并借助RDMA可以作到RPO=0。此外,POLARDB基于TCP的远程物理复制技术实现了跨AZ的容灾。运维

在可用性方面,POLARDB借助Parallel Raft复制技术使得单节点存储切换RTO控制在10毫秒之内,基于Warm Buffer Pool技术使得读写节点重启速度加快4倍以上,而且基于跨节点物理复制技术使得日志并发应用的节点间延迟控制在100毫秒之内。

在性能方面,POLARDB使用了高速硬件和用户态I/O协议栈,使得计算节点的写延迟小于100us,而读带宽大于4GB/s。除此以外,还在I/O上进行了优化,借助Parallel Query技术使得TPC-H性能提高超过25倍。

在成本方面,POLARDB这样的云原生数据库的成本每每低于传统的托管数据库。这是由于企业在使用POLARDB时能够按需扩容,弹性伸缩,而这是在实现存储与计算分离的云原生架构诞生以前没法实现的。目前来看,相较于RDS,使用POLARDB将会使得成本下降约44%,这就是技术释放的红利。

在易用性方面,POLARDB能够100%兼容RDS,而且能够在阿里云上一键将RDS替换为POLARDB,此外还提供了智能读写分离、性能洞察以及SQL审计等优秀的功能。

此外,POLARDB在2019年也实现了技术的全面升级。首先,POLARDB MySQL 8.0兼容版于9月12日正式发布,这是全球第一个兼容MySQL 8.0版本的云原生数据库。其次,POLARDB分布式数据库服务也正式发布,其存储容量支持最多超过100TB。再次,POLARDB的高性能存储引擎X-Engine即将发布,X-Engine存储引擎具备高性能和高压缩率,而且经历了2018年双11的实战考验。此外,POLARDB对于Oracle的语法兼容性特性也即将实现商业化,可以为用户带来将近6倍的成本下降。此外,本次的云栖大会上还正式发布了POLARDB一体机,它可以更好地帮助用户在私有云上使用POLARDB数据库。

目前,阿里云POLARDB数据库已经成了增加最快的云数据库产品,将来也将会提供更多的特性,为客户带来更多的价值。

二、POLARDB MySQL存储引擎优化实践

杨辛军(Jimmy Yang) 阿里云智能资深技术专家为你们介绍了阿里云POLARDB 8.0基于MySQL 8.0所作的存储引擎优化实践。

POLARDB实现了快速高效的物理复制,使得IO操做减小了50%,同时可以达到100T的存储容量。与此同时,相比于本来的逻辑复制,POLARDB的物理复制更加可靠、高效,而且对于性能影响几乎不可见。传统的逻辑复制比物理复制延迟大不少,并且可能会出现系统堵塞,对业务形成影响,物理复制则不会产生这样的影响。此外,POLARDB基于共享存储还实现了非堵塞、低延迟的DDL复制,而且支持快速动态的读扩展,最高支持扩展到16个只读节点。

POLARDB是全球第一个具备高效物理复制的,共享存储并兼容MySQL 8.0的云数据库。POLARDB不只包含了MySQL 8.0的全部重要功能,还在MySQL内核引擎的基础之上进行了大量的优化。

虽然POLARDB使用了物理复制,可是基于客户对于数据进行数据分析和传输须要Binlog的考虑,POLARDB也支持了Binlog。在性能优化方面,POLARDB最新的“Copy Page”功能减小了主节点Flush Constraint。POLARDB对于逻辑锁系统进行了分区,减小了mutex的冲突,而且将死锁检测实现了并行化。POLARDB对于Transaction System也进行了优化,使用Lock Free数据结构来管理Transaction System的Lists。

相比于POLARDB 5.6版本,POLARDB 8.0版本在性能表现上有了显著提高,在关键状况下都有了数倍的改进。相比于MySQL 8.0的官方版本,POLARDB 8.0的优化改进所带来的效果也很是明显,尤为是物理复制方面具备显著的优点,在Insert状况下POLARDB性能可达到MySQL的约6倍。

官方MySQL向8.0版本演进时过于重视高配机型的适配,而忽略了小型机的性能。而云上用户大部分仍是用的8核、16核的小型机,所以使用MySQL8.0的性能会发生退化。所以,阿里云POLARDB数据库针对于这个问题进行了一系列优化。

相较于MySQL 8.0,阿里云POLARDB 8.0版本提供了更多的内核引擎功能,好比独立可扩展的共享Buffer Pool、行级压缩、全球实例支持、并行DDL、分区表自建索引以及自建分区表等。

三、POLARDB MySQL并行查询优化详解

阿里云智能资深技术专家封仲淹为你们详细介绍了POLARDB基于MySQL 8.0内核所作的并行查询优化。

并行查询是POLARDB 8.0版本重磅推出的一个特性,阿里云POLARDB团队投入了大量人力和物力来开发这个特性,而且从目前来看,客户对于并行查询的反馈很是好。

首先思考一个问题:为何须要并行查询?阿里使用MySQL的历史已通过了十余年,在MySQL使用中遇到的全部问题,阿里基本都遇到过。其中最使人头痛的问题就是当MySQL表的数据量特别大时,查询会很是的慢。大部分方案都是经过拆库将数据量缩小。

此外,业界的一个趋势CPU单核频率达到了瓶颈,增加放缓。而咱们对于计算能力的诉求是永无止境的,所以CPU只能向着多核演进。而MySQL属于传统事务型数据库,其没法并行执行单条Query,所以没法充分利用多核的做用。业界的通用作法就是并行查询,现在几乎全部商业数据库都提供并行查询的能力,将任务分摊给多个线程并行计算,大幅度缩短计算时间。

那么,如何实现并行查询呢?并行查询首要关注的就是数据分区,这样才能使得每一个Worker同时工做,互不干扰。由优化器决定分区的数量,而且让 Worker与分区动态绑定,实现“能者多劳”,防止热点问题的出现,使得计算更加均匀,保障了并行查询的线性性能提高。在并行计算里面,将单线程Plan Tree改成了多线程,划分Worker和Leader两个角色,尽量将全部算子下推到Worker中,利用Worker并行能力加速,而让Leader作汇总和反馈。

那么,并行查询的效果如何呢?在TPCH 100G数据量的状况下,使用POLARDB并行查询时发现70%的查询能够被加速,40%的加速比超过10倍,几乎可以将CPU能力彻底发挥出来。

与此同时,并行查询还具备线性增加的能力,这意味着当数据量大的时候,只须要给与足够多的CPU和内存,处理能力就可以实现线性增加。在TPCH 5G、10G、20G以及40G四种数据量维度下,不断调整并发度,而性能曲线基本上出现线性增加趋势。

使用并行查询也比较简单,用户能够在控制台、Session或者SQL中进行设置本身须要的并发度。在将来,POLARDB会实现自动的DOP以及ResourceManager,并将支持Subquery、GIS和Blob以及Procedure等。

四、POLARDB 兼容Oracle能力解密与迁移

阿里云智能资深技术专家蔡松露为你们深度了揭秘POLARDB是如何实现兼容Oracle能力的。

以前POLARDB主要兼容MySQL、PostgreSQL等开源数据库,而如今POLARDB也已经兼容了Oracle,这和以前兼容开源数据库是不一样的。之因此要兼容Oracle主要有几个方面的缘由,首先目前公有云已经进入了深水区,所以须要更多地深刻线下的存储和计算场景;其次在现在的政治环境中,国家层面对于“去O”有了新的要求,而目前国内市场还属于真空。基于以上背景、机遇和挑战,阿里云推出了POLARDB兼容Oracle的产品。而如何实现真正的兼容,以及如何将数据从Oracle迁移到POLARDB都存在不少挑战。

POLARDB目前100%兼容了MySQL 5.六、MySQL 8.0以及PostgreSQL 11,此外还高度兼容了Oracle,由于Oracle语法自己很是复杂,所以总体兼容度能够达到95%左右。除了兼容Oracle以外,基于POLARDB自己的能力能够在Proxy层实现自定义读写分离和自动负载均衡。Oracle在引擎层可以提供多写能力,可是POLARDB提供的是一写多读能力。存储层的Polar Store相似于Oracle的ASM。POLARDB自己的能力基本都被其兼容Oracle的产品复用了。

POLARDB Oracle版本从几个层次作了兼容,首先是操做界面可以彻底兼容,对于DBA而言迁移成本基本为0。其次,对于应用开发而言,目前POLARDB使用的PG开源的SDK。而对于引擎架构而言,POLARDB的架构基本和Oracle相似。目前使用的存储也是和ASM对标的。

兼容只是起点,使用POLARDB不仅是得到了对于Oracle的兼容性,还提供了更强大的能力。不只可以得到云原生能力,兼容更多的数据生态,而且还提供了更多的数据增值服务以及业界的解决方案,其背后是整个阿里巴巴生态的技术能力。

本次云栖大会上发布的POLARDB一体机使用了云原生的管控系统,沉淀了阿里巴巴以前在公有云上积累的管控经验。一体机使用了软硬一体化设计,实现了整机柜交付,而且集成了大量的成熟新硬件。主要面向政企行业,可以实现从Oracle一键迁移。一体机使用K8S底座,可以方便与自有系统集成。

Oracle数据库迁移须要通过评估、测试、迁移、管理、分析诊断以及付费等诸多环节,而阿里云为用户在各个阶段提供了很是完善的功能。

总结而言,对于Oracle的兼容性能够分为五个维度:

 工具和生态:兼容DBA、开发者等相关人员的使用习惯;

 SQL语法:对应用而言须要改形成本接近于零;

 性能:避免性能退化;

 成本:能够将成本作到极低;

 部署:线上线下实现混合云架构。

那么,如何作迁移呢?阿里云提供了数据库和应用迁移(ADAM),其包含了采集、画像、评估、改造以及迁移系统,可以帮助企业最大限度下降ORACLE数据库和应用迁移上云的风险、技术难度和实施周期。ADAM脱胎于阿里巴巴内部“去O”的实践,可以帮助用户作到一键上云。

五、使用云原生技术构建可扩展的游戏数据库架构

江娱互动CTO罗田惟为你们介绍了如何使用云原生技术构建可扩展的游戏数据库架构。

江娱互动是一家专一于小游戏公司,头部产品是“世界争霸”小游戏。 “世界争霸”小游戏首先算是一个大型社交系统,目前的服务数量达到了200多个,超过1百万日活,天天5亿次用户请求。其次是大型数据库系统,目前有200多个数据库实例,总数据量在10TB之上。最后,游戏仍是大型日志系统,这对于分析玩家很重要,“世界争霸”天天日志量在50TB之上。

对于游戏产业而言,面对着低延迟、重支付和全球同服的挑战。面对海量的请求、数据和日志,服务器数量多、架构复杂以及带来运维压力大,还有研发团队能力不足、研发周期短以及要求高的挑战,彻底由本身团队负责是没法搞定的。

“世界争霸”小游戏数据总量很大,单表数据量也大,而且QPS也很高。若是使用自建数据库方案,使用MySQL数据库,而且使用Cobar中间件作分库分表。自建数据库的方案缺点很明显,架构比较复杂,搭建和维护的成本都很是高,而且稳定性难以保障。若是采用上云的传统方案就是使用阿里云RDS来替代MySQL,这样的缺点也是这种方案不够灵活,这样的方案对于传统电商而言可可以用,可是对于游戏而言是不足够的,虽然搭建和维护比较方便,可是稳定性却不够好。

从2019年5月使用POLARDB以来,江娱互动目前已经成为了POLARDB华北区最大客户。POLARDB的优势在于存储和计算分离,扩展性强,而且单表容量大,小表性能平稳,同等规格下是RDS性能的7倍,而且相较于RDS可以节省一半成本。POLARDB稳定性也很是高,SLA接近于100%。

六、大规模实时互动课堂下的POLARDB实践

猿辅导资深研发架构师李阳明为你们介绍了在线教育公司猿辅导的大规模实时互动课堂下的POLARDB实践。

猿辅导是一家在线教育公司,正在为超过2.5亿的中小学生和家长提供多元化的智能教育服务,主营业务为在线题库、拍照搜题、实时互动课堂、直播云辅导等。

猿辅导对于实时互动课堂的定义包含三个要素:实时可互动、活动类型丰富以及用户体验稳定一致。对于在线课程测验这个典型场景主要面对的挑战有三条,即流量规模比较大,业务需求多样和业务变动频繁。首先,对于猿辅导这样的面向K12在线教育而言,流量会有明显的周期差别,存在明显的波峰和波谷,中小学生每每会在工做日的晚上或者周末才有时间上课。此外,房间规模也不一样,猿辅导有上千个千人班级,还有若干十万人的班级,而这两种班级的流量是不一样的。其次,猿辅导的业务需求比较多样,不一样年级的功能侧重点不一样,不一样角色关心的内容也不一样。

猿辅导最初使用MySQL + Redis方案,MySQL落盘核心数据并提供回放服务,Redis则实现各类榜单供直播使用。这种方案的问题是Redis数据没法复用,致使写多份,而且单机MySQL存在性能瓶颈没法支持更高的QPS。后来猿辅导就引入了POLARDB数据库,并将统计功能进行了微服务化,去掉了Redis。

这样的方案运行了半年,也遇到了三点主要的问题:处理能力被高估、缺少隔离和缺少扩展性。因而猿辅导借助POLARDB实现的数据库架构的再次演进,实现了数据库的垂直拆分、水平拆分、读写分离和提交异步化。

猿辅导如今的数据库架构还存在着一些遗留的问题,好比负载均衡策略不可配、永久回放带来数据负担以及课堂外数据统计也是一个负担。所以,猿辅导也进行了一些负载均衡方面的优化,好比支持按照负载进行Shard调度,也支持手工指定房间的Shard,并且使得基础组件支持动态下发分片信息。


本文做者:Roin

原文连接

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索