云原生分布式数据库PolarDB技术深度解密

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 无论是部署量还是规模上,开源生态正在超越商业数据库的生态。目前不断涌现的数据库,通常都会兼容开源生态或者自己开源。数据库的发展演进从最初在云下,后来慢慢到了云上,如今又有走向云下的趋势。我们发现,原来商业数据库的一些东西又回来了,如很多大客户喜欢的特性,是开源数据库不具备,而商业数据库所擅长的。如何在开源数据库上做好企业级特性,我们在这上面做了大量的工作。

一、基础设施和数据库的演化趋势


(一)数据库演化趋势


640.png


数据库可以分为三个时代,第一个时代是IT时代的商业数据库时代,经典产品有Oracle和DB2,计算的基础设施是IOE,主要客户是大中型企业。


第二个时代是互联网时代的开源数据库,当时许多公司的数据库主要是LAMP,目前行业的许多数据库技术也是从这个时代积累而来。


第三个时代是万物互联时代的云原生数据库,有了共享云存储,做了存储计算分离,以前高端的硬件慢慢在普适化。


无论是部署量还是规模上,开源生态正在超越商业数据库的生态。目前不断涌现的数据库,通常都会兼容开源生态或者自己开源。


数据库的发展演进从最初在云下,后来慢慢到了云上,如今又有走向云下的趋势。我们发现,原来商业数据库的一些东西又回来了,如很多大客户喜欢的特性,是开源数据库不具备,而商业数据库所擅长的。如何在开源数据库上做好企业级特性,我们在这上面做了大量的工作。


(二)基础设施演化趋势


2.png


上图为阿里云数据库基础设施演化趋势,从最初的On-Premises机房,到如今的公共云。为了更好地服务客户,阿里云在公共云的基础上,衍生出了四种形态。


  • 本地云

1)公共云控制台

2)网络互通

3)新购+利旧

4)弹性极强


从本质上看,公共云像一个大机房,本地云是一个小的机房,小机房和大机房体验基本一致。


  • 专有云

1)独立控制台(飞天标准底座)

2)网络可隔离,可控性更强

3)官方+伙伴托管

4)100~1000台,弹性强


专有云规模较大一些,和公共云网络是弱连接,通常情况下选择这种形式的客户对安全性保密性要求比较高。


  • 敏捷专有云

1)DBStack(飞天敏捷底座)

2)网络可隔离,产品可选配

3)官方+伙伴托管

4)10~100台,弹性适中


阿里云有一款产品叫DBStack(飞天敏捷底座),可以脱离硬件存在。


比如客户要做去O,去完之后剩下的硬件可以直接部署DBStack(飞天敏捷底座),上面运行RDS,ADB,ADS等,是一套完整的数据解决方案。


  • 被集成

1)第三方集成(无底座)

2)嵌入客户解决方案

3)软件/软硬一体

4)官方+伙伴托管


通过线下集成商的分发渠道,我们可以将数据库技术包装在他们的产品中,直接对外分发。比如像超图,其内核能力就是阿里云的产品PolarDB。



二、PolarDB企业级特性解读


(一)PolarDB-X 2.0整体架构


PolarDB-X是PolarDB的分布式版,我们在2021年3月份对PolarDB-X进行架构升级到2.0版本,升级后的架构如下所示。


33.jpg

PolarDB-X 2.0整体架构图


PolarDB-X 2.0主要有以下特性:


1. 元数据服务(Global Meta Service,GMS)

  • 提供全局授时服务(TSO)
  • 维护Table/Schema、Statistic等Meta信息
  • 维护账号、权限等安全信息


2. 存储节点 (Date Node,DN)

  • 基于多数派Paxos共识协议的高可靠存储
  • 处理分布式MVCC事务的可见性判断


3. 计算节点(Compute Node,CN)

  • 基于无状态的SQL引擎提供分布式路由和计算
  • 处理分布式事务的2PC协调、全局索引维护等


4. 日志节点(Change Data Capture,CDC)

  • 提供兼容MySQL生态的binlog协议和数据格式
  • 提供兼容MySQL Replication主从复制的交互


要特别强调的是,在一个分布式数据库里面Binlog分为许多份,日志节点可以和全局授时服务相结合,把分布式的多份Binlog合成一份,这对MySQL用户非常友好。


(二)PolarDB-X 2.0强一致MVCC事务


有了全局授时时钟之后可以做全局强一致MVCC事务。虽然它是一个分布式的数据库,但是无论从性能、产品体验还是生态工具上,使用体验接近于一个单机MySQL,而且可以无限线性扩展。


4.jpg

5.jpg


(三)PolarDB-X 2.0 CDC


在2.0架构之前,很多客户抱怨在云上用PolarDB时,如果要把日志同步到线下机房做数据分析,无法搭起链路。


2.0架构上线之后这个问题可以通过CDC特性解决。只要一条网络链路,就能把数据全部同步,并且我们做了一个聚合,保证全局事务的顺序。


6.jpg


CDC特性如下:

1.全局 binlog

  • 兼容事务 (分布式事务全局排序)

例:基于TraceId、TSO信息对Binlog全局排序

  • 兼容分布式DDL

例:可支持DDL同步到下游,比如ADB

  • 兼容分布式扩缩容

例:屏蔽内部分片迁移、广播表、索引等数据干扰


2. 主备 Replication

  • 兼容MySQL生态的主备复制

例:MySQL作为PolarDB-X的备库,支持数据回流能力

  • 兼容DTS的上下游生态

例:打通Oracle/DB2/PolarDB/ADB等数据库生态


如上图所示,PolarDB-X的两个集群可以互相做主备,MySQL和PolarDB-X也可以做主备切换,具备很好的生态兼容性。


(四)PolarDB HTAP


在过去的这段时间,PolarDB在分析能力上也做了很大的提升,下方是PolarDB单机并行的架构图。


7.jpg


并行查询特性如下:

  1. 通过分割B+Tree来分配任务,每个线程(Worker)关注一部分分区。
  2. 通常上层Server层计算的线程数远远小于分区数,使得每个线程可以得到的数据计算分区很多。
  3. “Fast”的worker线程可以处理更多的较小数据分区,“slow”的线程处理较少的但是比较大的数据分区,从而达到整体计算无差别。
  4. 每个工作线程可以自动去获取下一个要处理的数据分区(Round Robin模式)。


上方讲的是单机的SMP,我们还在多机上并行执行,如下图所示。


8.jpg


目前单机的加速效果将近15倍,如果上方的MTP这个架构出来,整体还会有一个更大的提升。


9.jpg

TPCH 加速效果显著


  • TPCH 100G 32core/512G (BP 170 GB) (32 并发 vs 不开并发);
  • TPCH 100% SQL 可被加速,73%加速比超过8倍,总加速近15倍。


(五)PolarDB Global Database


10.jpg


如上图所示,PolarDB Global Database分为三个地方,张北、香港和美国硅谷。


PolarDB Global Database四大特性:

  • 全球部署(Global Deployment)

数据跨地域同步,提供全球跨地域的容灾能力。RPO=0  SLA为99.99%

  • 就近读加速(Accelerate by Reading the Nearest Node)

读操作就近读取数据,适合不同地域读多写少的场景。


  • 多通道物理复制(Multi-Channel Physical Replication)

提供数据跨地域的高速同步,大压力场景下全球同步延迟确保在2秒以内。


  • 多点跨地域写(Write to Multi Zones and Regions)

提供多点跨地域写功能,提供业务的多地部署能力。


传统的MySQL部署三地模式一般用Binlog同步,Binlong存在的问题是遇到大事务容易卡住。PolarDB用Redo做物理复制,而且它是多通道的,可以做并行复制与延迟同步。延迟同步的好处是存在更改余地,比如和美国硅谷做近实时同步,和香港做半天延迟同步,防止删库等误操作,安全系数非常高。


(六)PolarDB 热备


11.jpg


PolarDB还有一个非常好的特性,那就是PolarDB热备。


HRO特性:

1)内存和Redo实时同步;

2)主备切换秒级;

3)升降级切换不可用时间控制在5秒以下;

4)通过voting disk 进行主动故障切换。


Oracle的Rock主要是做高可用,一般超过两个节点的用户很少,四个节点更是凤毛麟角。通常情况下,用户的两个节点一个做写的负载均衡,还有一个做高可用,这在电信场景里面非常常见。


PolarDB的为写节点提供热备,这个热备会同步Buffer Pool,然后会把内存和Redo实时同步,在发生切换时,可以在极短的时间完成,保证业务稳定运行。


(七)PolarDB 多租户


PolarDB还有一个特性是多租户多写。


多写的意思是每个写节点负责不同的表,比如在某个SaaS场景中,一个数据库服务100个用户,这100个用户的数据互相隔离,每个用户可读可写,每个写节点之间的数据互不干扰,这种场景用一个PolarDB就可以支撑。


12.jpg


  • 多租户特性

1)多租户多写(multi-tenant multi-master);2)支持128个RW;3)支持non-conflict multi-master write;4)Partition/table/schema binds to RW;5)库表写入点秒级切换。


(八)PolarDB 混合云-DBStack


13.jpg


阿里云有个混合云叫DBStack,如上图所示,它既支持X86也支持ARM,能做国产化全加密一体机。


14.jpg


上图是运行在国产化全加密一体机上的管控平台,它和公有云的体验几乎是一致的,但是更小更清亮。



三、Roadmap


存储计算分离是这几年数据库发展中最重要的一个变化。近年来成功的商业数据库,如Snowflake、Oracle、RDS等,全部是存储计算分离的。


未来的PolarDB会做Share Nothing & Everything 一体化,架构图如下所示。


15.jpg


PolarDB Share Nothing & Everything 一体化架构优势:

  1. Leverage PolarDB已有基础设施,存储、管控、监控、审计等功能共享;
  2. Share Nothing基于存储计算分离架构,无限扩展,并且无需数据迁移,并可彻底消除传统分布式Data Skew问题;
  3. Share Everything场景写瓶颈大幅缓解,多节点可写;
  4. 无缝升级,可由单表直接转化成分布式表,一键操作即可完成分布式改造(alter table to partition_table by hash_range ***);
  5. 两种场景都有极强高可用性;
  6. 兼容性和扩展性都能完美支持,在兼顾legacy业务的同时帮助客户完成数字化转型升级。
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
5天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
3天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
5天前
|
Cloud Native 持续交付 云计算
云原生技术入门与实践
【10月更文挑战第37天】本文旨在为初学者提供云原生技术的基础知识和实践指南。我们将从云原生的概念出发,探讨其在现代软件开发中的重要性,并介绍相关的核心技术。通过实际的代码示例,我们展示了如何在云平台上部署和管理应用,以及如何利用云原生架构提高系统的可伸缩性、弹性和可靠性。无论你是云原生领域的新手,还是希望深化理解的开发者,这篇文章都将为你打开一扇通往云原生世界的大门。
|
3天前
|
弹性计算 Kubernetes Cloud Native
云原生技术的实践与思考
云原生技术的实践与思考
16 2
|
4天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
15 3
|
3天前
|
边缘计算 Cloud Native 安全
云原生技术的未来发展趋势
云原生技术的未来发展趋势
11 1
|
4天前
|
运维 Kubernetes Cloud Native
云原生技术在现代应用架构中的实践与挑战####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在实际项目中的应用案例,分析了企业在向云原生转型过程中面临的主要挑战及应对策略。不同于传统摘要的概述性质,本摘要强调通过具体实例揭示云原生技术如何促进应用的灵活性、可扩展性和高效运维,同时指出实践中需注意的技术债务、安全合规等问题,为读者提供一幅云原生技术实践的全景视图。 ####
|
3天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
14天前
|
弹性计算 Kubernetes Cloud Native
云原生架构下的微服务设计原则与实践####
本文深入探讨了在云原生环境中,微服务架构的设计原则、关键技术及实践案例。通过剖析传统单体架构面临的挑战,引出微服务作为解决方案的优势,并详细阐述了微服务设计的几大核心原则:单一职责、独立部署、弹性伸缩和服务自治。文章还介绍了容器化技术、Kubernetes等云原生工具如何助力微服务的高效实施,并通过一个实际项目案例,展示了从服务拆分到持续集成/持续部署(CI/CD)流程的完整实现路径,为读者提供了宝贵的实践经验和启发。 ####
|
6天前
|
消息中间件 存储 Cloud Native
云原生架构下的数据一致性挑战与应对策略####
本文探讨了在云原生环境中,面对微服务架构的广泛应用,数据一致性问题成为系统设计的核心挑战之一。通过分析云原生环境的特点,阐述了数据不一致性的常见场景及其对业务的影响,并深入讨论了解决这些问题的策略,包括采用分布式事务、事件驱动架构、补偿机制以及利用云平台提供的托管服务等。文章旨在为开发者提供一套系统性的解决方案框架,以应对在动态、分布式的云原生应用中保持数据一致性的复杂性。 ####

相关产品

  • 云原生数据库 PolarDB