架构简介
PolarDB-X 采用 Shared-nothing 与存储分离计算架构进行设计,系统由5个核心组件组成。
- 计算节点(CN, Compute Node)
计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。 - 存储节点(DN, Data Node)
存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。 - 元数据服务(GMS, Global Meta Service)
元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。 - 日志节点(CDC, Change Data Capture)
日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。 - 列存节点 (Columnar)
列存节点负责提供列式存储数据,基于行列混存 + 分布式计算节点构建HTAP架构,预计24年4月份会正式开源
开源地址:[https://github.com/polardb/polardbx-sql]
版本说明
梳理下PolarDB-X 开源脉络:
- 2021年10月,在云栖大会上,阿里云正式对外开源了云原生分布式数据库PolarDB-X,采用全内核开源的模式,开源内容包含计算引擎、存储引擎、日志引擎、Kube等。
- 2022年1月,PolarDB-X 正式发布 2.0.0 版本,继 2021 年 10 月 20 号云栖大会正式开源后的第一次版本更新,更新内容包括新增集群扩缩容、以及binlog生态兼容等特性,兼容 maxwell 和 debezium 增量日志订阅,以及新增其他众多新特性和修复若干问题。
- 2022年3月,PolarDB-X 正式发布 2.1.0 版本,包含了四大核心特性,全面提升 PolarDB-X 稳定性和生态兼容性,其中包含基于Paxos的三副本共识协议。
- 2022年5月,PolarDB-X正式发布2.1.1 版本,重点推出冷热数据新特性,可以支持业务表的数据按照数据特性分别存储在不同的存储介质上,比如将冷数据存储到Aliyun OSS对象存储上。
- 2022年10月,PolarDB-X 正式发布2.2.0版本,这是一个重要的里程碑版本,重点推出符合分布式数据库金融标准下的企业级和国产ARM适配,共包括八大核心特性,全面提升 PolarDB-X 分布式数据库在金融、通讯、政务等行业的普适性。
- 2023年3月,PolarDB-X 正式发布2.2.1版本,在分布式数据库金融标准能力基础上,重点加强了生产级关键能力,全面提升PolarDB-X面向数据库生产环境的易用性和安全性,比如:提供数据快速导入、性能测试验证、生产部署建议等。
2023年10月份,PolarDB-X 正式发布 2.3.0版本,重点推出PolarDB-X标准版(集中式形态),将PolarDB-X分布式中的DN节点提供单独服务,支持paxos协议的多副本模式、lizard分布式事务引擎,同时可以100%兼容MySQL,对应PolarDB-X公有云的标准版:https://help.aliyun.com/zh/polardb/polardb-for-xscale/pricing-of-polardb-x
01 集中式与分布式
1. 架构形态
PolarDB-X V2.3.0新增了标准版(集中式形态),因此后续的PolarDB-X开源形态主要分为:

- PolarDB-X 标准版,主打集中式架构,支持单机MySQL形态(100%兼容MySQL),基于自研分布式共识算法(X-Paxos)提供RPO=0的数据库能力
- PolarDB-X 企业版,主打分布式架构,高度兼容MySQL生态,支持强一致分布式事务和分布式并行查询,支持分布式水平扩展,可以从最小1个节点(集中式)扩展到1024个节点(分布式),构建集中式和分布式一体化的架构能力,后续的开源版本会发布HTAP行列混存架构,支持一键构建列存副本,通过行列混合查询全面加速在线分析能力。
架构形态的特点和选型建议:
形态 | 标准版(集中式) | 企业版(分布式) |
优缺点 | 特点:
缺点:
| 特点:
|
选型建议 |
|
|
2. 快速部署和体验
PolarDB-X 标准版采用一主一备一日志的三节点架构,性价比高,通过多副本同步复制,确保数据的强一致性。面向具备超高并发、复杂查询及轻量分析的在线业务场景。
现在我们来快速部署一个 PolarDB-X 标准版集群,它仅包含 1 个由三副本组成的DN节点。执行以下命令创建一个这样的标准版集群:
2.1. 基于k8s部署标准版
echo "apiVersion: polardbx.aliyun.com/v1
kind: XStore
metadata:
name: quick-start
spec:
config:
controller:
RPCProtocolVersion: 1
topology:
nodeSets:
- name: cand
replicas: 2
role: Candidate
template:
spec:
image: polardbx/polardbx-engine-2.0:latest
resources:
limits:
cpu: "2"
memory: 4Gi
- name: log
replicas: 1
role: Voter
template:
spec:
image: polardbx/polardbx-engine-2.0:latest
resources:
limits:
cpu: "1"
memory: 2Gi" | kubectl apply -f -你将看到以下输出:
xstore.polardbx.aliyun.com/quick-start created使用如下命令查看创建状态:
$ kubectl get xstore -w
NAME LEADER READY PHASE DISK VERSION AGE
quick-start quick-start-4dbh-cand-0 3/3 Running 3.6 GiB 8.0.18 11m当 PHASE 显示为 Running 时,PolarDB-X 标准版集群已经部署完成!
注意:生产环境部署时建议内存>=8GB,参考:https://doc.polardbx.com/deployment/topics/environment-requirement.html
2.2. 基于pxd部署标准版
version: v1
type: polardbx
cluster:
name: pxc_test
dn:
image: polardbx/polardbx-engine-2.0:latest
replica: 1
nodes:
- host_group: [172.16.201.11,172.16.201.11,172.16.201.11]
resources:
mem_limit: 2G说明:replica数据节点数目,标准版中默认设置为 1,分布式形态可以设置为多个
执行如下命令,即可在集群内一键部署 PolarDB-X:
pxd create -file polardbx.yaml部署完成后,pxd 会输出 PolarDB-X 集群的连接方式,通过 MySQL 命令行即可登录 PolarDB-X 数据库进行测试。
3. 性能测试
PolarDB-X 标准版集中式实例,基于Lizard分布式事务系统优化事务并发能力、相比于开源MySQL 8.0.34,在读写混合场景上有30~40%的性能提升。
详细性能测试情况如下:
机器用途 | 机型 | 规格 |
压力机 | ecs.hfg7.6xlarge | 24c96g |
数据库机器 | ecs.i4.8xlarge * 3 | 32c256g + 7TB的存储,单价:7452元/月 |
场景1:sysbench,表16张,单张表大小1千万
场景 | 50 | 100 | 150 | 200 | 250 | 300 |
oltp_point_select | 317151.01 | 464316.53 | 485389.86 | 487124.91 | 489078.48 | 487684.83 |
oltp_read_only | 291317.42 | 401566.17 | 420416.04 | 388937.68 | 382861.20 | 413884.86 |
oltp_read_write | 156294.12 | 199195.62 | 214608.23 | 228713.64 | 254317.93 | 265322.61 |
oltp_write_only | 38574.92 | 52876.25 | 59393.07 | 62235.96 | 65523.25 | 66866.19 |
oltp_update_index | 38005.13 | 51803.68 | 58119.58 | 62263.46 | 63918.22 | 64203.57 |
oltp_update_non_index | 39712.23 | 54418.94 | 64213.46 | 67319.67 | 69110.39 | 70028.34 |
场景2:TPC-C,1000仓
场景 | 50 | 100 | 150 | 200 | 250 | 300 |
1000 仓 | 173916.76 | 224736.03 | 241440.77 | 246228.18 | 247217.83 | 249902.01 |
场景3:对比开源MySQL(采用相同的主机硬件部署)
场景 | 并发数 | MySQL 8.0.34 | PolarDB-X 标准版集中式 | 性能提升 |
sysbench oltp_read_write | 300并发 | 200930.88 | 265322.61 | ↑32% |
TPCC 1000仓 | 300并发 | 170882.38 | 249902.01 tpmC | ↑46% |




