详解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日

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。


相关文章
|
1月前
|
运维 负载均衡 微服务
|
3月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
322 0
|
5月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
24天前
|
存储 监控 NoSQL
Redis高可用架构全解析:从主从复制到集群方案
Redis高可用确保服务持续稳定,避免单点故障导致数据丢失或业务中断。通过主从复制实现数据冗余,哨兵模式支持自动故障转移,Cluster集群则提供分布式数据分片与水平扩展,三者层层递进,保障读写分离、容灾切换与大规模数据存储,构建高性能、高可靠的Redis架构体系。
|
6月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
6月前
|
存储 NoSQL Redis
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 + 无锁架构 + EDA架构 + 异步日志 + 集群架构
阿里面试:Redis 为啥那么快?怎么实现的100W并发?说出了6大架构,面试官跪地: 纯内存 + 尖端结构 +  无锁架构 +  EDA架构  + 异步日志 + 集群架构
|
6月前
|
存储 编解码 搜索推荐
文生图架构设计原来如此简单之社区与共享机制
工作流共享是文生图应用社区建设的核心功能,它使用户能够分享创作经验和技巧,形成知识共享生态。工作流序列化与存储设计需要解决复杂工作流的高效表示问题。
146 10
|
7月前
|
并行计算 PyTorch 算法框架/工具
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
本文探讨了如何通过技术手段混合使用AMD与NVIDIA GPU集群以支持PyTorch分布式训练。面对CUDA与ROCm框架互操作性不足的问题,文章提出利用UCC和UCX等统一通信框架实现高效数据传输,并在异构Kubernetes集群中部署任务。通过解决轻度与强度异构环境下的挑战,如计算能力不平衡、内存容量差异及通信性能优化,文章展示了如何无需重构代码即可充分利用异构硬件资源。尽管存在RDMA验证不足、通信性能次优等局限性,但该方案为最大化GPU资源利用率、降低供应商锁定提供了可行路径。源代码已公开,供读者参考实践。
539 3
融合AMD与NVIDIA GPU集群的MLOps:异构计算环境中的分布式训练架构实践
|
8月前
|
存储 监控 算法
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
在数字化办公时代,公司监控上网软件成为企业管理网络资源和保障信息安全的关键工具。本文深入剖析C++中的链表数据结构及其在该软件中的应用。链表通过节点存储网络访问记录,具备高效插入、删除操作及节省内存的优势,助力企业实时追踪员工上网行为,提升运营效率并降低安全风险。示例代码展示了如何用C++实现链表记录上网行为,并模拟发送至服务器。链表为公司监控上网软件提供了灵活高效的数据管理方式,但实际开发还需考虑安全性、隐私保护等多方面因素。
133 0
公司监控上网软件架构:基于 C++ 链表算法的数据关联机制探讨
|
7月前
|
存储 SQL 并行计算
【赵渝强老师】达梦数据库MPP集群的架构
达梦数据库提供大规模并行处理(MPP)架构,以低成本实现高性能并行计算,满足海量数据存储和复杂查询需求。DM MPP采用完全对等无共享体系,消除主节点瓶颈,通过多节点并行执行提升性能。其执行流程包括主EP生成计划、分发任务、各EP并行处理及结果汇总返回。为确保高可用性,建议结合数据守护部署。
188 0