PolarDB-X 2.1 新版本发布 让“MySQL 原生分布式”触手可及

PolarDB-X 2.1 新版本发布

让“MySQL 原生分布式”触手可及

——黄贵(曲山)阿里云数据首席架构师

了解更多PolarDB-X 内容:
https://developer.aliyun.com/topic/polardbx_release

PolarDB-X 2.1 是 PolarDB-X 非常重要的版本,也是第一次 PolarDB-X 分布式数据库的产品可以作为企业级的分布式数据库真正部署到客户的生产环境使用。

一、一个好的MySQL分布式数据库应该是什么样的

C++语言设计的概念 Zero Overhead Abstraction ——0负担抽象原则,它有两个重要特性:

  • 无须为不用的特性付出代价: C 类用户升级到 C++ 时,如果不使用 C++里的高级特性,则无须为这些特性付出额外的代价。比如在 C 里面是 structure,到 C++ 里可能是class 。对于 C 中的 structure 和 C++ 中的 class ,如果不带 virtual function ,则在内存布局的性能消耗上是等同的,不用付出额外的代价。
  • 你所使用的代码,不可能手写得更好:如果想要使用更高级的特性,用 C++ 扩展的能力,一定比手写的代码更好,即C++ 提供的语言特性能够很好地帮助到用户。

C 语言的用户升级到 C++,必然是因为它带来了更新更强的能力,比如封装、抽象的能力,可以做继承、有多态。另外,C++ 提供了多种编程范式,比如面向对象、泛型编程、函数式编程等,这些特性都可以极大地拓展语言的抽象,带来能力的提升。

同理,从单机的 MySQL 数据库升级到分布式 MySQL 数据库,我们期望它能有哪些表现?

首先是完全兼容,可以由单机平滑过渡到分布式系统,无需对应用进行改造;第二,无需对数据库的结构进行改造;第三,不使用分布式能力则无须付出额外的开销。

单机到分布式最重要的变化是数据会分布在多个节点上,对于数据库中很多操作而言,尤其是事务,是需要付出一些额外代价的。如果事务涉及到多个数据的分区,而只是想将分布式系统作为单机数据库来用,同样也可以有单表的特性,无须付出分布式事务的代价。

升级到分布式系统后能够获得自动伸缩的能力,能够天然地利用分布式的特性实现跨地域的高可用,还可以处理混合的负载类型,包括事务的负载以及分析的负载,提供了高性价比的解决方案。

二、让分布式能力透明化

如何实现从单机到分布式完全透明化?

以从单机 MySQL 迁移到 PolarDB-X 2.1 版本为例:

第一步:建表。使用单机 MySQL 上的建表语句、DDL语句在新的分布式数据库上建表,无须做任何修改。

第二步:让应用跑起来。应用代码也无须做任何修改,原有的 SQL 语法、原有的客户端驱动程序都可以直接使用,只需要更换新的数据库连接地址。

第三步:性能调优。可以使用很多工具做压测,包括一些可视化工具,能够提供对整个系统 SQL 性能的分析, DAS自动调优工具能够帮助找到热点SQL,还可以通过 DDL 建新的索引或对数据分区进行调整,对热点 SQL 进行调优。

实现以上整个过程的大部分操作只是诊断和适配,无须进行过多改造工作。

对于分布式系统而言,要做到透明,核心就是对分布式事务的支持。分布式数据库与单机数据库的关键差异在于,分布式数据库是以一定的规则将数据做分片,然后分布在多个节点上,其中核心点在于如何在事务跨了多个数据分片时,保证它的 ACID 语义。这其中会涉及到如何做事务的 ACID 保证,如何做多版本处理并发的控制。有了事务 ACID 的保证,才能在此之上建立全局二级索引。

此外,很多其他功能比如备份恢复、时间回溯的查询以及分布式的备份等,都需要依赖分布式事务提供的全局一致性能力。数据的导入和导出也需要保证数据有全局快照的能力,在任何时间点都能读到一致的版本。

有了全局二级索引和多版本的并发控制等能力的支持,即可实现透明的分布式,无须显式地指定分区键,只需要像单机数库一样创建表,即能默认做数据的分区,也无须考虑数据分区带来的跨节点事务的处理。表的修改操作和Online DDL 也不会对数据库的其他操作产生影响。

PolarDB-X 实现的是全局一致性的分布式事务

(使用 TSO全局 timestamp)+ MVCC (多版本并发控制机制)实现的分布式数据库。主要的技术原理是基于 Paxos 做事务日志的同步来保证高可用。

在事务在处理的过程中,因为使用了两阶段提交的方式来做分布式事务的处理,如果发生了节点失效,也可以利用 Paxos 带来的高可用能力保证事务继续进行下去。

另外,使用了全局唯一的时间戳以及多版本并发控制的机制来保证它的隔离性,实现了 Snapshot Isolation 的隔离级别。

具体流程如下:GMS 组件提供全局事务的时间戳,在发起事务的过程中,如果事务要做提交,则会获取提交的时间戳并将其带到所有下面存储节点的参与者上。然后结合事务当前的状态,根据时间戳判断事务的可见性。每一条数据上都有其提交的时间戳,将其与当前事务的时间戳做比较,以决定这条数据在当前的事务中是否可见。

通过上述机制即可实现分布式事务的全局一致性和快照隔离。

本次 2.1 版本发布的最重要的功能就是自动模式数据库的功能。PolarDB-X 在 1.0 版本时代,是利用分库分表的模式来进行数据的自动分区。 2.0 的时代引入了全新的 AUTO 模式数据库,无需指定分区键。

上图展示了典型的电商交易场景,有交易记录表,其主键是事务 ID ,还有买家和卖家两个重要角色。对于交易的流水而言,通常除了按交易的流水日志 ID 查询以外,也有可能从买/卖家的维度查询。

表内可能有上亿条记录,需要将它创建为分区表。对于分布式数据库 PolarDB-X 而言,无需指定特定的分区键。因为这里的分区健,如果是按照buyer_id或者seller_id去查询,无法做分区裁剪。可以像使用单机数据库一样默认按主键 ID 做数据的分片。分片的算法默认是一致性哈希,也支持很多其他算法,包括 interval 做范围的划分、 range 的分区等,此类算法也可以通过 DDL 语句根据业务特点做调整,另外还可以通过多个查询维度建全局二级索引。

上图例子中建了两个全局二级索引,分别是买家 ID 和卖家 ID 。往表里面插入数据的时候,会针对数据根据数据的分区规则,将它均匀地分布在数据节点上。上图右侧两张索引表同样也按照分区规则做了均匀的分布。

数据自动负载均衡的功能,使得用户无需关心数据具体分布在哪个数据节点上,可由系统自动完成,主表以及两张索引表都按照一定的规则做数据的拆分,分片以后按照数据的大小和容量均匀分布到各个数据节点上。

有了自动负载均衡的能力以后,也就具备了在线扩缩容的能力,而在线扩缩容是单机到分布式平滑演进的重要基础。

上图有计算层的 CN 节点,也有存储层的 DN 节点。 CN 节点是无状态节点,扩容和缩容非常轻量化,因为所有 CN 的能力都对等,将 SQL 发送到任意 CN 节点都可以实现同样的处理能力,得到相同的结果。出于性能的考虑,一般会将数据就近调度到临近的 CN 节点上。

因此,CN 的扩容非常方便,只需简单地将 CN 节点添加到集群上,同步到 GMS 节点里即可。

DN 是有状态的数据节点,扩缩容需要做数据的迁移。增加了一组数据节点后,调度任务管理器会根据当前数据的分布状况,将一部分数据迁移到新的数据节点上,以此保证所有节点的数据处在均衡的分布状态。

性能和容量方面,PolarDB-X 最大可以支持 1024 个节点,单节点最大存储 5TB 数据,能够满足大部分数据库的容量需求。

缩容同理,下线数据节点后,会将它缺失的副本补足,然后重新均匀分布到其他数据节点上。

从单机数据库迁移到分布式数据库,可以基于 Online DDL 的能力动态完成单机大表切换到数据分片的模式。比如原来在单机上非常大的表,希望通过分布式系统的数据分布能力对其进行拆分,可以通过一些 DDL 的能力动态地修改其分区模式,来完成单表到数据分布表的转换。

对于单机分布式而言,PolarDB-X 完全兼容了 MySQL 的语义及其行为,包括上下游对接的生态,比如全局 CDC 可以生成全局一致的 Binlog,可以将其作为单机 MySQL 的日志流来使用。不管是同步到下游大数据系统,还是作为 MySQL 的备份,都可以通过 CDC 来对接。

Online DDL 最大的特点就是在做 DDL 的过程中对当前数据库正在处理的业务 DML 语句没有任何影响,极大减轻了数据库运维人员的负担。数据库难免会遇到一些修改表结构、增加点索引等诉求,如果每次都要在业务的低峰期去进行,对运维会造成很大困扰,而且不够及时。有了 Online DDL的支持以后,可以在任意时间点做变更。这些变更包括了创建索引、加减列、变更分区算法。

值得一提的是,加列操作使用了 Instant DDL 机制,可以只修改元数据,无须对全部数据进行修改,操作性能极高,为毫秒级,对业务的影响可以缩减到最小。

此外,可以将数据库由单表变成分区表。在分区表上还可以修改分区数、表组以及分区算法等。同时也可以将它修改成广播表,在每个数据节点上都有同样的复制表,对于频繁做 join 的小表非常有用。这些能力也使得用户可以灵活调整数据表的数据分布方式,以满足不同业务负载的需求。

三、分布式是一种全新数据库的模式

分布式是一种全新的数据库模式,它不仅是对单机数据库的完全兼容,更大的作用是带来了更多更强的能力。PolarDB-X 2.1版本带来了以下卓越的能力:

1. 高可用容灾能力

2.1 版本正式引入了 X-Paxos, 使用 Paxos 一致性协议保证数据的可靠性以及系统节点失效时的可用性。

它实现了 99.99% 可用性:任意节点的故障都不会影响集群的可用,数据 0 丢失。

提供了多种部署形态:

① 同城三机房,默认 2.5 副本。在 Paxos 协议框架下有几种角色,包括 leader节点(数据事务的主节点),它带有两个副本,分别是 follower 节点和 logger 节点。logger 节点为了节省成本,不存储全量数据,只存储日志来保证数据的一致性,同时也减少了数据副本的存储;另外还有 learner 节点,可以做只读的副本。

② 两地的三中心,默认五副本。

拥有分布式特性:用 Paxos 协议做一致性同步时,需要传输日志,而在网络上保证大量的日志传输的一致性较为困难。2.1版本支持日志分片的拆分,也做了行级热点的写入,支持自动合并,为很多电商的秒杀业务场景提供了保障;另外,通过对 follower 节点开放读,在 follower 节点上可以将全局 TSO 带过去,做一致性版本的读,利用 follower 节点的处理能力来提升整个系统的吞吐。

高可用的架构帮助我们提供了一个很好的基础。使得PolarDB-X 在容灾方面也提供了强有力的支撑,比如两地三中心的部署方式。采用5 副本(2+2+1)的机制,设置了很多规则,比如存储副本leader 节点失效重新选主的时候,会优先选择同机房的主节点,对整个系统服务的可靠性和延时不会带来太大的影响;另外,机房失效时,可以做五副本到三副本的降级操作,保证强一致性、持续的处理能力。

主可用区的概念是为了保证在同机范围内做网络访问时,最大可能地减小延时。

2. 冷热分离存储

冷热分离存储是基于分布式数据库做的成本上的优化。利用 TTL 机制,在创建表的时候指定其过期时间,将已经过期的数据归为冷数据,做归档的存储。归档存储于 OSS 里,相对于本地的在线存储,极大降低了成本。与此同时, OSS 上的存储格式进行了高度压缩,进一步降低了成本。

归档到 OSS 时采用了开放的格式,优点在于可以对接很多开源生态,比如Spark、Flink 的生态,然后做分析、查询。同时,其自身的查询引擎也支持快速查询在 OSS 归档的数据。

3.可观测性

PolarDB-X 的 Dashboard 集成了开源的 Prometheus 等工具做监控、告警,分析当前系统的运行状态。另外还建了一套做 performance 的 insight 工具,分析数据在各个节点上的分布状况以及他们在分区上的访问频率,帮助用户更好地发现系统的性能瓶颈,并进行调优。

四、未来往何处去

未来我们会持续在 PolarDB-X 开源版本上做更多投入。

我们会将开源的 codebase 与当前的商业版本对齐,所有能力在内核层面完全开源。也会继续做更多企业级能力的增强,使 PolarDB-X 完全变为企业级的分布式数据库。

全新的 HTAP 引擎使得 PolarDB-X 同时能够处理事务型和分析型的负载。另外还会做国产化适配调优,实现国产化替代的工作,包括深度诊断、自动化调优工具以及各种生态的对接等。

原文链接

本文为阿里云原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PolarDB-X 高可用存储服务:基于 X-Paxos 一致性协议

了解更多PolarDB-X 内容: https://developer.aliyun.com/topic/polardbx_release 一、DN 高可用方案 在 PolarDB-X 的系统结构中,DN 组件负责数据存储。 一个 DN 节点是 一个 MySQL 实例。 为了数据安全,我们需要多副本,一个逻辑…

奋战开源操作系统二十年:为什么编程语言是突破口?

【编者按】编程语言之于操作系统,意味着什么?本文作者飞漫软件创始人魏永明经过二十余年的操作系统开发探索,明确提出编程语言是自主基础软件,尤其是操作系统的重要抓手。如果说操作系统是基础软件生态里的皇冠,那编程…

一站式智能运维解决方案,企业系统的隐形守护者

时有爆发的疫情,加速引导着用户观影方式的改变。越来越多的用户习惯将观影模式从线下转移到线下。 疫情作为电影行业的“黑天鹅”,让线下影院陷入沉寂,但是却让网络视频平台焕发新生。多家视频平台公布了2022财年Q4的财报,其用户…

事务、全局索引、透明分布式,再见,分区健

事务、全局索引、透明分布式 再见,分区健! ——陈默(墨城)阿里云数据库技术专家 了解更多PolarDB-X 内容: https://developer.aliyun.com/topic/polardbx_release 在刚刚发布的PolarDB-X 2.1.0版本中,开…

坚不可摧!腾讯安全设三道防线,一站式护航云上安全

数字经济时代催生了企业的“云”化发展,随着业务规模的迅速扩大,混合云和多云的部署日益增多,随之而来的各类漏洞和威胁让企业的安全防护门槛和复杂度越来越高。 据腾讯安全发布的《2021年度公有云安全报告》显示,2021年腾讯安全…

好的 MySQL 兼容性可以做到什么程度? PolarDB-X 如何做生态兼容

好的 MySQL 兼容性可以做到什么程度 PolarDB-X 如何做生态兼容 ——吴学强(燧木)阿里云数据库高级技术专家 了解更多PolarDB-X 内容: https://developer.aliyun.com/topic/polardbx_release 众所周知,数据库是基础的软件系统&…

如何「场景化」的企业上云

随着“十四五”规划正式提出“以混合云为重点培育行业解决方案、系统集成、运维管理等云服务行业”,混合云成为产业内众多服务商和企业关注的重点。自混合云概念出现以来,已有超过十年的历史。初期的混合云基本只是云环境之间的简单连接,其能…

Serverless JOB | 传统任务新变革

Job 作为一种运完即停的负载类型,在企业级开发中承载着丰富的使用场景。SAE Job 将 Serverless 技术所带来的普惠红利从应用领域向外延展至任务领域,通过结合 longrun shortrun 的使用场景和最佳实践打造成为 Serverless 一体化企业级开发运维平台&…

最全!即学即会 Serverless Devs 基础入门(上)

在上篇《即学即会 Serverless | 如何解决 Serverless 应用开发部署的难题》中,我们阐述了工具链的重要性,那么本文将带领各位快速实现 Serverless Devs 入门。 安装工具 第一步:请先安装 Node.js(>10.8.0) 与 NPM 包管理工具&#xff1b…

阿里云ODPS入选2022世界互联网领先科技成果

11月9日,2022年世界互联网领先科技成果发布活动在世界互联网大会乌镇峰会期间举办,评选出具有国际代表性的年度领先科技成果,由阿里云自主研发的大数据智能计算平台ODPS入选。ODPS解决了超大规模多场景融合下,用户多元化数据的计算需求问题&a…

最全!即学即会 Serverless Devs 基础入门(下)

在上篇《最全!即学即会 Serverless Devs 基础入门》中,我们阐述了工具链的重要性,并对安装方式 & 密钥配置进行了讲解。但是在 Serverless Devs 的规定中,一个 Yaml 可以被认为是一个 Serverless 应用,因此本文将继…

全球创见者共话企业韧性 金蝶“数字员工”惊艳亮相

11月11日,由云南省昆明市人民政府、云南省工信厅指导,金蝶集团主办的“2022全球创见者大会”成功举办。大会以“数治企业 韧性成长”为主题,求索不确定时代,如何以“数”治企,用EBC治理和管理企业,实现韧性…

开箱即用!Linux 内核首个原生支持,让你的容器体验飞起来!

容器化是最近几年 DevOps 界流行的趋势,通过业务的容器化我们将创建一个完全打包、自包含的计算环境,让软件开发人员能够更加快速地创建和部署自己的应用程序。然而长期以来,由于镜像格式的限制,容器启动镜像的加载是很慢的&#…

专访快准车服CIO牛小虎:全面信息化支持,让车爱上快准

一、紧跟创业浪潮,年轻的快准团队走在前列 1999年11月,第五届中国国际电源展览会和第二届中国电子变压器展览会在广州成功举办,近150家企业的电源及电子变压器产品争相亮相,这样中国电源产业看到了广阔的前景与市场空间。 电源产…

元宇宙照进现实 金蝶联手科大讯飞发布“数字员工”

“金小蝶,请帮我查一下这个项目资金占用的情况。” 企业管理者话音刚落,包括损益分析、回款分析、资金占用分析等详尽的数据结果便已呈现在其眼前,同时还针对资金异常情况给出了风险评估。在一问一答中,销售总监得到了一个得力的“…

《阿里云代码安全白皮书》5个维度应对3类代码安全问题

摘要:在互联网快速发展的时代,代码是企业最核心的资产,代码安全也是企业资产安全最重要部分;为了保护企业代码安全,各公司使出的手段也是五花八门。阿里云云效联合阿里云的代码安全能力从基础安全、备份与恢复、安全与…

优化搜索排序结果从而“ 提升CTR、CVR业务指标”

案例背景 某导购类电商APP,与淘宝天猫等一线商家合作,亿级商品索引量,类目和子类目多层嵌套,商品有不同子款式和尺码,搜索和筛选需求复杂。通过采用分销券模式,优惠券帮助普通C用户降低了单品价格,分销模式…

阿里CTO程立:首个全面深度用云的天猫双11,更敏捷、更经济、更绿色

“一个全面深度用云的时代正在到来。”在2022天猫双11技术分享中,阿里CTO程立表示,历经双11大规模场景的淬炼,阿里巴巴将云的先进性转变为技术效能的提升,今年阿里整体单位算力成本下降8%,全面用云带来了业务的敏捷创新…

详解异步任务:函数计算的任务触发去重​

前言 无论是在大数据处理领域,还是在消息处理领域,任务系统都有一个很关键的能力 - 任务触发去重的保障。这个能力对于一些准确性要求极高的场景中(如金融等)是必不可少的。作为 Serverless 化任务处理平台,Serverles…

阿里云混合云建管用一体化探索实践 助力政企从容应对数字化转型难题

随着十四五规划强调打造数字经济新优势,将云计算列为数字经济重点产业,明确了以混合云为重点的云服务产业发展路线:“以混合云为重点培育行业解决方案、系统集成、运维管理等云服务行业”,混合云成为产业内众多服务商和政企客户关…