首次公开,阿里云开源PolarDB总体架构和企业级特性

简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家北侠带来了主题为《PolarDB 总体架构设计和企业级特性》的精彩演讲。

在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家
北侠带来了主题为《PolarDB 总体架构设计和企业级特性》的精彩演讲。主要分享了存储计算分离架构、HTAP架构、节点高可用架构是PolarDB 可支持的三种架构,PolarDB还具备可用性、高性能、安全的企业级特性。并对PolarDB 总体架构和企业级特性进行展开分析。

直播回顾视频:开源PolarDB企业级架构重磅发布-阿里云
PDF下载: 文件下载-阿里云开发者社区

以下根据发布会演讲视频内容整理:

PolarDB 是阿里云自主研发的云原生数据库,它的源代码已经全部开源(源码仓库地址:https://github.com/ApsaraDB/PolarDB-for-PostgreSQL )。下面将为大家详细解读开源 PolarDB 的总体架构和企业级的特性。

一、PolarDB总体架构设计

PolarDB 的基础架构是云原生架构。传统数据库由主库、备库和一个 Standby节点构成,主库复制redo日志到备库。传统数据库的架构存在以下四个问题:

① 扩展性差。增加节点的时候需要先将数据完整复制,花费的时间通常是小时级别甚至更长。

② 可靠性差。主库和备库之间需要采用同步复制,会导致性能下降大概 20% 以上;如果采用异步复制,则会发生数据丢失的风险。

③ 可用性差。主库发生了故障后, HA 会切换到备库。新的备库需要回放大量 redo 日志才能进入可服务的状态,该过程可能需要分钟级别的耗时。

④ 成本高。存储成本会随着节点数目的增加而呈线性增加,此外还需要预留一些资源。

为了彻底解决以上问题,PolarDB提出了云原生的架构,将计算和存储资源解耦。

上图左侧是传统的数据库,它的 CPU 、内存、存储都在一台服务器上,称作计算存储一体化。右侧是 PolarDB 的架构,它分成了计算节点和存储节点两种类型的节点。数据存储在由存储节点构成的存储池里,各个计算节点通过高速网络读取存储池中的数据。

计算存储分离的架构的优势在于以下几个方面:

① 极致的、弹性的扩展能力:存储和计算能够分别独立地扩容。

② 降低存储成本:那么计算集群扩展到多少个,数据始终只有一份。

③ 易用性:具备分布式的优势和单机数据库的体感,因为每个计算节点都能看到所有数据。对于用户来说,任何一个计算节点就相当于是一个单机数据库。

④ 可靠性比较高:底层共享存储提供了三副本以及秒级快照的功能,为数据库的备份提供了比较便捷的方式。

PolarDB 不仅设计研发了计算存储分离的架构,还在在数据库的模块栈上进行了大量优化。

在事务层,实现了 CSN 快照来代替传统的事务快照;在日志层,实现了 LogIndex 这样核心的数据结构,解决了在计算存储分离架构下遇到的特有的过去页面以及未来页面的数据问题,同时实现了延迟回放和并行回放;在缓存层,实现了常驻的 BufferPool 和多版本页面;在存储层,实现了 DirectIO 模型页面的预读和预扩展的能力。

此外,用户还经常需要对 TP 事务的数据进行复杂的分析查询,比如在夜里做汇总报表和对账。此类查询一般都是一些非常复杂的 SQL ,但并发不高,是典型的 OLAP 场景。

最初 PolarDB 的计算存储分离架构在处理这类复杂的 SQL 时,只能由单个计算节点来计算,无法发挥出计算集群的整体算力,同时也没有办法发挥出存储池大带宽的特性。

当时业界的解决方案通常有两类:

① 在原有的 TP 系统外面部署一套 AP 系统,将 TP 的事务数据通过日志导入到 AP 系统。此方案存在的问题在于两个系统之间的延迟比较高,会导致数据的新鲜度不高。另外,部署一套独立的 AP 系统会导致存储和运维的成本增加。

② 在原有的 TP 系统上就地执行 AP 查询,但这势必会造成 TP 和 AP 两种业务互相影响。另外, AP 系统也没有办法做弹性的扩展。

因此, PolarDB 研发了一个基于共享存储的分布式计算引擎,这也是业界首创的解决方案。该方案具备以下优势:

① 它是一个一体化的存储方案,TP 和 AP 共用一份存储在共享存储上数据。相比于两套系统,它减少了存储成本,同时也提供了毫秒级的数据新鲜度,即在 TP 系统里插入了一条数据,在 IP 系统里可以以毫秒级的速度查询到。

② TP 和 IP 是物理隔离、互相不影响的。由部分计算节点执行单机的引擎来处理高并发的 TP 查询,由另外一部分节点执行分布式的查询引擎来处理复杂的 AP 查询。

③ 具备弹性扩展能力。系统面度一些复杂的 SQL 时,出现算力不够的情况,即可快速增加计算节点,新的节点也可以迅速增加到分布式的计算引擎的集群里。

相比于传统的 OLAP 系统,它是一个即时生效的系统,不需要做数据的重分布和重打散,性能上有了巨大的提升。

在共享存储上实现一个完备的分布式计算引擎需要实现以下几个模块:

① 分布式优化器。优化器会根据数据分布特征生成一个分布式的执行计划数。PolarDB 是基于 GPORCA 优化器框架做的二次开发,在开发过程中,需要让优化器感知到数据是共享的。GPORCA优化器框架是基于 share-nothing ,因此应用到 PolarDB 势必要增加很多规则转换。

② 分布式执行器。为了实现分布式执行器,需要实现一整套完整的并行化的算子。比如在做数据扫描的时候,因为在 PolarDB里底层数据是共享的,各个计算节点在做顺序扫描的时候就需要做扫描算字的并行化。这些算子最后会组装成火山执行模型。

③ 事务一致性。由于分布式执行跨了多个计算节点,需要使用统一的数据位点和快照来进行事务的可见性判断,才能保证各个节点查询到的数据是全值一致性的数据。

④ SQL 全兼容。为了使新的分布式计算引擎能够被用户的业务使用,还需要对 SQL 的标准进行大量兼容性的开发工作。

PolarDB 除了能够以计算存储分离的方式运行在一个共享存储的设备上,也能支持三节点高可用的模式。此模式可以不需要依赖共享存储的设备,以本地盘的模式来运行。

首先,节点之间通过 X-Paxos 算法来对 redo 日志进行复制,以保证在region 内部能够提低延迟同时 RP=0 的可用性。

其次,借助X-Paxos算法的复制实现了自动 failover 当leader 节点宕机时,无需 DBA 人员介入,算法能够自动选出一个新的 leader 来自动恢复。

此外,还可以借助 X-Paxos 算法实现集群成员变更。与此同时,PolarDB还实现了 log 节点(即节点上只有 redo 日志没有数据页),可以通过用两个正常的节点加上一个 log 节点,实现2.5副本的方式,降低成本。

在跨region场景下,通过 log 节点实现了两地三中心的高可用部署方式。如上图, region1 是一个独立的X-Paxos 三节点高可用的模式, region2 是一个独立的 DB 部署,并在同城的另一个机房里去部署一个 log 节点。那么 region 1 和同城 log 节点之间可以采用同步复制或异步复制,而由于是在同一个城市内部,延迟也比较低,这样即实现了两地三中心的高可用的部署方式。

系统还兼容了原生的流复制和逻辑复制,用户可以在下游部署一套自己的标准的 PostgreSQL 数据库来消费上游的 redo 日志。

对于前文提到的三个 PolarDB 架构,用户可以根据业务场景对其进行自由组合来使用。比如通过云原生+HTAP组合,可以满足对弹性、 TP 和 AP 都有需求的业务。并且,三种架构的自由组合是在一套二进制里实现的,用户只需要在配置文件里面进行简单的配置,即可实现这三套架构的自由组合。

二、PolarDB企业级特性

PolarDB 的企业级特性有四个方面。

① 架构上的支持,前文已经进行了详细的讲解,此处不再赘述。

② 高性能。

  • 1) PolarDB 实现了 CSN 快照和WAL日志的流水线,解决了高并发下临界区的问题。
  • 2) 实现了预读和预扩展、RelSizeCache以及 CLOG 的优化。那么这些优化是针对DirectIO 模型下 IO 的优化。存储计算分离之后,存储的每一个 IO 都需要通过网络去访问后端的存储池,与原生场景下存在一些差异,因此需要对其进行大量的优化工作。
  • 3) 研发了logIndex 核心数据结构,它记录了每个页面历史上发生的redo日志。它不仅能解决在计算存储分离下特有的过去页面和未来页面数据正确性的问题,还解决了 PB 数据库特有的半写问题。

③ 高可用。

  • 1) 实现了 DataMax ,它提供了 log 模式来支持两地三中心的部署,还实现了 Online Promote 、延迟回放和并行回放。这三个大的功能优化了崩溃恢复的速度,缩短了 DB 进程崩溃时的不可用时间。
  • 2) 实现了常驻BufferPool ,DB 进程重启后, buffer 需要重新初始化,而目前的机器配置会导致 buffer 越来越大,进而使得buffer 的初始化需要耗费大量时间。
  • 3) 提供了Replication Slot 解决了 DB failover时slot 的丢失问题。它借助共享存储,将 slot 的信息存储到共享存储上,以此解决了复制槽丢失的问题。
  • 4) 实现了算子级别的内存控制,为每个算子的内存设置了一个上限,避免了因单个算子内存过多而导致整个 DB 进程崩溃。

④ 安全。PolarDB 提供了透明加密的功能,保证存储在盘上的数据是加密后的数据。目前透明加密支持 AES 128位 和 AES 256位 以及国密 SM4 的加密算法。

三、PolarDB开源社区

PolarDB已经开源至 github 。源码仓库地址:https://github.com/ApsaraDB/PolarDB-for-PostgreSQL

在开源的过程中,我们坚持的策略就是100% 兼容社区标准的 PostgreSQL, 保证用户能够从标准的单机PostgreSQL 无缝迁移到 PolarDB 上。其次,我们将所有组件全部开源,包括PolarDB内核、PolarDB分布式文件系统和PolarDB云管控,并承诺开源的代码与公有云上的代码完全一致。

开放云代码的同时,我们还提供了丰富的文档和视频资料,比如架构原理文档、核心功能文档、快速入门文档。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云数据库开源发布:PolarDB HTAP的功能特性和关键技术

简介:在3月2日的阿里云开源 PolarDB 企业级架构发布会上,阿里云 PolarDB 内核技术专家严华带来了主题为《PolarDB HTAP详解》的精彩演讲。在PolarDB存储计算分离架构的基础上,我们研发了基于共享存储的MPP分布式执行引擎,解决了单…

倒计时 2 天!2022 中国算力大会:移动云邀您共见算力网络,创新发展

7 月 29 日 - 31 日由工业和信息化部、山东省人民政府主办的首届中国算力大会将在泉城济南盛大举行!中国移动受邀承办“算力网络,创新发展” 论坛并设立展区分享行业前瞻洞察,构建开放共赢生态7 月 29 日下午,邀您共话算力精彩&am…

什么是好的错误消息? 讨论一下Java系统中的错误码设计

简介:一个好的Error Message主要包含三个部分:Context: 什么导致了错误?发生错误的时候代码想做什么?The error itself: 到底是什么导致了失败?具体的原因和当时的数据是什么?Mitigation: 有什么解决方案来…

阿里巴巴在开源压测工具 JMeter 上的实践和优化

简介:Apache JMeter 是 Apach 旗下的开源压测工具,创建于 1999 年初,迄今已有超过 20 年历史。JMeter 功能丰富,社区(用户群体)庞大,是主流开源压测工具之一。 作者:灵苒、涧泉 Ap…

普洛斯荣获两项“数据中心绿色等级评估”5A级认证

7月29日,由工业和信息化部及山东省人民政府主办的首届中国算力大会在济南成功举办,会上同时公布了本年度“数据中心绿色等级评估”评审结果。普洛斯常熟东南数据中心B栋及普洛斯怀来数据中心3号楼均荣获“数据中心绿色等级评估”(规划类/基础…

深度解读企业云上办公利器「无影云电脑」

简介:信息化进程高速发展的今天,用户桌面办公的需求正不断发生变化:远程办公,BYOD的需求不断增长;快速交付,高效运维的需求接连上升;数据及网络安全的关注度持续提高;整体办公成本在…

云风:不加班、不炫技,把复杂的问题简单化

小学时跟随母亲去成人大学学习编程,初中开始参加信息学奥赛,高中写出人生中第一个成熟软件——Cview,大学发布开源软件风魂系列,后用于网易开发的《大话西游》《梦幻西游》等热门游戏,离开网易创立简悦科技……随着云风…

Timing:在线自习室快速搭建

通过超低延迟的音视频通信技术、视频连麦、弱网传输算法,快速搭建自习场景,提升自习效率。 客户简介 氪细胞主打产品Timing,是国内最早推出,也是规模最大的在线自习室,是新一代的教育与社交融合平台,主打高…

Nacos2.0的K8s服务发现生态应用及规划

简介:Nacos 是阿里巴巴于 2018 年开源的注册中心及配置中心产品,帮助用户的分布式微服务应用进行服务发现和配置管理功能。随着 Nacos2.0 版本的发布,在性能和扩展性上取得较大突破后,社区开始考虑如何提供更加云原生方向的功能和…

webview 和 React Native 中吸顶效果实现

作者 | 👽来源 | Sharing一、前言 在跨端开发中,离不开一些吸顶的交互场景,可以参考淘宝或是京东类电商 app 中一些 tab ,在整个容器滑动的过程中,吸顶效果非常的连贯和丝滑的,当然这些 tab 可能是用 nativ…

AHPA:开启 Kubernetes 弹性预测之门

简介:阿里巴巴云原生团队和阿里达摩院决策智能时序团队合作开发 AHPA 弹性预测产品,该产品主要出发点是基于检测到的周期做“定时规划”,通过规划实现提前扩容的目的,在保证业务稳定的情况下,让你真正实现按需使用。 …

Kubernetes 在科技革命中的演变

作者 | Anthony Spiteri仅在一两年前,对于那些希望通过向现代数据平台转型走在前沿的企业来讲,容器化可是热门词汇。Kubernetes,也被称为 K8s,当时还不成熟,仅处于起步阶段,对更广泛的IT界来说仍然有些陌生…

在阿里巴巴,我们如何先于用户发现和定位 Kubernetes 集群问题?

简介:本文整理自阿里云高级研发工程师彭南光(光南) 在 KubeCon China 2021 大会的演讲实录,分享了阿里巴巴是如何通过自研通用链路探测定向巡检工具 KubeProbe 应对大规模集群的稳定性挑战的。关于阿里云云原生团队在本次 KubeCon 上分享的全部内容沉淀于…

“虎力全开”采购季,存储产品已就位

简介:两百多年前,有个叫吴锡麒的少年,在“江南三月听莺天,买酒莫论钱”。如今又逢暮春三月,一年一度的开年大促——阿里云上云采购季也拉开了序幕。 两百多年前,有个叫吴锡麒的少年,在“江南三月…

武汉高性能计算大会2022举办,高性能计算生态发展再添新动力

武汉高性能计算大会2022会上,华为重磅发布了鲲鹏高性能计算解决方案,为了进一步推进高性能产业的生态繁荣,武汉高性能计算产业联盟成立启动,长江欧拉生态创新中心签约并揭牌,首批鲲鹏科研创新使能计划成员也正式亮相。…

学信网:研究生云复试平台快速搭建上线

通过覆盖全球的音视频通信服务,支撑学信网视频面试稳定运行和效率提升。 案例简介 研究生复试工作碰到疫情,各大院校先后发布复试流程调整通知,将复试工作从线下搬到了线上,这也是历史上的第一次。要在短期内完成视频面试系统的…

企业深入使用微服务后会面临哪些问题?云原生全链路灰度给了新思路

简介:如何落地可灰度、可观测、可回滚的安全生产三板斧能力,满足业务高速发展情况下快速迭代和小心验证的诉求,是企业在微服务化深入过程中必须要面对的问题。在云原生流行的当下,这个问题又有了一些新的思路与解法。 作者&#…

40 张图 详解 Docker 容器监控

作者 | 飞向星的客机来源 | CSDN博客前言在企业中,通常业务是不允许随意停止的,否则将给企业带来巨大的经济损失。运维工程师要保证业务正常运行,就必须利用工具时刻监控业务的运行状态,容器中的业务也不例外。除了容器自身的监控…

Spring Cloud Gateway 突发高危漏洞,下一代云原生网关恰逢其时?

简介:Log4j2 的漏洞刚告一段落,Spring 官方在 2022 年 3 月 1 日发布了 Spring Cloud Gateway 的两个 CVE 漏洞:分别为 CVE-2022-22946(严重性:Medium)与 CVE-2022-22947(代码注入漏洞&#xff…

云小蜜 Dubbo3.0 实践:从微服务迁移上云到流量治理

简介:阿里云-达摩院-云小蜜对话机器人产品基于深度机器学习技术、自然语言理解技术和对话管理技术,为企业提供多引擎、多渠道、多模态的对话机器人服务。17 年云小蜜对话机器人在公共云开始公测,同期在混合云场景也不断拓展。为了同时保证公共…