聊聊 OceanBase 资源管理

2024-09-01 11:04

本文主要是介绍聊聊 OceanBase 资源管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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 ,这些资源既可以通过调大资源规格,也可以通过资源单元的数量来进行动态扩缩容,来满足不同业务的需求。

这篇关于聊聊 OceanBase 资源管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126753

相关文章

【Python知识宝库】上下文管理器与with语句:资源管理的优雅方式

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言一、什么是上下文管理器?二、上下文管理器的实现三、使用内置上下文管理器四、使用`contextlib`模块五、总结 前言 在Python编程中,资源管理是一个重要的主题,尤其是在处理文件、网络连接和数据库

聊聊说话的习惯

1 在日常生活中,每个人都有固定的说话习惯。心理学研究表明,通过一个人的说话习惯,也可以分析出他的性格特点。对于每一个人来讲,说话习惯已经融为他们生活中的一部分。在社交活动中,一些不良的说话习惯很可能会给他们带来麻烦。因此,了解说话习惯对心理活动的影响是十分有必要的。 2 具有顺畅的说话习惯的人,大多思路清晰、语速适中、用词准确并且声声人耳,是典型的顺畅型说话方式这种类型的人要么不说话,要么

理解C++全局对象析构顺序与 IPC 资源管理:避免 coredump

文章目录 0. 概述1. 问题背景2. 问题分析3. 解决方案:手动释放资源4. 深入剖析:为什么手动调用 `reset()` 有效?5. 延伸思考:如何避免全局对象带来的问题?6. 总结 0. 概述 在编写 C++ 程序时,使用全局或静态对象有时可能会导致不可预期的崩溃(如 coredump)。这类崩溃通常源于对象的析构顺序、资源的管理方式,以及底层资源(如 IPC 通道或共

聊聊分布式,再讨论分布式解决方案

前言 最近很久没有写博客了,一方面是因为公司事情最近比较忙,另外一方面是因为在进行 CAP 的下一阶段的开发工作,不过目前已经告一段落了。 接下来还是开始我们今天的话题,说说分布式事务,或者说是我眼中的分布式事务,因为每个人可能对其的理解都不一样。 分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在微服务架构中,几乎可以说是无法避免,本文就分布式事

业务资源管理模式语言09

示例: 图13 表示了QuoteTheMaintenance 模式的一个实例,在汽车修理店系统中,其中“Vehicle”扮演“Resource”,“Repair Quotation”扮演“Maintenance Quotation”,“Repair shop branch”扮演“Source-party”,“Customer”扮演“Destiny-Party”。 图13——QuoteThe

关于OceanBase MySQL 模式中全局索引 global index 的常见问题

在OceanBase的问答区和开源社区钉钉群聊中,时常会有关于全局索引 global index的诸多提问,因此,借这篇博客,针对其中一些普遍出现的问题进行简要的解答。 什么是 global index ? 由于 MySQL 不具备 global index 的概念,因此这一问题会经常被社区版用户提及。就在前几天,就要人询问下面这个语法的意义。 create table part_tes

Winsock服务器内存资源管理

一般来讲, 在服务器上,如果有足够的资源,Winsock server,理论上可以支持成千的并发连接。而现实是,我们没有足够的资源可供使用,分配。本文主要来讨论一下内存资源之于Winsock server开发的重要性。 一)基本概念。 -> Pages,Locked Pages.         在现代操作系统中,内存管理会把主存(RAM)分成Pages来管理。 Paging(或者swap

聊聊资源调度

资源调度 般分为两个阶段: 是实现物理资源的虚拟化(即资源的抽象)于当前机器的性能越来越好,硬件配置越来越高,直接用物理机跑业务比较浪费,所以将物理机分割成更小单位的虚拟机,这样可以显著提升机器的利用效率,在公司内部一般采用容器技术来隔离资源 是将资源虚拟化后进 步在时间和空间上实现更细粒度的编排 ,优化资源的使用。 1 .一些数据 如果公司的几万台机器都是物理机,那么资源的使用率稍低: CP

Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】

Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】 目录 Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】 一、简单介绍 二、YooAsset  引入工程 三、Sample 案例 Android 端 热更 四、Python