PolarDB-X:云原生分布式数据库演进方向
分享人:黄贵,阿里云数据库首席架构师,阿里云数据库分布式系统、分布式数据库内核的研发工程师。
正文:
一、技术趋势:云计算加速数据库系统演进
1. 数据库的发展历程
在近半个世纪的数据库发展历程中,数据库的发展主要有两个方向:
a. 分布式技术
- 数据规模越来越大,包括吞吐量、事务请求等,数据价值的挖掘需要分布式并行技术;
- 数据类型越来越丰富,从关系型数据到非结构化数据,需要处理关系型数据和非结构化数据的融合分析;
b. 云原生技术
- 利用云的基础设施、云资源池,进行运算与存储的解耦、弹性伸缩,更好的匹配业务的发展。
云原生和分布式为数据库的技术带来了变化,甚至是重塑了数据库的发展方向。
2. 云原生
云原生是未来使用云的标准方式。云原生资源无需预留,取之不尽、用之不竭。用户在需要时购买即可使用,不用关心云资源在哪里,以及它背后的逻辑。
3. 阿里云数据库
阿里云数据库是一个一站式、全链路数据管理与服务。
在阿里云业务全景图中可以看到,阿里云数据库业务涵盖以下内容:
- 开放生态:包括分销生态、ISV被集成生态、服务生态、开发者生态等;
- 行业应用:包括新零售、城市大脑、政府事务、金融、医疗健康、制造、能源、电信、教育等;
- 全场景解决方案:包括泛互联网、数字政府、新金融、工业互联网/物联网等;
- 一站式数据管理:这是支撑上述解决方案的阿里云的数据服务产品,覆盖从数据生产,到数据处理、存储,到数据分析和发现,到数据开发和管理全链路流程。
二、PolarDB 云原生数据库
1. PolarDB产品系列介绍
PolarDB是阿里巴巴新一代云原生关系型数据库,有三个主要产品:
a. PolarDB-X 云原生分布式数据库
- PolarDB分布式版本;
- 融合分布式SQL引擎与分布式自研存储;
- 面向海量数据存储、超高并发吞吐,复杂计算与分析;
b. PolarDB-PG 云原生关系型数据库
- 100%兼容PostgreSQL数据库,高度兼容ORACLE语法;
- 基于分布式架构和普通PC服务器,提供与商用数据库相当的能力;
- 具备高可用、高可靠、线性扩展、低成本、高性能等核心技术优势;
c. PolarDB-M云原生关系型数据库
- 阿里巴巴自研的新一代云原生关系型数据库;
- 存储、计算分离架构,软硬件结合;
- 极致弹性、高性能、海量存储(100TB)、安全可靠;
- 100%兼容MySQL56/5.7/8.0;
2. PolarDB-X:云原生分布式数据库
PolarDB-X:完全兼容MySQL生态的云原生分布式数据库,同时支持在线事务处理与在线分析处理(HTAP),具备金融级数据高可用、分布式一致性以及极致弹性等能力的企业级数据库。
PolarDB-X的发展历史可以追溯到10年前:
a. 2009年,阿里集团根据自身业务发展需求提出去IOE,并推出新产品TDDL(Taobao Distributed Data Layer),开创了分布式数据库中间件+开源数据库应用在高并发交易系统的先河;
b. 之后,阿里云将TDDL集成为DRDS(Distributed Relational Database Service)服务,并在2017年将其商业化,成为国内最早的分布式服务的商业化产品;
c. 2020年,阿里云将DRDS演进成一体云原生分布式数据库PolarDB-X 2.0;
发展至今,PolarDB-X历经10余次阿里巴巴天猫“双十一”考验,支持8.7千万TPS峰值,拥有线下用户700多家,部署规模超过10000台。
3. 分布式数据库解决的核心问题
分布式数据库解决的核心问题主要体现在三个方面:
a. 用户透明
- 如何提供无限接近单机的使用体验;
- 如何减少应用的侵入性;
- 是否兼容已有生态,降低整体持有成本;
b. 业务连续性
- 如何提供与单机一致的RPO能力;
- 多副本数据如何保证分布式一致;
- 是否提供异地容灾多活能力抵御机房级故障;
c. 一致性保障
- 跨节点事务如何保证一致;
- 如何应对更复杂的批量或查询场景;
- 上下游的一致性如何保证(数据同步、备份恢复);
总而言之,用户希望分布式数据库像单机数据库一样易操作,同时要具备单机数据库所没有的扩展能力。
4. PolarDB-X技术架构
PolarDB-X的组件包括:
a. 元数据服务(Global Meta Service,GMS)
- 提供全局授时服务(TSO);
- 维护Table/Schema,Statistic等Meta信息;
- 维护账号、权限等安全信息;
b. 存储节点(DateNode.DN)
- 基于多数派Paxos共识协议的高可靠存储;
- 处理分布式MVCC事务的可见性判断;
c. 计算节点(ComputeNode,CN)
- 基于无状态的SQL引擎提供分布式路由和计算;
- 处理分布式事务的2PC协调,全局索引维护等;
d. 日志节点(Change Data CaptureCDC)
- 提供兼容MySQL生态的binlog协议和数据格式;
- 提供兼容MySQLReplication主从复制的交互;
PolarDB-X是一个计算存储分离的架构,旨在最大限度地发挥其云数据库的弹性扩展能力。PolarDB-X计算层是一个无状态的集群,可以任意增减节点,每一个节点都拥有完整的计算能力,可以实时无缝扩展计算能力,也可以独立扩展存储能力。
三、PolarDB-X的核心性能
1. 透明分布式
a. 自动分区
透明分布式能力让用户以使用单机MySQL数据库的体验操作分布式数据库,其默认主键分区(一致性hash)和全局索引。
AUTO模式数据库
AUTO模式数据库(也称为自动分区数据库),支持自动分区,即创建表时无需指定分区键,数据即可自动在集群内均匀分布;同时也支持使用标准的MySQL分区表语法,对表进行手动分区。可以便捷地享受到分布式数据库的透明式分布、弹性伸缩和分区管理等诸多红利。
建库语法:
CREATE DATABASE auto_db MODE='AUTO';
USE auto_bd;
建表语句与MySQL一致,无需指定分区键:
# 典型的电商交易场景
create table orders(
id bigint,
buyer_id varchar comment '买家',
seller_id varchar comment '卖家',
primary key(id),
index sdx(seller_id),
index bdx(buyer_id)
)
说明:
- 一个Table由若干索引数据(Primary Index与Secondary Index)构成;
- PrimaryKey是索引组织表(Clustered Index包含行数据),索引均支持数据分片;
- 默认分区算法为一致性Hash,也可以根据业务变化进行调整,让数据分布更适合业务场景。
b. 数据自动负载均衡
数据自动均衡分布到各个存储节点上。
2. 集中分布式一体化
为了实现用户从集中式数据库到分布式数据库的平滑演进,阿里云提供了集中分布式一体化的能力。
a. 单机到分布式的平滑演进(下图左)
- 单机演进:基于Online DDL可动态完成单机大表切换为数据分片模式;
- 拆分演进:基于Online DDL可动态对分片规则进行调整,比如拆分列;
- 单机兼容:基于分布式事务、SQL路由、CDC技术屏蔽对业务影响;
b. 在线扩缩容(下图右)
- CN节点:无状态,可轻量化添加,需要同步变更vip并通知所有CN节点;
- DN节点:有状态,扩缩容需要做不停机的数据迁移(全量+增量);
- 性能和容量:最大可支持1024节点,单节点最大5TB。
3. 分布式事务
a. 分布式事务是屏蔽差异的基础
分布式数据库的最大问题,是需要保障数据跨节点时事务ACID的语义无差异,以及由此引发的问题,分布式事务是分布式数据库处理的基石。
保障事务ACID,实现事务的隔离级别以及全局二级索引;
实现备份恢复PITR、库表级恢复、分布式备份、flashback等;
确保数据导入导出在一个完整的数据快照上,避免用户读取不完整的数据。
b. 分布式事务机制(TSO + MVCC)
PolarDB-X使用TSO+MVCC多版本并发控制的机制实现分布式事务,通过引入中心授时服务(TSO),结合多版本并发控制(MVCC),保证跨节点读取到的数据版本一定是一致,而不会读到一个事务的部分数据。
如下图所示,提交事务时,计算节点(CN)执行事务时从TSO 获取到时间戳,随着数据一同提交到存储节点(DN)多版本存储引擎上。读取时,如果查询操作的数据涉及多个分区,PolarDB-X首先会获取全局时钟作为读取版本,对每行数据的MVCC多版本进行可见性判断,确保读到全局一致的数据版本。
4. 分布式Online DDL
分布式数据库进行DDL操作,通常会遇到由于数据量大导致数据迁移耗时过长,以及分布式系统可能带来的一系列异常问题,如节点的失效、稳定性挑战。因此,运维人员在分布式数据库进行DDL操作都会非常谨慎。
PolarDB-X提供了强大的数据迁移框架,确保在业务正常运转的过程中进行DDL操作。
Online DDL支持类型包括:
a. 索引维护
- CREATE INDEX idx1 ON t1(name)
- CREATE CLUSTERED INDEX idx1 ON t1(name)
b. 分区算法变更
- ALTER TABLE t1 PARTITION BYHASH (name)
- ALTER TABLE t1 PARTITION BYHASH (name) PARTITIONS 32
- ALTER TABLE t1 BROADCAST
- ALTER TABLE t1 PARTITION BY RANGE (id)
c. 更多的INSTANT DDL
- INSTANT DDL即无需接触数据,只更改源数据,实现毫秒级操作,进一步减少运维负担;
- 任意位置加列:ALTER TABLE t1 ADD COLUMN
- 扩大列的数据类型;
参考:https:/help.aliyun.com/document_detail/402314.html/
5. 云原生与分布式技术融合
云原生资源解耦池化和分布式水平扩展的能力,可提供资源的独立弹性,是云数据发展必然方向。
如下图所示,将存储服务池与持久化存储进一步分离,形成两层计算存储层,在存储服务池提供多版本数据页读取服务,在计算服务池进行数据计算、分布式计划执行、数据汇总等,进一步提升数据库弹性的粒度,实现实时、秒级弹性,以及细粒度的弹性。
6. 多租户共用资源池
为减少使用成本,尤其对于SAAS用户来说,对于数据库支持多租户有强烈的需求,用户需要资源隔离,以实现独享数据库体验。
PolarDB-X多租户共用资源池可以很好的满足这一需求。
- 一层租户(餐饮SAAS租户为餐厅)支持热点散列;
- 二层租户(电商SAAS,一层为电商平台,二层为用户),支持热点散列;
- 政务系统,支持省地市的多租户分模式,权责分离;
- 支持跨租户的数据查询,以及数据回流;
7. 一个系统中处理混合负载
关键点:提供HTAP的统一接入点,在满足强一致、强隔离基础上,同时支持TP事务型负载和AP分析型负载请求。
PolarDB-X是一款支持HTAP(Hybrid Transaction/Analytical Processing)的数据库,在支持高并发、事务性请求的同时,也对分析型的复杂查询提供了良好的支持。
优势:
- 强隔离、强一致的混合负载(TP请求不会因为日志复制而产生延迟);
- 分布式并行计算(AP查询可满足线性扩展能力)
四、PolarDB-X基于K8S operator的轻量化管控系统
PolarDB-X基于K8S operator推出了轻量化管控系统,旨在原生 Kubernetes 上提供完整的生命周期管理能力,满足用户的轻量化部署。PolarDB-X Operator包括集群创建、集群升级、运维监控等一系列管控系统,同时集成了开源生态Prometheus、Loki、Grafana等。
- 监控数据大盘对系统运行了如指掌
PolarDB-X Operator的监控系统数据大盘可以全面监控数据库运行状态,以便进行实时健康状态检查。
- 大规模云数据库的智能化运维
智能化运维的6大核心自治特性:
- 实时异常检测;
- 故障自愈;
- SQL优化;
- 智能调参:根据当前的业务负载,智能匹配业务参数;
- 自动弹性:根据业务预测负载预测进行实时弹性,实现最佳性价比;
- 6智能压测;