写点什么

阿里云正式开源 PolarDB-X 数据库,曾历经各届双 11 考验,现已登陆 GitHub

  • 2021 年 10 月 20 日
  • 本文字数:3237 字

    阅读完需:约 11 分钟

阿里云正式开源PolarDB-X数据库,曾历经各届双11考验,现已登陆 GitHub

10 月 20 日,阿里云在 2021 云栖大会现场宣布正式开源云原生分布式数据库 PolarDB-X 的源代码,将自研云原生分布式核心技术分享出来,进一步推动云原生分布式数据库发展。



本次开源遵循 Apache v2(计算层) 和 GPL v2(存储层) 开源协议,以全共享并尊重原作者著作权的模式开源,用户可以直接使用或基于阿里云开源数据库产品提供二次分发的商用产品和服务。该项目现已在阿里云官网及 GitHub 上发布。


GitHub 地址:https://github.com/ApsaraDB/galaxysql



“我们将阿里最核心的云原生数据库技术进行开源,希望开发者和客户通过开源版本快速使用阿里云数据库产品技术,并参与到技术产品的迭代过程中来,共建云原生分布式数据库生态。”阿里云数据库负责人李飞飞表示。


2013 年,阿里巴巴将最后一台 Oracle 数据库从淘宝核心系统中下线,开始用开源数据库解决“双 11”等极端流量场景,随后又扛起了自研云数据库的大旗,并在 2017 年云栖大会前夕推出云原生分布式数据库 PolarDB


在 2020 年阿里云峰会上,阿里云宣布推出 PolarDB-X 数据库。PolarDB-X 采用了基于云原生一体化架构设计,专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等瓶颈问题。李飞飞曾表示,“PolarDB 的计算是一写多读多个计算节点,最多做到 16 个节点,现在,PolarDB-X 相当于在 PolarDB 之上又加上了一个分布式拓展层,这样可以根据企业的并发需求、数据量进行水平拓展。”


在今年 5 月 29 日举办的 2021 阿里云开发者大会上,阿里云宣布了“阿里云数据库开源计划”,并率先开源了 PolarDB for PostgreSQL 分布式版,包括数据库内核、相关插件、工具脚本、测试用例以及设计文档,适用于中大型企业核心业务场景。李飞飞表示:“我们希望将阿里云在数据库技术上积累的丰富经验,通过标准技术组件和系统的方式开放出来,共建开源数据库生态。”


本次,阿里云宣布开源 PolarDB-X 数据库,继续遵循“阿里云数据库开源计划”,并进一步壮大了开源数据库生态。


PolarDB-X 架构演进与核心技术

架构演进


PolarDB-X 是由阿里自主研发的原生 MySQL 分布式数据库,兼容 MySQL 协议与客户端,具备自动负载均衡、高可用、HTAP 混合负载、支持分布式事务、全局二级索引等重要特性,专注解决超高并发吞吐、海量数据存储、大表瓶颈等数据库瓶颈难题,历经各届天猫双 11 及全行业客户业务的考验,其诞生最早可以追溯至阿里在 2009 年发起的“去 IOE”运动。


当时,为了实现对 Oracle 的替换,并避免以后出现卡脖子情况,阿里将技术的自力更生和自主可控作为核心诉求。一方面,随着 x86 技术日趋成熟,稳定性与小型机的差距不断缩小;另一方面,MySQL 采用轻量化线程模型并具备高并发的支持能力,其生态逐步完善,因此新方案采用了基于 Sharding 技术 + 开源 MySQL 的分布式架构( TDDL + AliSQL )。而这,也被称为 PolarDB-X 0.5 版本时代,这代产品的特征是以解决扩展性为目标、面向系统架构使用,尚不具备产品化能力。


随着这套架构逐渐成熟,2014 年开始,阿里云推出了 DRDS + RDS 的分布式云数据库服务,这也被称为 PolarDB-X 1.0 时代。这代产品的特征是采用 Share-Nothing 架构、以解决存储扩展性为出发点、提供面向用户的产品化交付能力。针对用户使用中的痛点,阿里云不断进行产品能力迭代,陆续支持了分布式事务、全局二级索引、异步 DDL 等内核特性,持续改进 SQL 兼容性,实现子查询展开、Join 下推等复杂优化,并开发了平滑扩容、一致性备份恢复、SQL 闪回、SQL 审计等运维能力。


2018 年开始,PolarDB-X 进入 2.0 时代,持续探索基于云架构的分布式数据库形态。2019 年,PolarDB-X 团队完成 DRDS SQL 引擎和 X-DB 数据库存储技术的融合,并结合 PolarDB 的云原生特性,承上启下推出了新一代的云原生分布式数据库。


目前,PolarDB-X 共有 1.0 和 2.0 两种形态。其中,PolarDB-X 1.0 版由计算层 PolarDB-X 实例和存储层私有定制 RDS 实例组成,通过挂载多个 MySQL 进行分库分表,提供多种贴合 OLTP 业务的拆分方案,解决高并发、大数据量存储、在线计算的扩展性难题。PolarDB-X 2.0 版是云原生分布式数据库,支持全局 MVCC 的强一致的分布式事务、私有 RPC 协议带来的性能提升、Follower 上的一致性读能力等,运维管理更加便捷。

核心技术


1. 基于 Paxos 的一致性存储


阿里多年在异地多活的场景下,打磨 Paxos 的一致性共识协议,经过了几年双十一的生产级业务的沉淀,基于多分组 Paxos 的技术,将为 PolarDB-X 提供一致性的数据保证。除了 Paxos 的基础功能外,在生产环境下也沉淀了比较多的企业特性,比如:Paxos 多分组合并、日志型副本、热点更新优化、高可用检测等。


2. 强一致分布式事务


采用业界比较主流的全局时钟 TSO + MVCC 的策略,结合 2PC、Paxos 等相关技术,提供可严格满足金融转账场景的事务一致性。


3. 分布式 SQL 引擎 (CBO 优化器、并行计算)


基于存储计算分离、分布式等特性,基于全新的 volcano/cascade 优化器模型,提供了 Partition Aware 的计算下推,支持满足 HTAP 场景的索引选择以及原生 MPP 的并行计算优化等。

阿里云数据库开源计划


如前文言,本次 PolarDB-X 的开源源于阿里云此前公布的「阿里云数据库开源计划」。


2021 年 5 月,阿里云面向所有开发者发布了「阿里云数据库开源计划」。目前,阿里云在 GitHub 上有 2600 多个开源项目,3 万多个贡献者,Star 超百万。


阿里云首个开源的是 PolarDB for PostgreSQL 分布式版,包括数据库内核、相关插件、工具脚本、测试用例以及设计文档,适用于中大型企业核心业务场景。本次开源遵循 Apache Version 2.0 协议,以全共享并尊重原作者著作权的模式开源,代码可以修改和再发布。


PolarDB for PostgreSQL 的“三步走”开源路线图:


第一步,2021 年 6 月开源三节点高可用集群版本 -Paxos;

第二步,9 月会开源 HLC 高扩展分布式版本;

第三步,到 2022 年 3 月会开源 Sharding 和插件化版本。


阿里云一步一步将 PolarDB for PostgreSQL 变成一个分布式云原生数据库,真正打造云原生数据库 2.0 的开源社区。



从阿里云数据库开源的路线图来看,到 2022 年左右,这两年时间内,阿里云数据库会分批进行开源。

为什么首先开源 PolarDB PG 版本数据库?


李飞飞:为什么会选择这个开源。第一选择 PolarDB PG 开源是因为我们看到了,我们希望选择一个,第一有非常丰富的现有的 PG 生态,第二在 PG 这个领域目前还没有看到很好的云原生数据库的生态,它有各种各样的数据库分支,有做分布式的,但是云原生的弹性,存储计算分离,高可用,在 PG 社区是欠缺的,所以我们开源 Polar PG,把核心的云原生的能力就提供给开源社区,构建一个云原生 PG 数据库的生态,这是我们的初衷。

阿里云会不会未来把所有数据库能力都开源?


李飞飞:这个肯定不会。因为商业化能力和开源社区之间还是有一点区别,比如基于云原生管控的能力,还有一些企业级的能力,比如针对商业版数据库兼容性的能力等等这些,还有其他的企业级的特性,我们可能就会选择不开源,这部分就是我们商业化版本,我们云服务提供的版本和开源版本一些核心的开发的点。我们希望用户,我们的客户能够通过开源版本把阿里云数据库产品技术快速用起来,并且能够愿意参与到技术产品的迭代过程中去,但是在一些高阶的能力上,借鉴我们团队专业能力和阿里云服务的能力,形成良好的商业合作伙伴,两者之间相辅相成,这是我们的基本思考。

写在最后


得益于云原生技术对数据库的彻底重构,数据库服务已成为按需取用、安全可靠、成本低廉的服务。云原生分布式数据库具备易用性、高扩展性、快速迭代、节约成本等特征,是未来必然的发展趋势,可以解决企业用户的核心诉求。


为了更好地促进数据库核心技术的发展,InfoQ 在 11 月 26 日召开的【DIVE 全球基础软件创新大会】(北京站)的现场特别设置了【数据库核心技术探讨】专场,与业界专家共同探讨基础软件黄金时代下数据库领域的发展与实践。如果你对该议题有兴趣,欢迎进入大会官网获取免费嘉宾票


大会官网:https://dive.infoq.cn/2021/beijing/track/1206

2021 年 10 月 20 日 10:573696

评论 11 条评论

发布
用户头像
2222
2021 年 10 月 28 日 16:08
回复
2222
2021 年 10 月 28 日 16:08
回复
333
2021 年 10 月 28 日 16:08
回复
5555
2021 年 10 月 28 日 16:08
回复
查看更多回复
没有更多了
发现更多内容

WC,误删数据库了,会被开除吗?

Java架构师迁哥

牛链NB系统开发案例源码

系统开发咨询1357O98O718

渣硕试水字节跳动,本以为简历都过不了,123+HR面直接拿到意向书

Java 编程 程序员 架构 面试

巩固知识体系!应聘高级Android工程师历程感言,面试建议

欢喜学安卓

android 程序员 面试 移动开发

上线几小时下载量破百万!无价的这份阿里并发编程图册就这么强势

Crud的程序员

Java 架构 并发编程

悖论和直觉

架构与算法

字节跳动5面喜提offer!分享给朋友们面试感受

Java架构之路

Java 程序员 架构 面试 编程语言

数据库与缓存的一致性方案演进

邱学喆

缓存 一致性

Java-技术专题-ConcurrentHashMap读操作分析

浩宇天尚

Java ConcurrentHashMap

SpringBoot-技术专题-启动自动装配过程

浩宇天尚

spring springboot

数据加密:你应该知道的数仓安全

华为云开发者社区

数据加密 GaussDB(DWS) 数仓安全 透明加密 加密函数

小鼎量化机器人系统开发详情介绍

系统开发咨询1357O98O718

Python OpenCV 图像旋转,取经之旅第 11 天

梦想橡皮擦

3月日更

滴滴OCE惊喜福利!

滴滴云

爽啊,终于又见面了,字节跳动后端社招面试分享

Java架构之路

Java 程序员 架构 面试 编程语言

【实战问题】-- 缓存穿透之布隆过滤器(1)

秦怀杂货店

缓存 布隆过滤器 java;

蚂蚁金服三面Java面试题全解析,这也太难了吧

Java架构之路

Java 程序员 架构 面试 编程语言

监控系统-zabbix快速入门

小铨

监控 zabbix

2021年GitHub上爆火的999页Java面试宝典终开源

比伯

Java 编程 架构 面试 程序人生

Mysql之索引选择及优化

程序员小毕

Java MySQL 架构 面试 索引

redis+docker构建主从环境

小铨

redis Docker redis+docker 主从环境

mysql实现主主数据库(双机热备)

大奎

架构师知识笔记1

felix徐

架构实战营

Java-技术专题-Synchronized和lock区别

浩宇天尚

Java

小鼎机器人系统开发功能及源码

系统开发咨询1357O98O718

MySQL-技术专题-使用规范

浩宇天尚

MySQL

区块链通证经济——资产流动性的变革

Geek_987812

资产流动性

Github一夜登顶的SpringBoot+vue项目太香了

程序员小毕

Java 程序员 架构 面试 springboot

如何实现一个简易版的 Spring - 如何实现 Setter 注入

mghio

spring 依赖注入

想要精通Redis?这篇文章不得不看,Redis之父带你实战实践

互联网架构师小马

Java 数据库 nosql redis 面试

AWS CDK的那些事

小铨

AWS AWS CDK

聊聊IO夯的那些事

聊聊IO夯的那些事

阿里云正式开源PolarDB-X数据库,曾历经各届双11考验,现已登陆 GitHub-InfoQ