数据库管理301期 2025-03-12
数据库管理-第301期 当KES遇到多租户(20250312)
作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE Partner 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸 CSDN:胖头鱼的鱼缸(尹海文) 墨天轮:胖头鱼的鱼缸 ITPUB:yhw1809。 除授权转载并标明出处外,均为“非法”抄袭
在数据库管理-第290期 数据库的多租户(20250205)中简单扯介绍了一下数据库多租户的概念和主流数据库的多租户技术。在那篇文章发出以后,来自金仓社区的美女运营麦麦,也就是最近『少安事务所』所长经常薅的那位,也就是下面这位:
发来消息说,金仓数据库也有多租户!本着对技术探索的角度,本期来了解一下金仓数据库KES的多租户技术。
1 再提多租户
这里就不再详解多租户的概念,而是说数据库的多租户或者说多租户需求场景需要实现的几点目标:
- 各租户数据库数据的完全的安全隔离,某租户无法直接库内访问其他租户数据
- 各类资源共享,包括但不限于CPU、内存、磁盘(容量、IO)、网络以及内核、系统以及数据库本身等
- 各类资源可实现静态/动态隔离,租户之间性能不互相影响
当然数据库的多租户和多租户场景还是有一些区别的,下面是一些业界针对多租户场景解决方案即共享资源隔离的技术方案汇总:
2 KES
金仓数据库的解决方案基本覆盖了所有多租户场景:
2.1 基于虚拟化
通过虚拟化技术(基于OpenStack,或使用商业软件如VMware),将物理主机资源隔离为单独的VM区,各VM资源相互隔离,同时所有VM又共享主机资源。
在数据库层面:
- KES实例部署在独立的VM隔离区,独享VM分配的资源,实现资源隔离
- 支持动态调整租户规格,可对实例节点个数、资源分配进行进行扩缩容管理
- 数据库高可用由数据库自身的集群、数据备份等来保证。
该方案适用于客户已有虚拟化平台层,具备虚拟化技术管理兜底。该方案也适用于公有云上的虚拟化多租户场景,使用各云的API接口接入进行统一管理,通过公有云上的虚拟机实现多租户场景:
2.2 基于容器
基于共享底层硬件资源,一般使用k8s及其衍生技术实现容器编排,通过容器技术(常见docker)实现底层资源的隔离和管理,实现多租户场景的需求。
在数据库层面:
- 由Operator完成租户实例的创建、分发、管理
- 基于容器编排技术可为每个用户租户部署独立的数据库实例组,数据库实例部署在相互隔离的资源中,达到配置和访问权限完全隔离
- 支持动态调整租户容量,可对服务节点个数,对租户垂直资源进行进行扩缩容管理
- 数据库高可用方式比较灵活,除数据库本身高可用集群外,可以由容器平台提供的能力实现,单个数据库实例挂死/异常自动漂移
该方案适用于客户已有k8s容器化平台层,具备容器技术管理兜底。同基于虚拟化方案相同,该方案也可以接入公有云的容器底座,实现公有云容器服务的接入管理。
2.3 基于实例
主备部署:
和传统数据库管理类似,即在一个物理机部署多个实例,每个实例使用不同的系统账号,实例间本身确保数据安全与隔离,通过KEMCC结合操作系统CGroup实现实例的资源分配与隔离。通过数据库集群实现高可用,即不同主备数据库承载于不同的物理主机上,以避免物理层面的单点故障。
该方案适用于中小型或边缘业务系统;IT投入低需要充分利用硬件资源;业务系统故障需要隔离;需要不同模式租户(MySQL/Oracle/PostgreSQL)等。
分布式部署:
基于实例的方案方案除了支持主备库以外,也支持分布式方式部署:
计算层:即代理层,由多个节点组成,彼此有租户元信息需要互相同步。对于应用层来说,计算层无状态,可以访问任意代理节点,做到统一访问入口
存储层:每组分片由KES RWC集群、RAC集群,甚至单机组成。不同架构组成的分片可用性不同,由用户根据租户数据的重要程度自行调整。多个分片分布在同台设备时,可以做到资源控制与隔离
业务访问流程:不同租户应用直接连接计算层,计算节点通过存储的租户元信息路由到下层对应的存储节点,实现数据访问的隔离,存储节点通过部署多个KES分片实例,实现资源隔离
基于实例的分片部署多租户场景解决方案除了上面主备方式的适用场景外,还支持租户资源可分片扩展以及支持统一业务入口。
但是同一般的分布式数据库相同,数据分片后会对业务产生较多的侵入,需要对应用进行较大范围改造。同时也会带来管理机器数量的增加和整体维护难度的增加。
2.4 基于数据库User
金仓数据库的数据库多租户技术概念与Oracle的CDB/PDB多租户技术有类似也有区别的地方:
- 相同的地方是,都是通过数据库将整体资源进行池化,但KES则需要先创建若干资源组。
- 不同于Oracle数据库每个PDB是一个租户,租户间相互隔离,一个租户下面可以有不同的用户,每个用户还能再进行隔离。KES是一个User代表一个用户租户,系统租户创建用户租户时,指定分配的资源组。限制租户间的数据互访问,租户独占其资源配额,保障数据安全。
该方案适用于中小型应用,边缘业务系统;客户投入成本低,单个服务器需要跑多个业务系统;数据库内划分不同的资源至不同的租户以应对多个业务系统,相互隔离无影响。
3 选型建议
这里是由金仓数据库提供的多租户场景解决方案的性能与优劣势对比,仅供参考:
通过性能对比以及优劣势比较,因为云底座本身的损耗/多实例的额外损耗和互相影响,基于数据库本身的多租户在相同硬件条件下对于性能发挥是最好的,这也是本地部署中且有多租户需求的最优选择,结合高稳定性的实例级设计以及KES RAC的横向扩展能力可以给客户提供更优的数据库多租户解决方案选择。
这里还要说明一点,基于虚拟化或容器的多租户场景解决方案目前在一个项目中只能支持一种云平台,所以现阶段没法实现混合与多云部署。但这不代表不能通过其他部署/管理模式实现,也期待未来金仓数据库能带来更加丰富的部署模式支持。
总结
本期对金仓数据库的多租户场景解决方案、适用场景以及对比进行了简单介绍。
老规矩,知道写了些啥。