暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

[重磅更新]PolarDB-X V2.3 集中式和分布式一体化开源发布(一)

小希 2024-09-26
525

架构简介

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行列混存架构,支持一键构建列存副本,通过行列混合查询全面加速在线分析能力。

架构形态的特点和选型建议:

形态

标准版(集中式)

企业版(分布式)

优缺点

特点:

  1. 主打MySQL 100%兼容性
  2. 小规格下(比如CPU<=32核),相比于分布式有性能优势,未来大规格需求可以平滑升级分布式

缺点:

  1. 单机MySQL下的B+Tree大表并发问题,单表行记录建议控制在500万~5000万
  2. 单机的scale up存在上限

特点:

  1. 主打分布式线性扩展,最大可支持1024节点,PB级别的数据规模
  2. 金融级容灾,支持同城3机房、两地三中心等容灾形态
  3. HTAP行列混存,内置列存副本加速在线分析能力

选型建议

  1. 需要MySQL,支持跨机房容灾,且满足RPO=0
  2. 需要低成本MySQL,且满足开源,业务可上可下
  1. 需要分布式并发扩展,解决订单交易类高并发
  2. 替代开源分库分表,解决运维问题
  3. 解决MySQL大表问题,基于分布式进行数据分片
  4. 需要分布式架构升级,且满足开源

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 标准版集中式
Paxos多数派

性能提升

sysbench oltp_read_write

300并发

200930.88

265322.61

↑32%

TPCC 1000仓

300并发

170882.38

249902.01 tpmC

↑46%

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论