OceanBase租户间是如何实现资源隔离的?
4 个赞
根据文档库中的信息,OceanBase数据库通过多种方式实现了租户间的资源隔离,确保了不同租户间的数据和服务相互独立且不互相干扰。下面总结了主要的隔离机制:
1. Unit作为资源分配的基本单位
- OceanBase数据库将Unit视为给租户分配资源的基本单元。一个Unit可以类比为一个Docker容器。
- 每个节点上可以创建多个Unit,在创建时每个Unit都会占用该节点的一部分CPU、内存等物理资源。
- 一个租户可以在多个节点上放置多个Unit,但在同一节点上只能拥有一个Unit。
2. CPU资源的有效控制
- 目前版本中,OceanBase数据库通过控制活跃线程数量(实际消耗CPU资源的线程)来管理CPU使用情况。
- 创建租户时指定的资源池定义了租户级别的CPU规格,从而实现租户间的CPU使用隔离。
- 在最新版本中,内核还支持通过cgroup技术对CPU进行更精细的控制和限制,但需要操作系统级别的配置配合生效。
3. 全局层面的前后台任务隔离
- OceanBase数据库支持全局CPU资源的前后台隔离功能,能够在全局层面上对所有租户的前台与后台任务进行资源隔离。
4. 多种类型的资源隔离
- 资源隔离包括但不限于User级别、SQL级别以及Function级别的资源隔离。
- 通过
DBMS_RESOURCE_MANAGER系统包,管理员能够进一步控制租户对于CPU和IOPS的占用情况。
5. 轻量级隔离优势
- 与Docker或虚拟机相比,OceanBase数据库的租户隔离方案更为轻量化,并且易于实现优先级设置等高级特性。
- 它避免了Docker或虚拟机在环境开销大、迁移成本高以及资源共享不便等方面的不足。
这些措施共同作用下,保证了OceanBase数据库内各租户之间具有良好的资源隔离性,提高了系统的稳定性和性能表现。
参考文献:
具体信息可参考以下文档:
学习下
本质上操作系统层面的cgroup方式吧
出来了边路吧唧吧唧
边路边路边路
操作系统集成电路模型