崖山数据库的共享集群机制初探

news2024/11/18 19:57:06

本文作者:YashanDB高级服务工程师周国超

YashanDB共享集群是崖⼭数据库系统(YashanDB)的⼀个关键特性,它是⼀个单库多实例的多活数据库系统。⽤⼾可以连接到任意实例访问同⼀个数据库,多个数据库实例能够并发读写同⼀份数据,同时保证实例之间读写的强⼀致性。这种设计赋予了系统⾼可⽤性、⾼扩展性和⾼性能的特点。

共享集群基于YashanDB内核持续演进,硬件上依赖共享存储实现shared-Disk的架构,同时引⼊了Cohesive Memory核⼼技术实现Shared-Cache能⼒。这使得集群数据库多个实例之间能够协同数据⻚的读写访问以及各种⾮数据类资源的并发控制。

共享集群的核⼼组件主要包括崖⼭集群内核(YCK,Yashan Cluster Kernel)、崖⼭集群服务(YCS,Yashan Cluster Service)和崖⼭⽂件系统(YFS,Yashan File System)。崖⼭集群内核通过聚合内存技术,聚合多实例对数据资源和⾮数据资源的并发访问。崖⼭集群服务负责管理共享集群数据库,包括集群服务器配置管理、资源配置管理、启停、监控服务器以及资源,并在故障时负责投票仲裁并重组集群。崖⼭⽂件系统是YashanDB的专⽤并⾏⽂件系统,提供存储设备管理、存储⾼可⽤、⽂件系统接⼝等功能。

崖山数据库(YashanDB)共享集群的独特性主要体现如下⽅⾯:
核心技术突破:YashanDB共享集群攻克了共享集群的关键技术瓶颈,实现了⾦融级⾼可⽤能⼒,RPO为0、RTO<10秒。
高可用性:YashanDB共享集群具备天然的⾼可⽤优势,任何实例故障后都不影响应⽤的连续性,采⽤了快速恢复和连接连续性技术保证服务端的透明接管和客⼾端的透明切换。
性能优化:YashanDB共享集群在性能⽅⾯有显著优势,经实测,在同等硬件条件下,其TPC-C基准测试表现⽐Oracle RAC⾼30%。
多实例读写:YashanDB⾃研了“七种武器”技术,包括⻚内锁技术、免锁读技术、去中⼼化的事务管理机制等,以解决读写冲突,提⾼读写性能。
自适应异步并⾏调度:YashanDB提出了⾃适应的异步并⾏任务调度机制,⼤幅度降低了多核之间的事务冲突协调开销,提⾼了性能。
共享集群架构:YashanDB共享集群基于YashanDB内核持续演进,引⼊了Cohesive Memory核⼼技术,实现Shared-Cache能⼒,⽀持在线故障⾃动切换和故障⾃动恢复。
全自研共享集群解决⽅案:YashanDB全⾃研共享集群解决⽅案为⽤⼾提供应⽤透明的⾼可⽤和⾼性能数据库能⼒,构建了基于国产应⽤/中间件、共享集群数据库、芯⽚/服务器/存储的⾼端全栈⽅案。
专用并行文件系统:YashanDB⾃研集群⽂件系统,采⽤In memory FAT + Direct access专利技术,实现文件系统元数据常驻内存,提供更⾼效的存储管理能⼒和效率。
原创理论与领先架构:YashanDB拥有世界领先的基础理论作为⽀撑,通过“原创理论+领先架构+⼯程能⼒”三位⼀体的⼯程研发体系,打造技术先进、性能稳定、持续创新的产品内核。
这些独特性使得YashanDB共享集群在数据库国产化替代的浪潮下,能够满⾜⾦融、电信等⾏业核⼼系统对关键技术的需求,推动核⼼系统国产化替换的规模化应⽤。

相对于Oracle数据库共享集群的关键技术总结如下:
1.Oracle RAC (Real Application Clusters):Oracle RAC是Oracle数据库中的⼀项核⼼技术,它允
许多个服务器节点共享访问相同的数据库⽂件,从⽽实现⾼可⽤性和负载均衡。
2. 缓存融合 (Cache Fusion):这是Oracle RAC的⼀个关键组件,它通过在节点之间共享缓存数据来
减少磁盘I/O,提⾼数据库性能。
3. 全局资源管理器 (Global Resource Manager, GRM):GRM负责管理集群中的资源,包括锁定和资
源的分配。
4. 投票磁盘 (Voting Disks):在Oracle RAC中,投票磁盘⽤于存储集群的配置信息和状态,帮助在节
点故障时进⾏决策。
5. Oracle Clusterware:这是Oracle RAC运⾏所依赖的中间件,负责集群的管理和协调。
6. 服务和实例:Oracle RAC可以配置多个服务和实例,它们可以在不同的节点上运⾏,以提供⾼可⽤
性和故障转移。
7. 存储系统:共享存储是Oracle RAC的基础,它允许多个节点访问相同的数据⽂件。
8. 网络:高速网络连接是Oracle RAC正常运⾏的关键,它⽀持节点之间的通信和数据共享。

Oracle RAC技术通过这些关键技术实现了数据库的⾼可⽤性、可扩展性和性能优化,使其成为企业级核⼼交易数据库领域的⼴泛应⽤解决⽅案。

共享集群技术最核⼼的难点在于实例间的交互,如何保证多个实例间数据的强⼀致性?如何协调数据之间发⽣的冲突?如何处理⽹络通信的各种异常情况?这对架构设计的挑战⾮常⼤,需要⼀整套协调机制来实现。

YashanDB共享集群中所有数据库实例共享缓存,本地访问⻚⾯时若未命中,可通过⽹络从其他实例拿到最新版本⻚⾯,实现数据交换,应⽤可以连接任意节点访问和使⽤数据库完整能⼒。为解决读写冲突,提⾼读写性能。

我们来初步探索下YashanDB⾃研了“武器”技术。

页内锁技术

在崖⼭数据库系统(YashanDB)中,⻚内锁技术是⼀种⽤于实现并发控制的技术。它通过在数据⻚级别上设置锁来控制对数据的访问和操作,以确保数据的⼀致性和并发性。当⼀个事务需要访问或修改某个数据⻚时,系统会根据事务的需求和当前数据⻚的锁状态来决定是否可以进⾏操作。这种技术可以有效地避免数据的冲突和混乱,保证事务的正确执⾏和数据的完整性。
在崖⼭数据库系统(YashanDB)中,可以通过以下步骤验证⻚内锁技术的有效性:

  1. 创建多个事务并访问同⼀个数据⻚:可以创建多个并发的事务,让它们同时访问同⼀个数据⻚,尝试进⾏读取或写⼊操作。
  2. 观察锁的状态:通过数据库系统的监控⼯具或查询系统视图,观察数据⻚上的锁状态,包括锁的类型、持有者、等待者等信息。
  3. 测试并发控制:在不同事务之间制造数据冲突,例如⼀个事务尝试修改数据⻚上的数据,⽽另⼀个事务同时也在尝试修改相同数据⻚的数据,观察系统如何处理并发访问。
  4. 检查事务的隔离级别:验证⻚内锁技术是否按照事务的隔离级别正确地处理并发访问,确保事务之间的数据操作不会相互⼲扰。
    通过以上步骤可以验证⻚内锁技术在崖⼭数据库系统中的有效性,确保数据的⼀致性和并发控制机制的正确性。

通过以上步骤可以验证⻚内锁技术在崖⼭数据库系统中的有效性,确保数据的⼀致性和并发控制机制的正确性。

去中心化的事务管理机制

崖⼭数据库(YashanDB)采⽤了去中⼼化的事务管理机制,这是其共享集群技术的核⼼特点之⼀。这种机制避免了传统中⼼化事务管理可能带来的性能瓶颈和扩展性问题。在YashanDB共享集群中,所有数据库实例共享缓存,并且通过去中⼼化的事务管理,实现了多个实例间数据的强⼀致性,同时协调数据之间发⽣的冲突和处理⽹络通信的各种异常情况。

利⽤去中⼼化的事务管理机制,可以实现在分布式环境下对事务进⾏管理和控制,确保数据的⼀致性和可靠性。在YashanDB中,可以通过配置实例亲和性和分布式事务处理能⼒来实现去中⼼化的事务管理机制。具体步骤包括:

  1. 配置实例亲和性:根据业务需求和数据分布情况,设置数据表或数据⽂件在特定实例上的存储和处理,以确保相关数据在特定实例上进⾏操作。
  2. 分布式事务处理:利⽤YashanDB原⽣的分布式处理系统,⽀持分布式事务的提交、回滚和并发控制,保证跨多个节点的事务操作的⼀致性和隔离性。
  3. 实现事务ACID特性:通过YashanDB的事务管理功能,⽀持完整事务ACID特性,包括细粒度锁管理、语句读写⼀致性、UNDO⾃管理和多版本并发控制,确保事务的正确执⾏和数据的⼀致性。
  4. 配置⾼可⽤和备份策略:利⽤YashanDB提供的⾼可⽤能⼒,配置⼀主多备、级联备等⾼可⽤架构,保证系统的可⽤性和数据的安全性。

通过以上步骤,可以充分利⽤YashanDB的去中⼼化事务管理机制,实现分布式环境下的⾼效、可靠的事务处理。

此外,YashanDB还采⽤了基于时间戳的多版本并发控制(MVCC)机制,以及实例间通过Lamport消息⽅式实现时间戳同步,确保跨实例的数据交换不会影响事务的可⻅性。这些技术的结合,使得YashanDB能够在保持数据⼀致性的同时,提⾼系统的并发处理能⼒和整体性能。

实例亲和性的空间分配机制

崖⼭数据库(YashanDB)的实例亲和性的空间分配机制是其共享集群技术的⼀部分,旨在提⾼数据库的性能和效率。具体来说,这种机制允许实例间对同⼀张表并⾏导⼊数据时避免空间争⽤,从⽽优化了资源的分配和使⽤。

实例亲和性的空间分配机制是指在数据库系统中,可以通过设置实例亲和性来指定某个表或数据⽂件在特定实例上进⾏分配和存储。这种机制可以确保特定的数据在特定的实例上进⾏处理,提⾼数据访问的效率和性能。

在YashanDB中,配置实例亲和性的空间分配机制需要在建库时根据数据量、并发数、应⽤场景等因素来确定。对于不同⽤途的表空间,应根据数据库性能和每种类型的表空间的关联性来进⾏配置。在创建数据库时,应为所有内置表空间配置合理的初始⼤⼩,以满⾜实际需求。

对于临时类型表空间,建议初始⼤⼩不要配置过⼤,可以打开⾃动扩展功能,除⾮应⽤系统有明确的临时表需求。在YashanDB中,临时表的存储空间采⽤预占⽅式,只有在BUFFER不⾜需要换出时才会被使⽤,并且在数据库重启后会被重置。因此,⽤⼾可以根据需要通过RESIZE或ADD DATAFILE的⽅式增加临时表空间的容量,或者通过SHRINK来释放过剩的空间。

在初始化配置参数时,需要根据应⽤需求和环境资源,为性能参数赋予合适的初始值。⼀些重要的配置参数包括VM_BUFFER_SIZE、REDOFILE_IO_MODE、REDO_BUFFER_SIZE、REDO_BUFFER_PARTS等,这些参数的合理配置对数据库性能⾄关重要。在⾼可⽤的⾃动选举配置中,需要预先规划好参数以便⽇后扩展,确保Raft集群架构能够正常运⾏并实现⾃动选举。

在YashanDB中,可以通过设置实例亲和性来控制数据的分布和存储,以满⾜不同业务需求和性能要求。实例亲和性的空间分配机制可以通过物理属性和表空间设置来实现,确保数据在分布式部署环境中的合理分配和管理。

基于负载缓存⾃动调度策略

基于负载缓存⾃动调度策略是YashanDB共享集群中的⼀项技术,旨在提⾼数据库集群整体的缓存命中率和性能。这种策略通过动态调整和优化缓存资源的使⽤,以适应不断变化的负载情况,从⽽实现更⾼效的数据访问和处理。
以下是该策略可能包含的⼏个关键⽅⾯:

  1. 动态资源分配:根据当前的数据库负载情况,⾃动调整各个实例的缓存⼤⼩和资源分配,以确保资源被有效地利⽤。
  2. 负载预测:通过分析历史数据和实时监控数据,预测未来的负载变化,从⽽提前做出资源调整。
  3. 缓存置换算法:采⽤⾼效的缓存置换算法,确保最常访问的数据被保留在缓存中,减少对磁盘的访问次数。
  4. 并发控制:在多实例环境中,协调不同实例的缓存访问,避免缓存争⽤和冲突,提⾼并发处理能⼒。
  5. 数据局部性优化:通过优化数据存储和访问模式,增强数据的局部性,使得相关数据更可能被⼀起加载到缓存中。
  6. 故障恢复:在发⽣故障时,快速恢复缓存状态,确保系统的连续性和稳定性。
  7. 监控与调优:实时监控缓存的性能指标,根据监控结果动态调整调度策略,以适应不断变化的运⾏环境。
    YashanDB通过实施基于负载的缓存⾃动调度策略,可以显著提⾼数据库系统的响应速度和吞吐量,同时降低延迟和系统资源的消耗。这对于需要处理⼤规模数据和⾼并发请求的企业级应⽤尤为重要。

脏页快传技术

脏⻚快传技术是YashanDB共享集群中⽤于提⾼性能的关键技术之⼀。这项技术主要针对在数据库操作过程中产⽣的脏⻚(即已修改但尚未持久化到磁盘的数据⻚)进⾏优化,以减少因脏⻚写回磁盘造成的延迟。

在传统的数据库系统中,脏⻚需要周期性地被刷新回磁盘以确保数据的持久性,这个过程称为Checkpointing。如果脏⻚数量较多,或者系统负载较⾼,这个过程可能会引⼊显著的延迟,影响数据库的性能。

YashanDB的脏⻚快传技术通过以下⽅式来提⾼效率:
1.遵从WAL协议:在确保遵循预写⽇志(Write Ahead Logging,WAL)协议的前提下⼯作,这是数据库保证事务持久性的关键机制。
2. 减少磁盘I/O等待:通过优化算法减少脏⻚写回操作时对磁盘I/O的等待时间,从⽽降低整体的事务处理延迟。
3. 快速传递:脏⻚快传技术允许脏⻚在实例间快速传递,⽽不是等待全部修改完成再统⼀写回,这样可以更快地释放内存资源并减少锁的竞争。
4. 优化的刷盘策略:YashanDB可能采⽤了⼀些智能的刷盘策略,⽐如根据当前系统负载动态调整刷盘频率,或者优先处理最有可能影响性能的脏⻚。
5. 异步处理:脏⻚的写回操作可能是异步进⾏的,这样就不会阻塞主数据库操作流程,提⾼了数据库的并发处理能⼒。

脏⻚快传技术是YashanDB共享集群技术优势的⼀部分,它帮助YashanDB在保持数据⼀致性和持久性的同时,提⾼了数据库的性能和响应速度。

除此之外,为了提⾼数据库的性能,YashanDB⾃研集群⽂件系统,采⽤ In memory FAT(AllocationTable, ⽂件分区表) + Direct access 专利技术,该技术能实现⽂件系统元数据常驻内存,提供更⾼效的存储管理能⼒和效率。⽂件系统客⼾端程序通过直连共享内存访问 FAT 数据,确保 YashanDB 针对所有持久化⽂件(包括但不限于控制⽂件、数据⽂件以及redo⽂件)的 read/write 操作,不涉及等待磁盘 IO 或⽹络 IO,实现性能最优。

YashanDB共享集群的这些先进性和特殊性机制,使其成为⾼端核⼼交易场景的有⼒竞争者,为⽤⼾提供了⼀个⾼性能、⾼兼容、更开放的数据库解决⽅案。我们对此有更⾼的要求和期待,共享集群后续发展如何,我们拭⽬以待。

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

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

相关文章

QT对QBytearray的data()指针进行结构体转换时会自动字节对齐填充

1、测试代码 #include <QCoreApplication>#pragma pack(push, 1) typedef struct {int a;float b;char c;int *d; }testStruct; #pragma pack(pop)#include <QByteArray> #include <QDebug>int main() {testStruct structA;structA.a 1;structA.b 2;struc…

正点原子阿波罗STM32F429IGT6移植zephyr rtos(二)---使用I2C驱动MPU6050

硬件平台&#xff1a;正点原子阿波罗STM32F429IGT6 zephyr版本&#xff1a;Zephyr version 3.7.99 开发环境&#xff1a;ubuntu 24.4 zephyr驱动开发与之前接触到的开发方式可能都不一样&#xff0c;更像是linux驱动开发&#xff0c;zephyr源码里边其实已经有写好的I2C和MPU60…

谷歌SEO:有心栽花花不开,无心插柳柳成荫!

之前一开始是想搞个谷歌SEO免费的技术教程博客&#xff08;https://www.c-sz.com/&#xff09;主要是很多时候遇到在谷歌独立站推广群里的朋友需要咨询和学习一些谷歌技术基础知识&#xff0c;当然我自己也有点小心思&#xff0c;就是希望在谷歌能吸引部分的谷歌SEO爱好者尤其包…

【AI学习】DDPM 无条件去噪扩散概率模型实现(pytorch)

这里主要使用pytorch实现基本的无条件去噪扩散模型&#xff0c;理论上面的推导这里不重点介绍。 原文理论参考&#xff1a; 前向和反向过程示意图 前向过程和后向过程 扩散过程包括正向过程和反向过程。前向过程是基于噪声调度的预定马尔可夫链。噪声表是一组方差 &#xff0…

uniapp小程序原始tabbar添加红点以及信息的方法

如图所示 很多人不知道在uniapp 小程序原始的tabbar上添加红点和红点内的信息有官方的api 从而用自定义的tabbar来做 虽然两种方法都能实现效果&#xff0c;但明显使用自带的更方便 还不如自定义

集合论(ZFC)之 序数(Ordinals) 注解

两个同构&#xff08;isomorphic&#xff09;的良序集&#xff08;Well-Ordered Set&#xff09;&#xff0c;拥有同样的序型&#xff08;Order-Type&#xff09;&#xff0c;那么序数&#xff08;Ordinal&#xff09;就是指良序集的序型&#xff08;Order-Type&#xff09;。 …

React 生命周期 - useEffect 介绍

在 React 中&#xff0c;useEffect 钩子可以被看作是函数组件中的一种副作用管理工具&#xff0c;它的行为可以模拟类组件中的不同生命周期方法。useEffect 的执行时机取决于其依赖项数组&#xff08;第二个参数&#xff09;的设置方式。 根据 useEffect 的使用方式&#xff0c…

在校大学生想从事网络安全工程师,来听听过来人的经验,你会少走很多弯路_学会大学的专业课之后可以去网络安全嘛

大家好&#xff01;一直以来都有一些大学生粉丝私信向我“取经”&#xff0c;看得出很多人对前路多多少少都有些迷茫。 因此&#xff0c;我将大家的问题整理了一下&#xff0c;主要有这几点&#xff1a; 1.国内网安工程师薪资水平&#xff1f; 2.网安行业真实前景&#xff1f;…

怎么提取视频里的音频?非常简单的提取音频方法

怎么提取视频里的音频&#xff1f;在现代数字媒体环境中&#xff0c;视频和音频的结合已成为信息传播和创作的重要手段。随着互联网的发展&#xff0c;视频内容日益丰富&#xff0c;从社交媒体短视频到在线课程&#xff0c;再到电影和纪录片&#xff0c;音频在这些内容中的角色…

全解析:如何评估PLM系统的性价比?

在当今竞争激烈的市场环境中&#xff0c;企业为了提升产品创新能力、优化生产流程、提高市场响应速度&#xff0c;纷纷引入PLM产品生命周期管理系统。然而&#xff0c;面对市场上琳琅满目的PLM系统&#xff0c;如何评估其性价比&#xff0c;成为企业决策的重要课题。本文将从多…

高清视频格式转换软件 豌豆狐 WonderFox HD Video Converter v27.7.0 中文授权版

WonderFox HD Video Converter Factory Pro 是一款来自国外团队开发的视频编辑和转换软件。它的强大之处在于支持数十种视频格式和设备专用格式之间的互相转换&#xff0c;甚至可以处理HD超清和4K极清视频&#xff01;开启显卡加速后&#xff0c;转换速度飞快&#xff0c;效率超…

LeetCode讲解篇之3. 无重复字符的最长子串

文章目录 题目描述题解思路代码实现 题目描述 题解思路 因为我们需要求无重复字符的最长子串&#xff0c;这个我们首先需要想到使用滑动窗口&#xff0c;窗口内记录无重复的子串的所有字符&#xff0c;移动窗口的右边界时&#xff0c;发现当前字符在窗口内已经出现&#xff0c…

【LeetCode】动态规划—120. 三角形最小路径和(附完整Python/C++代码)

动态规划—120. 三角形最小路径和 前言题目描述基本思路1. 问题定义2. 理解问题和递推关系3. 解决方法3.1 动态规划方法3.2 空间优化的动态规划 4. 进一步优化5. 小总结 代码实现PythonPython代码实现Python 代码解释 CC代码实现C 代码解释 总结: 前言 三角形最小路径和 是动态…

CHI协议中的LPID

总目录&#xff1a; CHI协议简读汇总-CSDN博客https://blog.csdn.net/zhangshangjie1/article/details/131877216 当某个requester包含多个logically separate processing agent时&#xff0c;使用这个LPID&#xff1b; LPID在如下的opcode下&#xff0c;取值需要正确&#…

无人机在抗洪方面的作用!

一、实时监测与灾情评估 无人机能够迅速抵达受灾区域上空&#xff0c;通过搭载的高清摄像头、红外热成像仪等传感器&#xff0c;实时传输灾区图像和视频&#xff0c;为救援指挥中心提供第一手资料。有助于快速了解灾情&#xff0c;从而制定科学合理的救援方案。 二、搜救定位…

SpringMVC源码-AbstractHandlerMethodMapping处理器映射器将@Controller修饰类方法存储到处理器映射器

SpringMVC九大内置组件之HandlerMapping处理器映射器-AbstractHandlerMethodMapping类以及子类RequestMappingHandlerMapping如何将Controller修饰的注解类以及类下被注解RequestMapping修饰的方法存储到处理器映射器中。 从RequestMappingHandlerMapping寻找: AbstractHandle…

②三菱Modbus主站MELSEC转ModbusRTU/ASCII工业MELSEC网关串口服务

三菱Modbus主站MELSEC转ModbusRTU/ASCII工业MELSEC网关串口服务https://item.taobao.com/item.htm?ftt&id834634632647 MELSEC 通信单元 MELSEC 转 RS485 &#xff08;接上一章&#xff09; 动作指示灯 电源指示灯(PWR) 表示 MS-A1-80X1 通讯模块是否处于通电中。…

用ChatGPT工作提效,这些方法太实用了!

被任务和紧迫的截止日期压垮了吗&#xff1f;ChatGPT 是提升工作效率的关键武器。探索这篇指南&#xff0c;快速提升您的工作效率&#xff01; ChatGPT 在现代职场中的角色 随着数字时代的到来&#xff0c;技术进步彻底改变了商业世界&#xff0c;自动化和效率已成为企业保持…

怎样才能设计出全面且详细的测试要点?

今天想跟大家分享一个案例&#xff0c;关于一个测试场景引发的测试要点思考。 废话不多说&#xff0c;上菜&#xff01; 情况介绍 某天&#xff0c;开发同事提交了一个功能优化单&#xff0c;大概情况就是&#xff1a;为了节省内存使用&#xff0c;开启了一个配置&#xff0…

求解线性方程的方法步骤(含例题),附解线性方程计算器

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f4d0; 在数学和工程问题中&#xff0c;线性方程是一类非常基础且常见的问题。无论是解决简单的一元一次方程&#xff0c;还是复杂的多元线性方程组&#xff0c;都有一定的方法和步骤可以遵循。今天&#xff0c;我们…