本篇内容将从3个部分为读者介绍关于PolarDB-X 2.0 核心技术能力,希望可以让大家对PolarDB-X 2.0有更深入的了解,并可以将这些特性应用到项目中,达到降本提效的目的。
- PolarDB-X 整体介绍
- 分布式的技术挑战
- 总结
今天的演讲分为三部分,首先介绍PolarDB-X 整体,其次是围绕分布式用户关注的问题来解读分布式技术在PolarDB-X 中怎么去解决,在上云的过程中如何做到业务兼容,最后做一个简单的总结。
一、PolarDB-X 整体介绍
(1) 云原生数据库架构演进概述
云原生数据库架构演进从传统单机数据库到PolarDB 云原生数据库及PolarDB-X 云原生分布式数据库。PolarDB-X是由阿里巴巴自主研发的云原生分布式数据库,融合分布式SQL引擎与分布式自研存储X-DB,基于云原生一体化架构设计,可支撑千万级并发规模及百PB级海量存储。
(2) PolarDB-X 产品特点
稳定与成熟:历经了各届天猫双11及阿里云各行业客户业务的考验。"去IOE"的目的绝不仅仅是摆脱几个传统IT厂商的产品,而是在互联网+、云计算快速兴起后,企业用户迫切需要能够保证其业务发展和创新的更加开放、灵活、高效的IT基础架构。概括地说,"去IOE"推动了用横向扩展取代纵向扩展,用开源软件代替商业软件的进程,可以看作是云计算的奠基之举。
分布式:解决数据库的线性扩展性。所有节点之间互相不共享资源,节点间通过网络进行通讯,无论是存储还是计算资源,只要添加机器就可以了,具有良好的可扩展性。
开源与生态:MySQL原生分布式数据库。阿里云及开源社区的多种生态工具对PolarDB-X持续提供不断完善的支持。PolarDB-X积极拥抱并努力回馈MySQL生态,目前已经形成对MySQL生态从协议、语法、事务行为、账号体系、安全到命令行工具的全方位兼容。
(3) PolarDB-X 技术架构
基于透明分布式理念提供了默认主键拆分策略、基于TSO和MVCC的高性能强一致分布式事务、基于一致性Hash分区策略的分布式线性扩展能力、全局一致性Binlog和全局一致性备份能力。数据节点(DN)采用阿里巴巴自研的基于X-Paxos的三副本强一致MySQL分支,确保在容灾过程中RPO=0。
元数据服务(Global Meta Service,GMS):提供全局授时服务(TSO);维护Table/Schema、Statistic等Meta信息;维护账号、权限等安全信息。
存储节点 (Date Node,DN):基于多数派Paxos共识协议的高可靠存储;处理分布式MVCC事务的可见性判断。
计算节点(Compute Node,CN):基于无状态的SQL引擎提供分布式路由和计算;处理分布式事务的2PC协调、全局索引维护等。
日志节点(Change Data Capture,CDC):提供兼容MySQL生态的binlog协议和数据格式;提供兼容MySQL Replication主从复制的交互。
(4) PolarDB-X ~ 组件
CN/DN组件
计算节点:经历多年实战磨练,MySQL语法高度兼容;完整的SQL解析层,实现精准算子下推;Serverless无状态,弹性能力对业务透明;提供HTAP 并行计算能力,应对混合负载场景。
数据节点:基于AliSQL内核,历经多年考验,稳定可靠;基于Paxos强一致协议,高可用能力进一步提升;全局MVCC改造,满足持金融级一致性要;RPC协议改造,提升节点间通讯性能。
CDC组件
CDC节点:EX:并行采集所有DN的变更日志;MR:分布式事务日志/DDL排序重组;DP:全局日志落盘并提供标准Binlog服务。
全局Binlog:兼容事务,分布式事务全局排序(例:基于TraceId、TSO信息对Binlog全局排序);兼容分布式DDL(例:可支持DDL同步到下游,比如ADB);兼容分布式扩缩容(例:屏蔽内部分片迁移、广播表、索引等数据干扰)
主备Replication:兼容MySQL生态的主备复制;兼容DTS的上下游生态。
(5) PolarDB-X 典型业务场景
1.交易订单及相关高并发场景
典型用户有互联网电商、物流出行等,其特点是数据量大/并发高、相互联系较弱。
2.海量数据集中存储,大表拆分+高并发
典型用户有泛互联网、数字*等,其特点是集中式存储,数据单表过大有并发。
3.MyCat/Sharding-JDBC/TiDB的用户
典型用户有基于开源自建的MySQL生态,其特点是有扩展性诉求、运维复杂性的痛点。
4.有分布式改造诉求
典型用户有架构转型的业务,金融、通讯等,其特点是认可分布式方向,关注单机平滑演进。
二、分布式的技术挑战
分布式的焦点问题有以下几点:
分布式下的数据一致性:跨分片的分布式事务;主备数据的一致性;跨地域容灾 (RPO/RTO);数据备份和恢复 (PITR、Flashback)。
业务改造和生态适配:数据如何拆分和改造;分布式下的扩缩容;分布式的SQL兼容性;分布式运维能力 (DDL、慢SQL优化);数据库导入导出。
那么分布式是如何解决这些问题的呢?
(1) PolarDB-X 分布式事务
PolarDB-X通过引入中心授时节点(TSO),结合多版本并发控制(MVCC),确保读取到一致的快照,而不会读到事务的中间状态。如下图所示,提交事务时,计算节点(CN)执行事务时从TSO获取到时间戳,随着数据一同提交到存储节点(DN)多版本存储引擎上,CN通过读取快照时间戳去DN上读取相应版本的数据。
分布式事务的下游生态包括读写分离的一致性、全局变更日志CDC、备份恢复的一致性。
PolarDB-X是兼容MySQL生态的分布式数据库。通过集群内PolarDB-X的CDC组件,能够提供与MySQL binlog格式兼容的变更日志,并且对外隐藏掉集群扩缩容、分布式事务、全局索引等分布式特性,获得与单机MySQL数据库一致的使用体验。
一致性备份恢复提供实例级任意时间点(精确到秒级)的历史数据恢复能力。PolarDB-X的一致性备份恢复能力特点是针对数据全量恢复场景、可指定任意时间点进行一致性恢复、备份策略可定制、备份无需锁库。当前仅有备份期间不支持扩缩容、仅支持同构恢复两方面限制。
以上图为例,假设PolarDB-X实例配置为每周一、周二和周五的零点进行备份。某天,需要将数据恢复到上周日的 14:25:26,那么系统会选择离恢复点最近的一个全量备份集,上周五零点的全量备份,并从周五零点开始重放全局binlog,直到周日14:25:26结束,从而获得所需的一致性快照。
当PolarDB-X存储资源MySQL主实例的读请求较多、读压力比较大时,可以通过读写分离功能对读流量进行分流,减轻存储层的读压力。
(2) PolarDB-X 透明分布式
让用户以单机MySQL数据库使用体验,操作分布式数据库是PolarDB-X一贯追求的目标。为此PolarDB-X提供了简单易用的透明分布式能力:
默认主键拆分,让移植到PolarDB-X的数据和业务摆脱对设计“分区键”的依赖;
高性能强一致分布式事务,PolarDB-X采用自研X-Paxos协议,保证数据存储在故障切换过程中RPO=0的基础上,使用TSO策略和分布式的MVCC能力保证了分布式事务的隔离性和一致性。
分布式线性扩展,PolarDB-X基于一致性Hash的分区策略,有效的进行负载均衡和热点抑制,且在扩展过程中保持计算下推和数据一致性的同时实现业务零感知。并行和流控能力为扩展期间业务连续性提供了有力保障。
全局Binlog和全局一致性备份,分别解决分布式数据库各节点数据库向下游流转的难题及各节点备份时间差造成的恢复一致性问题。
(3) 分布式扩缩容
通过分裂与迁移,实现存储层自动负载均衡。基于计算层透明的分片路由,屏蔽扩缩容对用户业务的影响。
(4) 分布式 SQL 和 兼容性
兼容 MySQL SSL、Prepare、Load等传输协议;兼容各种 DML、DAL、DDL、DCL等语法;兼容MySQL各种类型和精度,比如时间和浮点数;兼容MySQL Charset和Collation的大小写行为;兼容MySQL 8.0的视图、CTE、窗口函数等;兼容绝大部分 MySQL 函数,包含5.7 JSON;兼容绝大部分 information_schema 视图;兼容常用的 MySQL 客户端;兼容MySQL复制协议,比如Binlog/Replication等。
(5) 分布式 Online DDL
PolarDB-X引入了新的DDL执行引擎,开始支持DDL的任务管理,包括DDL执行过程中的任务状态查看、失败DDL任务的恢复和回滚等。
(6) 分布式慢SQL限流
在数据库会话或者慢日志中发现大量慢SQL,大量占用数据库资源,同时活跃会话数、CPU使用率、IOPS、内存使用率等监控指标一项或者多项处于高位。分析后发现这些慢SQL不属于核心业务,是优化不足的烂SQL,为保障核心业务的稳定运行,此时需要对其进行限流。限流规则:精确限制的目标用户,比如限制某个IP的用户的行为;指定要限制的SQL关键字 或 SQL模板,比如限制去参数化之后的一批慢SQL;设置限流的规则,比如并发度、等待队列等。
三、 总结
PolarDB-X 是MySQL原生分布式,原生提现在于可以让用户在现有的生态、机器、部署都可以充分利用,可以完全基于现有的生态去构建PolarDB-X。PolarDB-X 未来的目标是希望从单机的MySQL平滑演进到分布式,并提供公有云、专有云、软件版和DBStack多种部署形态满足不同行业客户的需求。
PolarDB-X 已全面拥抱开源,毫无保留地和全世界的社区共同成长,将高性能分布式数据库质量进一步提升,使用门槛尽可能降低。