云计算与大数据进阶 | 26、解锁云架构核心:深度解析可扩展数据库的5大策略与挑战(上)

在云应用/服务的 5 层架构里,数据库服务层稳坐第 4 把交椅,堪称其中的 “硬核担当”。它的复杂程度常常让人望而生畏,不少人都将它视为整个架构中的 “终极挑战”。

不过,也有人觉得可扩展存储系统才是最难啃的 “硬骨头”,其实这场关于谁更复杂的争论没有标准答案,很大程度上取决于具体的业务应用模式(就可扩展存储系统,老夫打算在后续的文章中具体再聊)。

对于那些涉及复杂交易处理的应用来说,数据库服务层实现面临的挑战难度显然更高,每一次数据的读写、每一个事务的处理,都像是在走钢丝,稍有不慎就可能引发数据混乱、系统崩溃等严重问题,实现过程中的挑战难度堪称地狱级别。

但如果是单纯处理海量数据的简单事件应用,数据库服务层反而显得有些 “多余”,这时候,云存储层摇身一变,就成为了整个系统的 “难点 C 位”,承担起了更为复杂的任务。

数据库扩展大体有纵向扩展主仆读代理模式主–主模式分区模式分布式共识模式5类解决方案。这些方案共同构成了可扩展数据库的 “魔法宝典”,助力企业在数据的海洋中乘风破浪。

(1)纵向扩展

在数据库扩展的工具箱里,纵向扩展就像是给系统注入一剂强化针。它最直观的方式,是对硬件配置大刀阔斧地升级 —— 换上更强劲的 CPU、扩充海量内存、搭载读写速度更快的存储设备,如同给数据库系统装上超级引擎,让数据处理的吞吐量直线飙升。

同时,纵向扩展也在软件层面持续发力。以表结构优化为例,它会巧妙运用索引,让系统能快速定位数据;极力避免多表间复杂的关联查询,减少系统的运算负担。这种软硬件协同优化的方式,曾是第二平台应用扩展的黄金法则,在当时的技术环境下屡试不爽。

然而在第三平台云应用时代,纵向扩展就显得有些力不从心了。云应用庞大的用户规模与爆发式增长的数据需求,仅靠纵向扩展的单打独斗,根本无法满足日益严苛的可扩展性要求,逐渐在新的技术舞台上退居幕后 。

(2)主仆读代理模式

数据库服务层的横向扩展方法有多种,其中最基础(简洁)的是主-仆模式,如图1所示。

图1: 数据库横向扩展之主-仆模式

主-仆模式通常由一个Master(主)节点“挑大梁”,包揽所有数据的读写操作,同时配备一个或多个 Slave(仆)节点组成 “辅助小队”,专门负责数据的只读任务。

这样的设计和分工相当巧妙,相当于给数据读取能力装上了“加速器”,数倍提升读取效率,而主节点卸下部分读负载后,写操作的处理也更加游刃有余。我们知道大多数数据库系统读操作的数量远远超过写操作(如更改、删除、添加)的数量,因此读操作的加快能有效解决这类系统的效能瓶颈,让系统运行更加丝滑流畅。

主 - 仆模式能高效运转的关键在于 “单点写入” 的设计智慧。样的设计只让主节点执行写操作,就像给数据管理立下了一个唯一指挥权的规矩,这就从根源上规避了多点同时写入引发的数据同步混乱。

不过,主节点在完成写操作后,还得肩负起数据搬运工的重任,及时将更新的数据同步到各个只读节点。这就好比一场数据接力赛,要求主仆节点之间必须搭建起高带宽、低时延,否则一旦数据复制延迟,就会出现数据读取与写入 “对不上号” 的尴尬局面。

通常来说,为了让这个架构发挥最大威力,工程师们往往会在主 - 仆数据库架构中安插负载均衡组件。它就相当于一名智能调度员,可以精准分配数据读取任务,确保每个 Slave 节点都能物尽其用。

值得注意的是,这一层的负载均衡操作主要集中在 TCP/UDP 层,并且常常基于定制的数据库通信协议展开,和应用服务层常见的标准 HTTP (S) 负载均衡大不相同,堪称数据库横向扩展里的专属秘籍。

(3)主-主模式

前面咱们通过主-仆模式解决了系统读操作可扩展难题,那么,可写操作的 “扩容困境” 该怎么破呢?答案是确切的——有,只不过要攻克的复杂度会高很多。

回顾之前的章节中我们讨论过的CAP理论,在强一致性的数据库系统(ACID 系统)里,数据一致性就是一条金线,不可动摇。

因此,这类系统最大的挑战是如何保证各节点间所采用的架构能实现数据一致性。

但让多个节点同时支持并发读写,就像在数据王国里打开了 “潘多拉魔盒”,稍有不慎就会引发节点间的数据不一致危机。这类系统的终极挑战,就像在刀尖上跳平衡舞 —— 既要让写操作能横向扩展,又得像精密齿轮般确保所有节点的数据严丝合缝、毫无偏差。

强一致性的数据库系统(ACID系统)强调CAP中的数据一致性,而多节点同时支持并发读写操作极易造成节点间出现数据非一致性,因此,这类系统最大的挑战是如何保证各节点间所采用的架构能实现数据一致性——这类系统的终极挑战,就像在刀尖上跳平衡舞 —— 既要让写操作能横向扩展,又得像精密齿轮般确保所有节点的数据严丝合缝、毫无偏差。

要知道,多节点并发写跟奏交响乐没啥差别,每个节点的写入动作都可能影响全局。如何设计出既能承载高并发写操作,又能通过巧妙的架构(比如分布式共识算法、复杂的数据复制协议等)把一致性牢牢 “钉住”,简直是对工程师创造力和耐心的双重极限考验。这时候的系统设计,不再是主 - 仆模式那样的 “线性思维”,而是要构建一套如同精密钟表般的复杂协作机制,让每个写操作都能在多节点间找到自己的时间刻度,最终拼成完整一致的数据表盘。

以下图2为例,MySQL数据库的多Master节点模式采取了环状复制数据同步机制,就像搭建了一个紧密的接力环。在3个数据库服务器集群中,数据同步形成了一条闭合的环形链路:

图2:环状复制的数据同步方式

  • 第一集群的 Master 节点先将更新数据同步给第二集群的对应 Slave 节点,此时第二集群的节点 “接棒” 后切换身份,以 Master 节点的角色将数据传递给第三集群的 Slave 节点
  • 第三集群的节点 “接力” 后同样转换为 Master,再将数据回传给第一集群的同一节点,最终形成 “第一集群→第二集群→第三集群→第一集群” 的环形同步闭环。

这种设计的核心逻辑是用环型时序规避冲突。当多个节点需要同时更新数据时,环形链路为每个数据集分配了唯一的 “传递时区”—— 每个节点在环中只能按固定顺序接收和发送数据,就像列车沿着固定轨道行驶,避免了多节点并发写入同一目标时因 “路径交叉” 导致的数据交集冲突。例如,若两个节点同时向同一目标节点发送更新,环形机制会强制数据按顺序通过链路流转,确保后到达的数据能基于前序更新进行合并,而非直接覆盖,从而从架构层面降低了数据不一致的风险。

不过,这种 “环形接力” 也需要付出代价:

  • 链路依赖强:任意一环的延迟或故障都会像 “多米诺骨牌” 一样影响整个集群的同步效率;
  • 一致性延迟:数据需绕环一周才能完成全集群同步,在高并发场景下可能出现短期的节点间数据差异;
  • 复杂度跃升:相比主仆模式的单向同步,环形架构的拓扑管理、故障恢复机制需要更精细的设计,堪称 “用架构复杂度换一致性保障” 的典型案例。

避免在多Master节点数据库系统中发生数据一致性冲突的解决方法有以下4种:

①彻底避免多节点写操作(这样又回到了主-仆模式)​。

②在应用服务层逻辑上严格区分不同Master节点的写入区域,确保它们之间无交集(如不出现同时间内更改同一行数据的操作)​。

③保证不同Master节点在不重叠的时间段内对同一区域进行操作。

④同步复制,所有节点会同时进行写操作,且当所有节点完成后,整个操作才会返回。这种模式显然对网络带宽的要求极高,并且为了满足数据的一致性而牺牲了可用性。

以下图所示的分布式数据库为例,我们可以按表1设计数据库CS中的表,以确保位于旧金山、纽约和达拉斯的Master节点可以同时完成写操作,并且不会出现冲突。

提3:分布式数据库
表1:3个Master节点避免写入区域重叠的设计方法

 

今天先到此结束,下篇内容我们再叙分区模式和分布式共识两种模式。88~

 (文/Ricky - HPC高性能计算与存储专家、大数据专家、数据库专家及学者)
 

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

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

相关文章

Linux——UDP/TCP协议理论

1. UDP协议 1.1 UDP协议格式 系统内的UDP协议结构体: 注1:UDP协议的报头大小是确定的,为8字节 注2:可以通过报头中,UDP长度将UDP协议的报头和有效载荷分离,有效载荷将存储到接收缓冲区中等待上层解析。 注…

考研复习全年规划

25考研以330分成功上岸。 备考期间,我深知学习规划的重要性,为大家精心整理了一份初试备考时间线任务规划,希望能为正在备考的同学们提供参考。如果你对如何规划学习路线仍感迷茫,不妨参考这份时间表,合理分配时间&…

PhpStudy | PhpStudy 环境配置 —— PhpStudy 目录结构 环境变量配置 · Windows 篇

🌟想了解这个工具的其它相关笔记?看看这个:[网安工具] 服务器环境配置工具 —— PhpStudy 使用手册 在前面的章节中,笔者详细介绍了如何在 Windows 和 Linux 系统中安装 PhpStudy,但可能会有崽崽在安装完成后发现依旧…

DDS(数据分发服务) 和 P2P(点对点网络) 的详细对比

1. 核心特性对比 维度 DDS P2P 实时性 微秒级延迟,支持硬实时(如自动驾驶) 毫秒至秒级,依赖网络环境(如文件传输) 架构 去中心化发布/订阅模型,节点自主发现 完全去中心化,节…

java中XML的使用

文章目录 什么是XML特点XML作用XML的编写语法基本语法特殊字符编写 约束XML的书写格式DTD文档schema文档属性命名空间XML命名空间的作用 解析XML的方法​​DOM解析XMLDOM介绍DOM解析包:org.w3c.dom常用接口DOM解析包的使用保存XML文件添加DOM节点修改/删除DOM节点 S…

Spring Boot异步任务失效的8大原因及解决方案

Spring Boot异步任务失效的8大原因及解决方案 摘要:在使用Spring Boot的@Async实现异步任务时,你是否遇到过异步不生效的问题?本文总结了8种常见的异步失效场景,并提供对应的解决方案,帮助你彻底解决异步任务失效的难题。 一、异步失效的常见场景 1. 未启用异步支持 ❌ …

QT6 源(104)篇一:阅读与注释QAction,其是窗体菜单栏与工具栏里的菜单项,先给出属性测试,再给出成员函数测试,最后给出信号函数的学习于举例测试

(1) (2) (3)接着给出成员函数测试 : (4) 给个信号函数的举例 : (5) 谢谢

visual studio生成动态库DLL

visual studio生成动态库DLL 创建动态库工程 注意 #include “pch.h” 要放在上面 完成后点击生成 创建一个控制台项目 设置项目附加目录为刚才创建的动态库工程Dll1: 配置附加库目录: 配置动态库的导入库(.lib):链…

matlab多智能体网络一致性研究

一个基于连续时间多智能体系统(Multi-Agent Systems, MAS)的一阶一致性协议的MATLAB仿真代码,包含网络拓扑建模、一致性协议设计和收敛性分析。代码支持固定拓扑和时变拓扑,适用于学术研究。 1. 基础模型与代码框架 (1) 网络拓扑…

【omnet++】omnet++6.0.3中调用python

版本: omnet 6.0.3 Ubuntu 20.04.6 LTS omnet的installguide中对ubuntu版本是有要求的,找到对应版本下载即可 先安装omnet再安装anaconda omnet 6.0.3安装 别在网上找教程了,官方的installguide手册是最好的。按照手册安装一些依赖包后 so…

【C++】 —— 笔试刷题day_29

一、排序子序列 题目解析 一个数组的连续子序列,如果这个子序列是非递增或者非递减的;这个连续的子序列就是排序子序列。 现在给定一个数组,然后然我们判断这个子序列可以划分成多少个排序子序列。 例如:1 2 3 2 2 1 可以划分成 …

UE RPG游戏开发练手 第二十七课 普通攻击2

UE RPG游戏开发练手 第二十七课 普通攻击2 1. 创建普通攻击的蒙太奇动画 2.打开4个蒙太奇动画,修改插槽为FullBody,修改动画速度 3.编辑动画蓝图,插入FullBody插槽让普通攻击动画得以播放 4. 编辑GA_LightAttack技能蓝图

MySQL——日志

undo log(回滚日志):引擎层生成的日志,实现了事务的原子性,用于事务回滚和MVCC。redo log(重做日志):引擎层生成的日志,实现了事务的持久性,用于非正常关闭的数据恢复。bin log(归档日志):Serve…

QML 动画控制、顺序动画与并行动画

目录 引言相关阅读基础属性说明工程结构示例代码解析示例1:手动控制动画(ControlledAnimation.qml)示例2:顺序动画(SequentialAnimationDemo.qml)示例3:并行动画(ParallelAnimationD…

PowerShell 实现 conda 懒加载

问题 执行命令conda init powershell会在 profile.ps1中添加conda初始化的命令。 即使用户不需要用到conda,也会初始化conda环境,拖慢PowerShell的启动速度。 解决方案 本文展示了如何实现conda的懒加载,默认不加载conda环境,只…

R语言学习--Day03--数据清洗技巧

在一般情况下,我们都是在数据分析的需求前提下去选择使用R语言。而实际上,数据分析里,百分之八十的工作,都是在数据清洗。并不只是我们平时会提到的异常值处理或者是整合格式,更多会涉及到将各种各样的数据整合&#x…

谷歌地图代理 | 使用 HTML 和矢量模式 API 更轻松地创建 Web 地图

在过去的一年里,谷歌对 Maps JavaScript API 进行了两项重要更新,以便更轻松地采用我们最新、最好的地图:HTML 地图和矢量模式 API。今天谷歌地图亚太区最大代理商之一的 Cloud Ace云一 为大家介绍一下更新的具体内容。 联系我们 - Cloud Ac…

WL-G4048 Multi-Port PCIe 4.0 Switch

系列文章目录 文章目录 系列文章目录《WL-G4048 Multi-Port PCIe 4.0 Switch数据手册》总结一、芯片介绍二、芯片规格介绍(一)功能指标(二)管理调试和监控(三)参考时钟(四)系统复位 …

召回11:地理位置召回、作者召回、缓存召回

GeoHash 召回 属于地理位置召回,用户可能对附近发生的事情感兴趣。GeoHash 是一种对经纬度的编码,地图上每个单位矩形的 GeoHash 的前几位是相同的,GeoHash 编码截取前几位后,将相同编码发布的内容按时间顺序(先是时间…

高效批量合并Word文档的工具介绍

软件介绍 本文介绍一款专门用于批量合并Word文档的工具,名为批量合并word工具。 使用方法与特点 如果需要将多个Word文档合并到一个Word文档中,就可以使用这款工具。使用前,需把要合并的Word文档都放在名为“word”的文件夹下。 该软件没有…