写点什么

阿里云正式开源 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:577176

评论 11 条评论

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

2021上半年1000道大厂高频面试题汇总(Java岗)

Java架构师迁哥

用了这么多年 Gitlab,可能还不了解这些知识

郭旭东

DevOps gitlab 极狐GitLabs

新思科技连续五年获Gartner魔力象限应用安全测试领导者殊荣

InfoQ_434670063458

新思科技 Gartner 魔力象限

阿里开源三天就被狂转50w次的《Java面试突击》限时下载!

Java架构师迁哥

Python——注释和字符串的拼接

在即

6月日更

深入浅出负载均衡

vivo互联网技术

负载均衡 高可用 服务器 hash

阿里架构师手肛6个月,总结出17W字操作系统、网络教程(导图+笔记)

Java架构师迁哥

深入讲解RxJava响应式编程框架,背压问题的几种应对模式

小Q

Java 学习 编程 架构 面试

【Redis】概览

awen

redis

C语言从入门到精通(三)

代码情缘

编程 开发 C语言 编程之路 硬件开发

架构解析|网易自研新一代大规模分布式传输网

网易云信

分布式 音视频

C语言从入门到精通(一)

代码情缘

c++ 编程 开发 C语言 硬件开发

Java中String类的前世今生

卢卡多多

Java string 6月日更

2021全球人工智能技术大会开幕 百度王海峰:跨语言沟通正在成为现实

百度大脑

人工智能 沟通 跨语言

iOS APP 架构漫谈

iOSer

ios ios开发 iOS架构

手滑党福音,意外删除重要文件怎么办?

淋雨

数据恢复 EasyRecovery 文件恢复

从事开发5年以上的Java程序员,面试会被问到哪些?

Java架构师迁哥

C语言从入门到精通(二)

代码情缘

开发 C语言 编程、

C语言从入门到精通(四)

代码情缘

编程 C语言 变量 编程之路 6月日更

轮胎行业遇上AI,百度智能云携手固铂轮胎智能化转型

百度大脑

智能云 轮胎

新手模拟实现bind

前端树洞

面试 大前端 js this

Java--JVM内存结构

是老郭啊

Java JVM简介 JVM内存结构 JVM运行时数据区

工厂里三个质检车间缩减为一个,飞桨企业版EasyDL助力降本增效

百度大脑

飞桨

去阿里/腾讯/字节面试P7Java岗时,需要掌握哪些技术栈?

Java架构师迁哥

IDEA使用

xujiangniao

Java IDEA

a.docker

xujiangniao

Docker

程序员必知的硬核基础知识

Java架构师迁哥

EBean ORM 框架介绍-2.字段加密、更新日志和历史记录

Barry的异想世界

jpa Ebean 字段加密 更新日志 历史记录

外包3年凭借一手“秒杀架构”成功上岸阿里

Java架构师迁哥

备战金九银十,2021年最全999道Java岗高频面试题分享

Java架构师迁哥

应用,才是区块链的终极归宿

CECBC

阿里云正式开源PolarDB-X数据库,曾历经各届双11考验,现已登陆 GitHub_数据库_凌敏_InfoQ精选文章