阿里云正式开源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数据库的生态,这是我们的初衷。
阿里云会不会未来把所有数据库能力都开源?
李飞飞:这个肯定不会。因为商业化能力和开源社区之间还是有一点区别,比如基于云原生管控的能力,还有一些企业级的能力,比如针对商业版数据库兼容性的能力等等这些,还有其他的企业级的特性,我们可能就会选择不开源,这部分就是我们商业化版本,我们云服务提供的版本和开源版本一些核心的开发的点。我们希望用户,我们的客户能够通过开源版本把阿里云数据库产品技术快速用起来,并且能够愿意参与到技术产品的迭代过程中去,但是在一些高阶的能力上,借鉴我们团队专业能力和阿里云服务的能力,形成良好的商业合作伙伴,两者之间相辅相成,这是我们的基本思考。
写在最后
得益于云原生技术对数据库的彻底重构,数据库服务已成为按需取用、安全可靠、成本低廉的服务。云原生分布式数据库具备易用性、高扩展性、快速迭代、节约成本等特征,是未来必然的发展趋势,可以解决企业用户的核心诉求。