详解K-DB RAC集群下的锁机制管理(二) ——K-DB集群基本架构

数据库锁专门协调不同进程间的资源冲突,系统资源冲突的类型、频率、复杂度等决定了锁技术的发展,而资源冲突的情况又与数据库系统的基本架构高度相关。例如,在standby架构下,虽然以多节点集群运行,但是实际各个节点轮换对资源进行操作,资源冲突更多的体现为节点内进程或者是线程之间的冲突,相对简单,与之相应的锁机制也就简单。而K-RAC同时支持多个节点共同操作,由此带来的资源冲突问题远比其他架构更为复杂。因而,本文将先介绍K-DB的基本架构,由此引出K-DB锁的存储管理、构成以及锁同数据库映射关系的建立等。

基于共享磁盘的K-RAC

K-RAC是浪潮基于共享存储的集群技术。数据库实例节点存放数据库的执行文件和参数配置文件等。共享数据文件,日志文件,控制文件这些数据库的必备文件,此外还有集群控制文件(这点是区别于单机数据库),都存放在共享磁盘上。

 

K-DB集群物理架构图

全局缓存融合

在RAC集群中,不仅磁盘共享,从逻辑上看,各个节点之间的内存也可看做是共享的。比如,当一个节点即将读取的数据已经在另一个节点的内存中时,该节点可以从另一个节点的内存中获取数据,避免了从磁盘中读取,减少I/O的消耗。这个技术就是数据库的缓存融合,这是K-DB 数据库RAC集群的技术核心和技术难点。

K-DB锁机制的构成

在设计锁机制的时候,应先设计好以下3个问题:

  1. Where。锁信息存放在什么地方更加合适,也就是当节点之间发生争用数据块的时候,都可以很快捷的访问到?
  2. What。锁中需要记录哪些信息?
  3. How。怎样来维护这个锁信息?

下图是K-DB共享存储集群的进程架构图。橙色的部分表示处理缓存融合的主要模块。

 

K-DB 进程架构图

其中,

GLD全局锁目录存放着数据库用户锁信息;

Cluster Wait-lock Service 集群等待锁服务是用于提供全局锁管理的;

Cluster Cache Control集群数据缓存控制器,用于处理数据库中数据块的传输。

上述三个模块一起协调处理,实现了数据库集群的锁机制管理。

K-DB锁与相关的数据管理

K-DB在每一个节点都会划分出一部分内存与其他节点共享,组成share pool,GLD就是位于每一个节点的share pool 中,所有节点的GLD 汇总在一起构成完整的GLD。

介绍完了GLD之后,下一步就是让锁和相应的数据库建立可逆映射关系,这种映射关系的建立是通过为数据库指定master节点的方式实现的。每一个数据块会根据它的block address计算得出hash值,来对应一个master节点,在master 节点中记录该数据块的锁信息。

在如下图中3个节点的集群中,A,B,C三个节点中每一个节点的内存区域,都是GLD的一部分,3个内存区域组成在一起,构成了GLD所有的数据库,通过hash算法,对应的master节点平均分配到3个节点中。

原文发布时间为: 2016年7月29日

    时间: 2024-10-25 14:35:32

    详解K-DB RAC集群下的锁机制管理(二) ——K-DB集群基本架构的相关文章

    详解K-DB RAC集群下的锁机制管理(一) ——K-DB与锁技术的演进

    集群功能是数据库产品高可用性的重要一环,集群架构是保障业务连续性的核心架构,体现着数据产品的高可用性和技术水准.但在业界集群架构有多种方案和技术,其中最具稳定性.最能够保障业务连续性的架构当属于RAC集群,即Real Application Cluster.RAC集群特点是多个数据库节点共享存储,节点多活,可同时处理业务请求,具有负载均衡和故障转移两大特性,以此为系统提供业务连续性和高性能保障,经过多年电信.金融等关键行业的核心业务检验,RAC集群技术已经成为业界数据库集群的首选方案. 目前,甲

    详解K-DB RAC集群下的锁机制管理(三) ——K-DB锁包含的信息以及运行机制

    这是关于K-DB锁技术的最后一部分,此前,陆续介绍了K-DB的演进.基本架构.锁目录的存储以及同数据块映射关系的建立等.本文将介绍K-DB锁包含的信息和运行机制,也就是每条锁到底包含哪些信息,以及每一条锁是如何建立.执行和取消的. K-DB锁包含的信息 不同数据库产品的锁记录的信息差异不大,通用数据库在集群架构下通常需要的锁信息如下.锁信息的复杂性更多与技术架构相关.集群架构的数据库锁,需要记录的信息远远超过了Active-Standby架构的数据库产品,K-DB锁纪录的信息主要包含以下几点:

    详解K-DB RAC集群下的锁机制管理(四) ——K-DB锁的典型使用场景以及相关测试数据

    在前三篇文章中,已经完成了对K-DB所技术的完整概述,包括K-DB基本架构.锁技术的存储.构成.运行机制等,读者至此应该对K-DB锁相关技术已经有了完整的了解.锁技术的最终的目的是协调冲突资源的使用,本文将列举几个典型的锁技术的使用场景,帮助读者更好的理解K-DB的具体运行机制,最后本文也会用测试数据来证明K-DB锁的高效性和稳定性. K-DB锁的典型使用场景 不同级别和条件,不同的insane,锁的申请和使用都有所区别,下面我们以一个3节点K-DB集群为例,来看具体的使用场景. 测试场景一:A

    详解Node.js包的工程目录与NPM包管理器的使用_node.js

    工程目录 了解了以上知识后,现在我们可以来完整地规划一个工程目录了.以编写一个命令行程序为例,一般我们会同时提供命令行模式和 API 模式两种使用方式,并且我们会借助三方包来编写代码.除了代码外,一个完整的程序也应该有自己的文档和测试用例.因此,一个标准的工程目录都看起来像下边这样. - /home/user/workspace/node-echo/ # 工程目录 - bin/ # 存放命令行相关代码 node-echo + doc/ # 存放文档 - lib/ # 存放API相关代码 echo

    php各种编码集详解和以及在什么情况下进行使用_php技巧

    字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集.GB2312字符集.BIG5字符集. GB 18030字符集.Unicode字符集等.计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字. 中文文字数目大,而且还分为简体中文和繁体中文两种不同书写规则的文字,而计算机最初是按英语单字节字符设计的,因此,对中文字符进行编码,是中文信息交流的技术基础.本文将按照字符集的时间顺序讨论几种典型的字符集,选取几种代表性的

    Log4j配置详解及不同的包(package)下的日志写入到不同的日志文件下

    以下都是log4j.properties要写入的内容: 一:参数介绍: 1.Log4J配置文件的基本格式如下: [plain] view plaincopy #配置根Logger   log4j.rootLogger  =   [ level ]   ,  appenderName1 ,  appenderName2 ,  -      #配置日志信息输出目的地Appender   log4j.appender.appenderName  =  fully.qualified.name.of.a

    Linux下套接字详解(九)---poll模式下的IO多路复用服务器

    poll多路复用 poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制. poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述符是否就绪,它的开销随着文件描述符数量的增加而线性增大. poll编程模型 函数原型 函数格式如下所示: # include <poll.h> int poll ( struct pol

    Linux下套接字详解(十)---epoll模式下的IO多路复用服务器

    epoll模型简介 epoll可是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的. 其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说的- 常用模型

    详解DNS的常用记录(下):DNS系列之三

    在上篇博文中我们介绍了DNS服务器中几种不可或缺的记录,包括A记录,NS记录和SOA记录.本篇博文中我们将继续为大家介绍DNS的另外几种常用记录,希望能对大家了解DNS有所帮助. 四 MX记录 MX记录也被称为邮件交换器记录,MX记录用于说明哪台服务器是当前区域的邮件服务器,例如在hexun.com区域中,mail.hexun.com是邮件服务器,而且IP地址是202.99.16.125.那么我们就可以在DNS服务器中进行下列处理: 1.为邮件服务器创建A记录 如下图所示,我们首先为邮件服务器创