概述

文本介绍PolarDB-X集中分布式一体化的相关概念。

问题背景

选择集中式数据库还是分布式数据库一直是数据库选型讨论的热点。对于大部分中小企业来说,集中式数据库就能满足其日常的业务需求,其资源规模适中,成本适中,运维起来也比较简单。分布式数据库具备较高的性能,能够处理复杂的业务场景,满足客户对高吞吐、大存储、低延时、易扩展和超高可用数据库服务的需求。但是,分布式数据库的价格较高,技术门槛和运维成本都较高,对大部分中小企业来说其适用范围比较窄。

当然中小企业可能也会出现业务突增的情况,需要高并发高吞吐的数据库来处理业务,对数据库的扩展性有一定的要求。或者随着业务规模的发展,使用集中式数据库的业务也会有分布式扩展的需求。

因此云原生数据库PolarDB分布式版(简称“PolarDB-X”)推出集中分布式一体化的能力,在一套数据库上兼具分布式数据库的可用性与扩展性和集中式数据库的功能与性能。

核心能力

在集中分布式一体化数据库中,数据节点被独立出来作为集中式形态,完全兼容单机数据库形态。当业务增长到需要分布式扩展的时候,架构原地升级成分布式形态,分布式组件无缝对接到原有的数据节点,不需要数据迁移,也不需要应用侧做改造,即可享受分布式带来的可用性与扩展性。

下面针对PolarDB-X集中分布式一体化技术的几项核心能力进行介绍。

集中分布式一体化的产品形态

PolarDB-X的产品主售形态主要分为标准版(集中式形态)企业版(分布式形态),详情如下:

image.png

集中式形态:标准版

PolarDB-X标准版是集中式形态,由分布式中的数据节点(DN)多副本单独提供服务。标准版最小支持2核4 GB规格,详情请参见规格说明

image.png

PolarDB-X标准版采用Paxos的多数派复制协议,相对于MySQL的主备复制协议,能保证副本间的强一致性,满足RPO=0以及RTO<30秒,很好地满足金融级场景的容灾诉求,详情请参见高可用概述。同时自研Lizard分布式事务引擎,相比于MySQL开源有有更好的高可用、以及30~40%的性能提升。

购买PolarDB-X实例时,系列可以选择标准版,详情请参见创建实例

分布式形态:企业版

PolarDB-X企业版是分布式形态,包含完整的分布式组件,包括:计算节点(CN)、数据节点(DN),日志节点(CDC),列存节点(COLUMNAR)和元数据中心(GMS)。其架构如下所示:

image.png

PolarDB-X企业版高度兼容MySQL生态,支持强一致分布式事务和分布式并行查询,支持分布式水平扩展,可以从最小1个节点(集中式)扩展到1024个节点(分布式),支持千万级QPS、以及PB级别的数据规模。

购买PolarDB-X实例时,系列可以选择企业版,详情请参见创建实例

标准版升级至企业版

随着业务的高速发展,PolarDB-X标准版用户可能会遇到集中式的瓶颈,例如单表过大导致查询效率下降、高并发查询导致数据库长期处于高负载状态、无法满足分析型需求等,此时对数据库做垂直升配,已经无法解决问题,且性价比不高。

PolarDB-X提供标准版实例原地升到企业版实例的能力,借助分布式特性和HTAP功能来解决集中式数据库上遇到的问题,同时满足使用单机MySQL数据库的体验与性能。

image.png

上图给出了PolarDB-X标准版原地无缝升级到企业版的过程。无缝升级包括如下几个方面:

  • 标准版和企业版采用统一的数据底座(DN),升级过程直接为标准版增加 CN、CDC、GMS 等分布式的组件,无需数据迁移。无论是切换还是回滚,写的都是一份数据,不用担心数据错乱。

  • 集中式表原地转换成分布式单表,结合PolarDB-XOnline DDL的能力,便能享受分布式的扩展性。

  • 标准版升级企业版后,连接串不变,无需业务变更,升级过程仅存在分钟级连接闪断。

  • 透明分布式,深度兼容集中式MySQL生态,无需应用改造,详情请参见MySQL兼容性

对于从标准版升级至企业版的用户,往往会担心分布式特性带来的额外性能开销。针对这一问题,PolarDB-X结合表组与分区组的技术,保证了关联数据按照集中式的形态分布,从而对分布式事务和复杂查询进行优化,在单分区场景下对齐集中式形态的性能。

存储资源池与弹性规格

PolarDB-X在面向分布式线性扩展设计上,针对集中式的能力,引入存储池和Locality的概念, 帮助用户按需进行分布式扩展。

  • 存储资源池:将DN存储节点划分为互不交叉的资源池,支持在单个存储池维度添加/减少 DN 存储节点。

  • Locality,将数据库中的对象(数据库、表、分区)通过Locality 属性关联到不同的资源池。

image.png

下面结合两个典型场景介绍存储资源池与Locality是如何帮助用户按需进行分布式扩展的:

  • 场景1:如果原来的集中式业务是多租户的SAAS系统,从标准版升级到企业版后,可以通过垂直拆分的方式,将租户打散到不同的存储资源池,每个资源池仍维持单表的形式,实现分布式的扩展,如上图中的存储资源池 1 所示。

  • 场景2:如果原来集中式是电商业务,随着用户量和并发量的增加,需要进行水平拆分,将集中式的数据水平拆分打散到一个资源池的多个DN节点上实现扩展的目标,如上图中的存储资源池 3 所示。

下图展示了集中式的数据在分布式形态下,如何利用 Online DDL 的能力需进行分布:

image.png

  • 原始业务的多个单表,可以继续保持单表的形态,演进为分布式的垂直拆分,通过扩展单个存储池内的分布式节点后,可以实现多个单表在存储池多DN节点上的均衡分布。

  • 原始业务的大表,可以在线变更为分布式表,演进为分布式的水平扩展,通过扩展单个存储池内的分布式节点后,分布式表的partition会自动进行数据均衡调度。

  • 原始业务的多张表,大表在线变更为分布式表,单表继续保持并划分到多个存储池,整体演进为分布式的垂直拆分、水平拆分的组合场景,通过资源扩展实现线性能力。

对于每个数据节点(DN),由于数据分布的不同,实际对资源的需求也有区别。PolarDB-X支持针对每个DN节点单独升降配,实现灵活的弹性规格,提升整体的资源利用率。

如何管理存储资源池与数据节点弹性规格详见数据节点管理