云原生数据库 GaiaDB 的核心技术演进和解析

news2024/11/27 18:51:55

导读

在越来越强调云原生的环境下,存算分离作为一种新的架构理念,已经是大势所趋。新的技术架构带来新的问题和挑战,百度智能云的云原生数据库 GaiaDB 采用 Quorum 分布式协议、高性能网络、高可靠分布式存储引擎等技术实现更高的性能和可用性。

随着越来越多的企业将业务搬迁至云端,网络、计算和存储资源的弹性伸缩能力变得越来越重要。这些资源的弹性伸缩能力不仅可以帮助云上业务轻松应对业务尖峰,还可以大大降低资源闲置浪费,使得每一分资源都得到充分利用。作为核心基础设施之一,数据库在极致弹性和扩展性方面也进行了多种探索,例如数据的水平分片和分布式化改造。这些方法通过舍弃一部分通用性来增强扩展能力,在配合业务轻度改造的情况下,实现了很显著的体验提升。

然而,作为云上的基础设施,保证用户在迁移前后的业务一致性和可靠性是首要任务。因此,舍弃某些功能或兼容性的路线是无法被接受的。为了解决这个问题,云原生数据库 GaiaDB 应运而生。在保证对原有生态完全兼容的前提下,GaiaDB 使用存算分离技术以及多种内核深度定制优化方案,实现了最大 PB 级数据存储能力与秒级弹性扩缩容能力,使云上业务可以实现全栈弹性伸缩。

595832bf7463cb29f0e304d5206751dc.png

GaiaDB 的存算分离架构采用 Quorum 分布式协议、动态实时 MVCC 技术以及用户态高性能网络等技术,这些技术手段的应用对降低访问延迟和提高读写性能有很好的优化效果。此外,该架构不依赖于任何定制化硬件和基础设施,具有较强的通用性和经济性。

下面分别介绍一下 GaiaDB 的技术应用实践。

1. 分布式协议(DB-Quorum)

GaiaDB 基于「Log is database」的设计理念,即数据的修改只写日志,无需刷新脏页,这极大的降低写放大,简化系统 I/O。GaiaDB 针对 I/O 技术栈进行了充分的优化,从演化路径上看,经历了以下几个阶段:

  1. 分布式文件系统 I/O:

GaiaDB 初期存储使用通用的分布式文件系统作为存储底座存储 innodb redo log 和 innodb page。由于分布式文件系统要实现通用的文件一致性语义,其 I/O 提交和 I/O 收割都存在较多的队列调度和保序逻辑,因此其单线程的异步读写吞吐和延迟都离本地盘有较大差距。

2. 分布式 Raft I/O:

这个阶段,GaiaDB 使用 Raft 三副本进行 redo 日志的持久化,数据页的存储直接使用 peer 三副本持久化到本地文件系统上。日志服务使用 Raft I/O 后,事务写吞吐有了明显提升;但是延时上依然相比本地磁盘性能有较大的gap,特别是长尾问题比较突出。

3. DB-Quorum I/O:

随着时延敏感业务的增多,对 I/O 的时延的要求进一步提升,GaiaDB 舍弃 Raft 协议,采用 Quorum 读写方案,对 I/O 栈进行极致的性能优化。

下面是从 Quorum I/O 替换 Raft I/O 的主要考量:

单次 Redo Raft I/O 网络和磁盘过高,一次 redo 写 I/O 包含以下流程

a) 主库写 Raft leader;

b) Raft leader 发送 Raft 日志;

c) Raft 日志同步到多数派;

d) Raft 日志 apply,数据持久化到 Log Store;

e) 回复主库。

可以发现其中至少两次网络往返,且无法并行。b) d) 为磁盘写且无法并行。并且由于 RPC 和 Raft 的开销,导致 Redo 持久化的时延显著高于传统单机 MySQL 的本地 Redo 落盘时延。

通过深入分析,我们认为:Raft 协议作为类 Paxos 的分布式协议变种,除了保证分布式副本一致性外,其主要时延其实是提供线性一致性语义的额外代价,而在 GaiaDB 中,我们其实已经把线性一致性的约束拆解到了存储层和事务层:

  1. 存储层,我们已经保证如果 lsn = l 的日志已经持久化成功,那么所有 lsn < l 的日志都已经写成功。

  2. 事务层,我们记录当前完成 I/O 收割的最大 lsn,这个 lsn 之前的写事务都能安全提交。

基于以上两点,Quorum 读写模式已经能较好的满足我们的 Redo I/O 的需求。

Quorum 协议在数据库中需要解决以下问题:

  1. 成员变更:在 Quorum 中管理成员实现较为复杂,Gaiadb 相对优雅地结合了 Raft 和 Quorum 的优点,Raft 管理成员变更等控制流,Quorum 管理数据流。

  2. crash safe: 当计算节点宕机时,Quorum 需要有一个数据对齐的过程,Gaiadb 使用两阶段数据对齐协议, prepare 阶段协商数据持久化一致性位点,commit 阶段进行数据补偿。

GaiaDB 在分布式 Quorum 协议中的优化

为了进一步降低远程 I/O 对性能的影响,GaiaDB 对 I/O 流进行了改造,将核心链路上的同步 I/O 改造为异步 I/O,极大了提升了事务吞吐。

2974afc2de88cfb7c357006970a041b3.jpeg

2.高性能智能网络(DB-Network)

在存算分离架构下,网络作为系统 I/O 的重要组成部分,其性能和效率直接影响到整个系统的性能表现。存算分离架构将存储和计算资源分开,使得数据可以在独立的存储节点上进行读写操作,而计算节点则专注于处理计算任务。这种架构的优势在于可以提高系统的扩展性和可靠性,但也增加了网络 I/O 的复杂性和耗时。

在传统的本地 I/O 模式下,数据的读写操作是在本地进行的,因此不需要经过网络传输。而在存算分离架构下,数据的读写操作需要在不同的节点之间进行传输和处理,因此网络 I/O 成为了系统 I/O 中不可或缺的一部分。由于网络传输的耗时相比本地 I/O 要长,因此降低网络 I/O 的耗时成为了存算分离架构必需关注的重点任务之一。

656cc53aa4c6500a858722c3b5e2d3f5.png

2.1 挑战

GaiaDB 采用了 BRPC 网络框架进行场内通信,但在真实业务场景下,平均耗时为微秒级别(400us-500 us 左右),长尾甚至达到了毫秒级别(10 ms+)。这种情况在某些范围内检索的 SQL 查询中尤为严重,因为这些查询需要远程访问大量的数据,从而导致 I/O 长尾成倍放大 SQL 的整体耗时,容易引发系统故障。

为了保障 GaiaDB 大规模稳定上量,缩短远程 I/O 的长尾和平均时延是至关重要的。通常情况优化远程 I/O 有一下两种手段:

  1. 网络优化:采用更快速的网络设备、优化网络路径、减少网络跳数等措施可以降低网络延迟。

  2. I/O 优化:通过优化数据存储和访问模式,减少 I/O 访问延迟。比如采用更高效的存储介质、缓存技术、并行访问等技术。

2.2 解决方案

GaiaDB 网络优化分为两个部分:

  1. 采用网络超时重定向机制,降低单点访问延迟长尾问题

采取了 BackupRequest 机制,即当一个远程 I/O 请求超时时,系统会重试其他副本,从而有效地抑制了单节点长尾问题。这种机制的应用将远程 I/O 的长尾时延由原来的 10 ms 降低到了 5 ms 以内。通过优化网络架构和采用适当的备份机制,BackupRequest 不仅提高了数据的可用性和可靠性,也大大降低了 I/O 延迟,提高了数据库的整体性能。

2. 采用高性能智能网络,减少内核态 TCP 与用户态 TCP 的数据拷贝

GaiaDB 引入了百度内部研发的智能网络。智能网络是一种高性能网络框架,它支持内核态 TCP 和用户态 TCP、RDMA 以及百度内部私有协议等多种协议。智能网络能够根据硬件设备的性能和网络状态,自动选择最优的网络协议和参数,从而最大程度地减少网络传输延迟。

25e30ce7596f6fc27da53b994ad34279.png

智能网络的引入对于降低远程 I/O 的平均时延起到了非常重要的作用。通过智能网络的选择和优化,GaiaDB 能够更好地适应不同的硬件环境,并自动选择最佳的网络协议和参数,进一步提高了数据库的性能和响应速度(E2E 延迟缩短 60%,达到百 us)。

3. 高可靠、高性能分布式存储引擎

存算分离架构是一种现代化的数据库架构设计方式,它的核心思想是将存储和计算分离,以提高系统的可用性、可扩展性和性能。在存算分离架构中,所有需要持久化的数据都被存储在远端的网络附加存储(NAS)、对象存储或分布式文件系统中,或者其他具备高可用能力的分布式存储系统中。而本地存储则只被用来存储临时的、暂态数据,这些数据在需要的时候可以从持久化存储中恢复和重建。

在 GaiaDB 中,「存」所采取的是自研分布式存储系统。该系统结合了 GaiaDB 的数据模型,提供了多版本高可靠高性能的数据存储能力。GaiaDB 的存储系统采用了独特的3副本对等模型,这种模型与传统的 Raft 模型不同。在三副本对等模型中,每个节点都有相同的数据副本,这样可以提高数据的可靠性和可用性。由于没有主从节点的概念,每个节点都可以独立地提供读写服务,从而避免了单点故障的问题。此外,由于对等性,每个节点都可以同时提供 I/O 服务,从而提高了系统的整体性能。

3.1 挑战

存算分离架构为 GaiaDB 带来了新的挑战。在早期阶段,GaiaDB 使用容器模型来存储单副本,并将三个副本部署在不同的容器节点上。然而,由于实测时多跳网络等因素的影响,I/O 性能无法满足要求。为了解决这个问题, GaiaDB 采用了容器+本地磁盘架构模型,虽然满足了 I/O 时延需求,但也带来了新的问题。

  1. 成本问题逐渐显现。在存算分离架构下,需要处理突发流量但又无法共享资源,这容易导致资源浪费和成本上升。例如,每个容器节点分配了 4G 内存作为数据库的一个副本,这无疑增加了系统的整体成本。

  2. 管理问题也是个大问题。当处理的实例数量达到成千上万级别时,容器调度和资源分配等难度上升,实例扩容等耗时也变得更长。例如,每个节点上的端口数量、监控数量以及副本容灾分布规划等都需要大量的人力和物力来管理。

  3. 故障问题也是一个不可忽视的问题。在存算分离架构下,当磁盘或机器出现故障时,数据恢复存在调度管理问题。例如,恢复限速、排队等缺乏全局管理能力,容易造成热点,导致无法提供服务。

3.2 解决方案

为了解决在容器化环境中面临的存储问题,GaiaDB 采用了自主研发的分布式多租户存储方案。该方案不仅在架构上支持多租户模式,还实现了对资源的极大化利用。

GaiaDB 的分布式多租户存储方案将多个集群的数据统一存储在一个系统中。通过资源的闲置调度策略,该方案能够有效地利用存储资源,提高存储空间的利用率。同时,GaiaDB 还对副本管理进行了优化。该方案可根据实例规模、集群磁盘使用率、集群机器负载、集群机架位和集群机器所在交换机等因素进行管理,使存储资源得到充分利用,并满足高性能的存储需求。

然而,随着时间的推移和集群的扩容或缩容等操作,存储系统中的副本分布可能会出现不均衡的现象。为了解决这一问题,GaiaDB 的分布式多租户存储方案能够提供统一的资源均衡策略。这种策略可以在一段时间后自动调整副本的位置,使副本分布更加合理,达到最优的存储效果。

d30f6ff4fdce518685e59f846cd3e237.jpeg

另外,GaiaDB 的分布式多租户存储方案还具备强大的故障恢复能力。当故障发生时,该方案能够实现统一的自动恢复管理。根据待恢复的副本数量等因素,该方案能够合理地分配集群资源,减少资源堆积等问题。这种设计可以在保证数据安全的同时,最大程度地降低存储系统的维护成本,提高系统的可用性和稳定性。

4. 多地多活技术

对于高可用性需求的业务,多可用区部署和多地域部署是常见的解决方案来确保数据库的高可用性。多可用区部署是在多个可用区中复制和备份数据,以避免一个可用区故障导致服务中断,但需考虑数据一致性和同步问题,以及更高的资源和成本。多地域部署是在不同地域的机房中复制和备份数据,网络延迟更大,数据存在秒级别延迟。

4.1 挑战

数据库在多机房和多地域部署的挑战主要来自于数据的一致性、可靠性和延迟问题。以下是对这些挑战的描述:

  1. 数据一致性:在多机房和多地域部署的情况下,保持数据一致性是一个主要挑战。当多个节点在分布式系统中处理数据时,可能会出现数据一致性问题。这种一致性问题通常由网络延迟、系统故障和数据复制延迟等因素引起。为了解决这个问题,可以使用一些技术手段,如分布式事务、一致性保证协议等。

  2. 数据可靠性:在多机房和多地域部署的情况下,数据可靠性是一个重要的挑战。由于地理位置的分散,数据在传输和处理过程中可能会出现更多的错误或丢失的风险。为了提高数据可靠性,可以使用冗余数据复制、分布式数据备份等技术。

  3. 延迟问题:在多机房和多地域部署的情况下,由于地理位置的分散,网络延迟可能会成为一个主要的问题。随着距离的增加,网络延迟会增加,这可能会影响数据库操作的性能和响应时间。为了降低延迟,可以采取一些措施,如优化网络架构、使用低延迟网络协议和缓存技术等。

4.2 解决方案

在数据库多 AZ 的部署中,我们采用了物理同步协议,这种协议可以确保在任意切换过程中不丢失任何数据。通过多 AZ 热活的解决方案,我们可以同时提供服务,从而确保即使在一个区域发生故障时,其他区域也能够继续提供服务。

为了实现低延迟和平滑兼容慢节点的目标,我们采用了就近访问的策略。这个策略能够让用户在访问数据库时自动选择最接近他们的节点,从而最大程度地减少延迟。同时,我们还不断优化数据库的操作和查询,以确保即使在慢节点上也能够平滑地兼容。

在多可用区部署时,GaiaDB 模块的自适应就近访问策略可以感知元数据的变化,并根据这些变化及时切换访问路线。这种策略可以有效地应对各种故障和异常情况,确保数据的可靠性和可用性。

在多地域部署时,GaiaDB 的自研同步组件 Replicator 通过同步 Redo 流来支持 DDL 操作等高级功能。这种方案可以实现主从地域之间的时延小于 2 秒,从而确保数据的实时性和一致性。同时,这种方案还具有良好的可扩展性和灵活性,可以轻松地适应不同地域的需求和变化。

c86369902ab6d9a872e2f81b5df03d9d.png

总结

存算分离已成为流行的架构理念,通过存算分离可以提高数据库的弹性能力,降低存储成本、提高可用性。GaiaDB 在架构演进中采用 Quorum 分布式协议和高性能网络技术降低计算和存储之间的访问延迟,提高并发访问性能;通过高可靠的分布式存储引擎实现 RPO=0,同时利用分布式存储的扩展性提升 I/O 带宽和并发性能。

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

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

相关文章

[开源]GPT Boss – 用图形化的方式部署您的私人GPT镜像网站

在这个以数据和智能为核心的时代&#xff0c;掌握最新的技术趋势是每个企业和个人都需要做到的。这就是GPT Boss存在的意义&#xff1a;一个基于OpenAI技术的一站式GPT应用解决方案。 自2022年起&#xff0c;GPT Boss团队便投身于人工智能领域&#xff0c;将OpenAI的GPT模型带给…

Bard 最新更新:全球开放访问Gemini Pro并生成图片

深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领域的领跑者。点击订阅&#xff0c;与未来同行&#xff01; 订阅&#xff1a;https://rengongzhineng.io/ 。 今…

2024/2/4学习记录

微信小程序 网络数据请求 出于安全性方面的考虑&#xff0c;小程序官方对数据接口得请求做出了俩个限制 只能对 https 类型的接口必须将接口的域名添加到信任列表中 需要去这里设置 域名只支持 https 协议域名不能使用 ip 地址 或者localhost域名必须经过 ICP 备案 服务器域…

在 iOS 上安装自定企业级应用

了解如何安装您的组织创建的自定应用并为其建立信任。 本文适用于学校、企业或其他组织的系统管理员。 您的组织可以使用 Apple Developer Enterprise Program 创建和分发企业专用的 iOS 应用&#xff0c;以供内部使用。您必须先针对这些应用建立信任后&#xff0c;才能将其打…

Excel没有内置统计字数功能,但可以用一些变通的方法

是否需要计算Excel工作簿中某个单元格或单元格范围内的单词数? 出于多种原因,你可能需要计算文本数据中的字数。也许你有逗号分隔的列表,需要计算每个列表中的项目数。 不幸的是,Excel没有内置的单词计数方法。但是有一些聪明的方法可以得到你需要的结果。 这篇文章将向…

【开源】基于JAVA+Vue+SpringBoot的软件学院思政案例库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统管理员2.2 普通教师 三、系统展示四、核心代码4.1 查询思政案例4.2 审核思政案例4.3 查询思政课程4.4 思政案例点赞4.5 新增思政案例评语 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVueSpringBootMySQL的软件学…

文心一言 VS 讯飞星火 VS chatgpt (194)-- 算法导论14.3 2题

二、用go语言&#xff0c;改写 INTERVAL-SEARCH 的代码&#xff0c;使得当所有区间都是开区间时&#xff0c;它也能正确地工作。 文心一言&#xff0c;代码正常运行&#xff1a; 在Go语言中&#xff0c;处理开区间&#xff08;open intervals&#xff09;时&#xff0c;我们需…

Linux的库文件

概述&#xff1a; 库文件一般就是编译好的二进制文件&#xff0c;用于在链接阶段同目标代码一块生成可执行文件&#xff0c;或者运行可执行文件的时候被加载&#xff0c;以遍调用库文件中的某段代码。 动态链接都是索引的.so文件&#xff0c;静态链接都是压缩打包的.a文件。 …

配置visualsvn提交后自动邮件通知

参考&#xff1a; https://blog.csdn.net/wiker_yong/article/details/10334967 # -*- coding: utf-8 -*- import sys import os import smtplib from email.mime.text import MIMEText from email.header import Headermail_host smtp.163.com #发送邮件的smtp地址 mail_us…

【RPA】什么是RPA

一、什么是RPA? RPA&#xff0c;全称机器人流程自动化&#xff0c;是一种利用机器人技术实现工作信息与业务交互自动化的过程。它能够按照预先设计的流程&#xff0c;高效地处理大量的工作信息与业务交互&#xff0c;极大地节约了人工成本。如今&#xff0c;RPA已成为智能化软…

26.云原生ArgoCD高级之ApplicationSet

云原生专栏大纲 文章目录 ApplicationSet介绍ApplicationSet 特性ApplicationSet 安装ApplicationSet 工作原理ApplicationSet 生成器列表类型生成器集群生成器基础使用方法Label Selector 指定集群Values 字段传递额外的参数 git生成器git目录生成参数排除目录git文件生成器矩…

zabbix server/agent源码编译成rpm包(通用版-小白教程)

前言 工作环境需要用到很多信创的操作系统&#xff0c;zabbix agent2的官方没有现成的包可用&#xff0c;网上巴拉了一下找到zabbix agent2通用版编译成rpm包的方法 思路&#xff1a;假如当你有一批ky10_x86的机器需要配套的zabbix agent的rpm包&#xff0c;那就找一台ky10_x…

6个国内可用的chat大模型

文心一言 - 一款适合中国人使用的AI智能助理&#xff0c;能够帮助用户进行对话、生成内容等工作&#xff0c;提高工作效率和创作水平 文心一言 文心一言 App 是一款适合中国人的 AI 智能助理&#xff0c;它的功能点主要包括&#xff1a; 工作生活助理&#xff1a;该应用通过简…

鉴权失败原因

在技术领域&#xff0c;鉴权失败是指一个系统或应用程序中的身份验证或权限验证过程失败。当用户试图访问受限资源或执行受限操作时&#xff0c;系统会进行鉴权过程来确认用户是否具有足够的权限。如果鉴权过程失败&#xff0c;则表示用户无法获得所需的访问权限。 鉴权失败可…

Java代码实现基数排序算法(附带源码)

基数排序是一种非比较型整数排序算法&#xff0c;其原理是将整数按位数切割成不同的数字&#xff0c;然后按每个位数分别比较。由于整数也可以表达字符串&#xff08;比如名字或日期&#xff09;和特定格式的浮点数&#xff0c;所以基数排序也不是只能使用于整数。 1. 基数排序…

基于Springboot的兼职网(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的兼职网&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0…

ubuntu离线安装k8s

目录 一、前期准备 二、安装前配置 三、安装docker 四、安装cri-dockerd 五、部署k8s master节点 六、整合kubectl与cri-dockerd 七、网络等插件安装 八、常见问题及解决方法 一、前期准备 ①ubuntu系统 本地已安装ubuntu系统&#xff0c;lsb_release -a命令查看版本信…

HarmonyOS应用/服务发布:打造多设备生态的关键一步

目前 前言HarmonyOS 应用/服务发布的重要性使用HarmonyOS 构建跨设备的应用生态前期准备工作简述发布流程生成签名文件配置签名信息编译构建.app文件上架.app文件到AGC结束语 前言 随着智能设备的快速普及和多样化&#xff0c;以及编程语言的迅猛发展&#xff0c;构建一个无缝…

打印文件pdf怎么转换成word文档?pdf转换工具推荐

有时候我们可能需要重用PDF文件中的文本内容&#xff0c;比如引用某些段落、复制粘贴特定文字或提取数据&#xff0c;通过将pdf文件转换成word&#xff0c;可以轻松地提取和重用其中的文本&#xff0c;节省时间和努力&#xff0c;那么pdf怎么转word呢&#xff1f;可以试试本文推…

读论文:DiffBIR: Towards Blind Image Restoration with Generative Diffusion Prior

DiffBIR 发表于2023年的ICCV&#xff0c;是一种基于生成扩散先验的盲图像恢复模型。它通过两个阶段的处理来去除图像的退化&#xff0c;并细化图像的细节。DiffBIR 的优势在于提供高质量的图像恢复结果&#xff0c;并且具有灵活的参数设置&#xff0c;可以在保真度和质量之间进…