聊聊 OceanBase 资源管理

news2024/11/14 17:38:49

OceanBase 是分布式多租户架构数据库,其分布式集群从资源角度看可以分成集群、Zone、OB Server、资源池和租户等几个层次。

今天我们从集群和资源两个层次梳理 OceanBase 资源管理相关的概念。

在这里插入图片描述

OceanBase 集群管理

OceanBase 集群包含若干个Zone,一个Zone内可包含若干台物理机,每台物理机只能隶属于一个Zone,同一个Zone内的物理机通常部署在相同的机房内。Zone内的物理机提供CPU、内存和存储等资源给上层租户。

  • Zone

    集群是由多个 Zone 组成的,Zone 被更多的赋予了物理位置上的意义。比如在两地三中心的架构中,我们可以把 Zone 按照地域划分为 SH-Zone、HZ-Zone等;如果集群规模没那么大,也可以按照物理机柜位置分为 CAB1-Zone、CAB2-Zone等,不同地域的服务器分配到不同的 Zone 中。

    Zone 的个数要求大于3,建议是基数。每个 Zone 中保存一份完整的副本,单个 Zone 故障不影响业务。

  • OB Server

    每个 Zone 中包含一台或多台 OBServer ,是具体的物理服务器,负责提供租户运行所需要的资源。

    Zone 中的每台 OBServer 都是独立的,有独立的计算和存储引擎,保存副本的一部分数据。单台的 OBServer 故障,OceanBase 会有一定的策略对其中保存的数据进行保护,避免同时出现多台故障,影响业务的正常使用。

Zone 和 OBServer 提供了物理级别的资源管理和映射,在实施之前需要规划和设计好系统架构及对应的资源需求。

OceanBase 资源管理

OceanBase 数据库是多租户的分布式数据库,一个集群内可以创建多个相互独立的租户,每个租户提供独立的数据库服务。

为了避免租户之间的相互干扰,OceanBase 采用资源单元和资源池进行资源管理,实现租户之间的资源隔离。

  • 资源单元配置 (Resource Unit Config)

    资源单元配置是资源池的配置信息,用来描述资源池中每个资源单元可用的 CPU、内存、存储空间和 IOPS 等。集群中支持定义多种规格的资源配置,根据租户的需要选择合适的配置。

    资源配置是静态配置信息,并不实际分配资源空间,修改资源配置可以动态调整资源单元的规格,进而调整对应租户的资源池分配。

  • 资源单元 (Resource Unit)

    资源单元是资源分配的最小单位,同一个资源单元不能跨OBServer节点,每个租户在同一台OBServer节点上只能有一个Unit。

    资源单元包含了计算存储资源(CPU/内存/存储等),根据资源配置定义来分配,同时资源单元也是负载均衡的基本单位,在集群节点上下线、扩缩容时会动态调整资源单元在节点上的分布,从而实现资源使用的负载均衡。

    资源单元可以看成是一个轻量级的虚拟机,所有的租户副本最终都保存在资源单元中,因此也可以说资源单元是数据的容器。

  • 资源池 (Resource Pool)

    资源池描述了租户所能使用的所有资源,由具有相同资源配置的若干个资源单元组成。一个资源池只能属于一个租户,一个租户可以拥有若干个资源池。

    可以根据租户的资源需求选择对应的资源配置,资源需求较大的租户,也可以通过分配多个资源单元数量 (unit_num) 来满足资源分配的需求。

以下简单列举租户的创建和资源分配流程,帮助大家更好的理解上述的概念。

## 创建资源配置
create resource unit ut_5c2g max_cpu=2, max_memory='1G', max_iops=10000, max_disk_size='10G', max_session_num=1000000;
## 使用已经定义好的资源配置创建资源池
create resource pool pl_5c2g unit=ut_2c2g, unit_num=1;
## 使用已经创建好的资源池创建租户
create tenant obcp_t1 charset='utf8mb4', zone_list=('zone1,zone2,zone3'), primary_zone='zone1,zone2,zone3', resource_pool_list=('pl_5c2g') set ob_tcp_invited_nodes='%';

通过资源配置将服务器资源定义为更小的粒度,创建资源池时指定资源配置,建立资源池和资源配置之间的关联,租户创建时则根据资源池描述的资源合集进行资源分配。相信大家一定接触和使用过虚拟机,以上的资源管理模式是否觉得和虚拟机的使用很相似。OBServer 就是虚拟机中的物理服务器,负责提供租户所需要的资源;资源配置相当于虚拟机中的模板,通过模板可以继承资源使用分配,快速克隆出需要的虚拟机;而租户则是虚拟机,利用服务器所提供的资源启动相应的相应的数据库服务。

总结

OceanBase 数据库发源于阿里系,其架构是基于互联网系统高可用、资源池化、快速交付、动态扩缩容理念设计的。

物理层面上,通过 Zone 提供了数据中心服务器级的高可用保护;逻辑层面,通过资源配置将服务器资源拆分为更小的单元,可以为不同类型的应用分配不同类型和不同数量的 Unit ,这些资源既可以通过调大资源规格,也可以通过资源单元的数量来进行动态扩缩容,来满足不同业务的需求。

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

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

相关文章

CRE6511KL 原边SOP7电源芯片

CRE6511KL 是一款内置高压 BJT 功率开关管,5W多模式原边控制的开关电源芯片。CRE6511KL较少的外围元器件、较低的系统成本设计出高性能的交直流转换开关电源。CRE6511KL 提供了极为全面和性能优异的智能化保护功能,包括逐周期过流保护、软启动、芯片过温保护、输出过…

Hot Chips 2024:博通(Broadcom)展示AI计算ASIC的光学连接

引言 在2024年的Hot Chips会议上,博通展示了其最新的AI计算专用集成电路(ASIC),这款ASIC集成了光学连接技术。这一展示不仅体现了博通在定制AI加速器领域的领先地位,也预示着未来数据中心网络技术的一个重要发展方向。…

Ubuntu上qt使用SSH样式表

SSH样式表 如果学习过web的同学都知道,我们在学习HTML的时候会用到样式表,我们使用它来更改我们的颜色、大小、背景等等。上到后面,老师会说:我们如果在HTML文件中编辑太多的样式,就会让代码看起来非常的繁琐&#xf…

Obsidian个人知识库搭建流程

Obsidian的安装 Obsidian官网 个人博客搭建 xlog【使用xlog搭建个人博客Step by Step】 知乎【使用xlog搭建个人博客Step by Step】

实习的一点回顾Gradle

1 项目目录下执行 ./gradlew build,用.gradlew自动构建 首先有一个gradlew(linux)或者gradlew.bat(win)是用来检查java配置,环境配置之类的东西 然后去启动gradle/wrapper/gradle-wrapper.jar去检测本地gra…

【Google Play版】bilibili 3.19.2最新国际版(如何鉴别是否官方?)

相信玩 B 站的小伙伴也不少,国内版确实太臃肿了,已经“变质”了。 这是主界面,我没有做任何设置,刚装好就是这样: 摘自 Play 最新的评论: “3.19非常好,解决了我之前两个痛点。一是首页的自动…

基于PCA-SVM的人脸识别系统(MATLAB GUI)

matlab人脸识别系统(GUI),PCASVM方法 源码详细注释以及适配于本系统的5k字的理论资料(方便学习) GUI里的人脸识别算法:PCA-SVM 功能:利用ORL数据库,进行训练,测试,并可对单张图片进行识别 两个界…

ArrayList的详细使用教程

ArrayList实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量(capacity),表示底层…

vscode写markdown(引入html及css语法)

vscode写markdown 下载插件插入代码markdown中引入html和css语法导出pdf 下载插件 Markdown All in OneMarkdown Preview EnhancedPaste Image 插入代码 afdfafamarkdown中引入html和css语法 呵呵 用ctrlshiftp 搜索"Markdown Preview Enhanced:Customize CSS"在…

个人旅游网(2)——功能详解——用户登录注册

文章目录 一、用户登录1.1、接口详解1.1.1、isLogged (判断用户是否登录)1.1.2、find-by-telephone(输入手机号时校验手机号是否注册)1.1.3、send-message(发送验证码)1.1.4、login-by-telephone(登录按钮)…

Guarded Suspension 保护性暂定模式 以及嵌套死锁问题

多线程交互时,满足条件才去执行,否则阻塞一直到满足条件。当然可以用wait/notify实现。 本文用JUC包下的reentrantlock和其条件变量来完成。 文章目录 首先定义Predicate 和GuardAction;然后定义Blocker如何使用完整代码如下嵌套死锁问题 首…

PWMI模式测频率占空比

开启时钟 GPIO 时基单元 输入捕获初始化部分 配置两个IC通道同时捕获同一个引脚的模式 //快捷将电路配置成PWMI标准的标准结构,只支持通道1、2不支持3、4 //只需要传入一个通道的函数,此函数同时会把另一个通道配置为相反的配置,实现PWMI…

python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存及转存关于OSI的七层模型和TCP/IP四层模型

一、python读取txt文本文件-批量更改mysql数据库中一批用户的用户名的python脚本保存 做一个简单的事:使用python读取一个txt文件,里面存储着N行用户id,需要一行行读取后再读取另一个存储用户昵称的txt文件,判断昵称是否有重复&am…

已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分检索值为90的元素时,检索成功需比较的次数是( )。A.1

已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分检索值为90的元素时,检索成功需比较的次数是&a…

【Python系列】text二进制方式写入文件

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C++笔记---模板初阶

1. 初识模板 模板是什么 模板就是一种通用的模型,只要我们给出模板,编译器就可以自动帮助我们自动生成函数或类。 模板又分为函数模板和类模板。 模板的意义 我们在使用函数重载的过程中,常常会遇见下面的情况: void Swap(i…

业务资源管理模式语言03

示例: 图3 表示了IdentifyTheResource 模式的实例,其中“Product”扮演“Resource”角色。 图3 ——IdentifyTheResource 模式的实例 下一个模式: 完成IdentifyTheResource,下一个模式是QualifyTheResource(2&#…

使用 nuxi clean 命令清理 Nuxt 项目

title: 使用 nuxi clean 命令清理 Nuxt 项目 date: 2024/9/1 updated: 2024/9/1 author: cmdragon excerpt: nuxi clean 命令是管理和维护 Nuxt 项目的重要工具,它帮助你快速清理生成的文件和缓存,确保开发环境的干净。通过定期使用这个命令,你可以避免由于缓存或生成文件…

python 天气与股票的关系--第3部分,建立模型

起因(目的): 继续瞎折腾。 过程: 假设有下面这些规则: 天气中的温度, 如果最高温度大于 36, 那么就是坏天气。如果最低温度小于 5, 那么也是坏天气。如果下雨, 下雪, 那么也是坏天气。其他情况为 好天气 import pandas as pd…

AVL树建立

AVL树是在二叉搜索树基础上实现的,与二叉搜索树不同的是,AVL树的左右子树高度相差不超过1. AVL树的旋转 大致分为四类: 单旋: 左左——右旋:使平衡因子为-2的父节点与左子树相连,该节点的左节点与左孩子…