从一到无穷大 #7 Database-as-a-Service租户隔离挑战与解决措施

news2024/9/20 9:32:40

文章目录

  • 引言
  • 计算侧多租户隔离
    • 2DFQ
    • SQLVM
    • Retro
  • 其他隔离方法
  • 其他

引言

在云环境中租户之间的资源共享对于运营商的成本效益来说非常重要,但是一个主要问题是租户之间的资源隔离,这通常与Qos息息相关,从多租户的角度讲,安全性/性能与成本其实是互相矛盾的,[1]中提到:

• Degree of consolidation: The higher up in the stack virtualization is supported, the greater the degree of consolidation
achievable, leading to lower cost for the service provider.
• Degree of isolation: The lower down in the stack the virtualization logic is supported, the greater is the security and
performance isolation achievable across tenants.

所以核心要解决的问题是:在云环境Serverless的环境中,运营商如何在保证成本效益的情况下向用户提供一系列有意义的保障。

租户隔离其实可以理解为租户间的资源隔离,就这个角度讲,租户隔离需要在以下要点之间做trade-off

  1. 绝对的资源保障,即提供给用户的资源与购买时相比是任意时刻满足还是周期内近似满足
  2. 不对用户实际运行的工作负载做假设,即用户的查询可能在Mem/磁盘IO/网络IO/CPU任意维度先过载
  3. 满足用户弹性扩容物理隔离的需求
  4. 运营商成本效益,即单独的机器在近似满足其他约束的情况下尽可能多的放置租户,但是当资源被过度使用时,一个节点有可能没有足够的资源来满足其上所有数据库的资源需求,此时需要迁移或者扩容。

从公有云的定价策略来看,目前大体可以分为两种:

  1. 存储量+RU(某些模态可以是扫描的数据量)
  2. 存储+实例+其他

用户使用第一种(serverless)的初衷是为了省钱,为了扎实的价格竞争力在计算侧做资源级别的隔离是一个好的选择,因为这个时候计算层也可以选择大池子超卖。但是此时就会有超卖后不满足用户要求的情况出现。

用户使用第二种按照实例购买时,单独分配计算节点,存储节点依旧按照partition级别做隔离。而且当存算分离时存储节点基本上不会有CPU瓶颈,瓶颈基本集中在IO,而IO的基准线经测试是基本线性,此时多租户隔离很好做,因为在引擎层面工作负载的问题基本已经压缩到IO了,不需要大刀阔斧改引擎

计算侧多租户隔离

但是计算侧为了足够的成本效益仍旧需要放置多个租户在一台机器上,此时有这么几种方法。

2DFQ

应用场景为系统运行一组工作线程,工作线程从租户队列中选择下一个执行的请求,公平队列可以做到工作线程取任务执行的过程为每个租户提供公平的份额,且为不同租户服务时调度器不是突发的。

相对于一般的公平队列,2DFQ优势是The goal of Two-Dimensional Fair Queueing (2DFQ) is to produce smooth schedules for tenants with small requests.

但是正因为2DFQ是WFQ的变种,所以其计算时认为请求消耗的资源大小是像数据包大小一样可预测的,其实这很难做到,目前可行的方法是按照关系型数据库中SQL优化层中Cardinality estimation(不是count distinct的那个)的做法采样做预估。

设计挑战如下:

  1. 资源并发性
  2. 不同租户和不同API的请求对资源的需求可以达到1000倍(每一个请求在不同的线程中有不同的资格,小请求)
  3. 存在一个请求的资源需求和执行时间是不确定的(悲观估计策略)

2DFQ一篇论文其实就一段有用:
在这里插入图片描述

SQLVM

应用于单进程中多租户的性能隔离方案。这篇文章提出了在DBMS中内嵌一个VM,这个VM提供了资源最小使用粒度的reservation,并引入新的资源调度机制,以保证每个租户的资源reservations,最后在服务提供方无法满足约束时记录事件,后续补偿用户。

本质上仍然是在OS层面之上,即用户态中新增了一个资源调度层,以满足不同租户间的资源最低使用限度。文中只提到了IO调度的实际方法,[6]中提到了CPU的隔离方法,但是内存隔离没有提及。

但是其实方法是通用的,类似的方案可以在TiFlash中看到[8]。

其次SQLVM的做法其实是硬性限定了租户的资源使用上限,即最多就是reservations的值,不能多一点点,这对于突发请求防御性较差

Retro

这篇文章阐述的框架与Dynamo的RU控制框架较为类似。retro将机器上的组件抽象为控制流(每一个租户一个控制流),资源(执行资源的精确统计)和控制点(控制节点实际执行限流的措施,文中提到令牌桶)。一个控制节点提供一组API接受控制流的上报,执行BFAIR/RDRF/LATENCYSLO策略,决策控制点实际的限流策略。所以从隔离来讲其实还是基于限流点做,文中提到资源限制可以通过限制用户的吞吐来做(4.3节)。

但是Retro对于资源的态度与Dynamo也不一样。Dynamo是给每个租户分配一个配额,希望在周期内只使用这么多(不考虑burst),但是Retro对资源始终有一种探索上界的过程(BFAIR/RDRF),知道发现某个租户导致过载,则会减少资源需求,实际由控制点控制,这样可以让租户实际使用更多的资源

(题外话:BFAIR/RDRF两种策略与我最近设计的两个算法莫名的相似。。。。)

其他隔离方法

类似Redis慢查询隔离和HTAP负载隔离解决方法其实是完全不同的解决思路,都是很简单的思路,难点在于工业实现上,本文不再阐述。

其他

二十三岁的九局下半

参考:

  1. Multi-Tenant Cloud Data Services: State-of-the-Art, Challenges and Opportunities
  2. Tenant Placement in Oversubscribed Database-as-a-Service Clusters
  3. SQLVM: Performance Isolation in Multi-Tenant Relational Database-as-a-Service
  4. Retro: Targeted Resource Management in Multi-tenant Distributed Systems
  5. 2DFQ: Two-Dimensional Fair Queueing for Multi-Tenant Cloud Services
  6. CPU Sharing Techniques for Performance Isolation in Multi-tenant Relational Database-as-a-Service
  7. 数据库内核那些事|PolarDB HTAP如何实现行列混存(IMCI)查询优化?
  8. TiDB 6.5 新特性解析丨过去一年,我们是如何让 TiFlash 高效又稳定地榨干 CPU?
  9. 为什么资源隔离对HTAP至关重要?

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

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

相关文章

ChatGPT 不好用?那你看下这份 Prompt 工程指南

作为大型语言模型接口,ChatGPT 生成的响应令人刮目相看,然而,解锁其真正威力的关键还是在于提示工程。 在本文中,我们将揭示制作提示的专家级技巧,以生成更准确、更有意义的响应。无论你使用 ChatGPT 是为了服务客户、…

用格林童话教你1分钟清晰JS加密

在许多格林童话中,我们可以看到许多隐藏的玄机和谜题,就像JavaScript代码一样。为了保护您的代码安全,我们可以使用JavaScript混淆加密技术来隐藏代码中的逻辑和关键信息。在本文中,我们将以“灰姑娘”为例,介绍如何使…

【视频解读】动手学深度学习V2_00预告

00预告 【动手学深度学习V2】 深度学习是人工智能最热的领域,在过去十年,人工智能的主要突破都来自于深度学习。 深度学习的核心是神经网络,它与人工智能的其他领域不一样的是,神经网络是一个非常灵活的框架,它允许我…

typescript is类型谓词

一、类型谓词是干嘛的? 类型谓词可以有效的帮助我们根据条件缩小类型范围(narrowing)。它与 typeof、instanceof、in类似。但是不同的是typeof、instanceof、in关键字在js中已经是存在的,在ts中使用它们,进行类型收缩…

为什么北欧的顶级程序员数量远远超于中国?

说起北欧,很多人会想到寒冷的冬天,漫长的极夜,童话王国和圣诞老人,但是如果我罗列下诞生于北欧的计算机技术,恐怕你会惊掉下巴,先来看一些人物介绍: Linus Torvalds:是芬兰籍的计算…

人才引进都选什么大学,哪些世界大学排名更靠谱?

最近几年,全国各地都在加大力度引进人才。上海市2020年首先推出留学生落户政策,毕业于世界排名前50名大学的留学生可直接申办落户,毕业于51-100名大学的,缴纳社保满6个月后可申办落户。 国家人事部门也确定了留学生“国家引进人才…

Portraiture4.03一款适用于PS与LR的智能AI磨皮修饰滤镜插件

一款好的图片磨皮软件可以解放修图者的双手,减去繁琐的抠图操作,轻松去除人像脸部的瑕疵。经典而实用的portraiture图片磨皮软件,是人像修图的颇佳选择。 Portraiture 4 是专为人像磨皮开发的经典滤镜,多年以来已经成为人像后期基…

不懂新经济的周黑鸭,陷入“诺基亚式”困境

2022年,卤味巨头们的日子并不好过。曾经创造辉煌业绩的卤味三巨头绝味、周黑鸭、煌上煌,如今都处于业绩下滑的困境之中,巨头自救已然迫在眉睫,其中周黑鸭正在接受挑战的路上。 近期,周黑鸭在武汉举办首届单店特许领袖峰…

YOLO系列损失函数详解

YOLOV1 YOLOV1最后生成77的网格(grid cell),每个grid cell会产生两个预测框(bounding box),每个grid cell产生的两个预测框只能预测同一种类物体,也就是说YOLOV1最多只能预测49种物体,两个预测框中哪一个与标注框的IOU大就选哪一个…

创新案例 | Web3典范BrainTrust如何打造DAO增长飞轮3年扩张50倍

BrainTrust是一家创新的多边平台,类似于去中心化的BOSS直聘。在过去三年中,BrainTrust取得了惊人的增长,总服务价值增长了50倍以上。这家公司的增长模式非常独特,使得它的增长飞轮一路狂飙。在2022年,BrainTrust的成绩…

IP地址是如何定位的

IP地址是互联网中计算机的唯一标识,它由32位二进制数组成,分为四个8位的数字,每个数字之间用"."隔开,例如:106.110.92.215。IP地址的归属地指的是这个IP地址所在的地理位置,对于网络安全、网络监…

巧用语言模型——让准确率再涨一点点!

还记得在去年,我们曾经发过一篇文章介绍 icefall 中的语言模型使用方法:升点小技巧之—在icefall中巧用语言模型。如今半年过去了,k2 团队又有了一些新进展。今天来给大家做一个小小的总结,再给大家的模型涨涨点(又又又…

【问题解决】小米 升级后蓝牙关闭后 早上自动打开怎么办?

目录 原理 连接态: 半连接态:​编辑 关闭态:​编辑 重点来了 升级小米MIUI 14后,发现蓝牙无法关闭,每天睡觉前点击关闭,第二早上它又自动打开,感觉 手机中毒了!! 经过一番研究,搞…

YOLOv6 4.0 使用记录: OpenCV DNN C++推理

目录 1、下载源码 2、下载权重文件 3、配置环境 4、推理 6、ONNX格式导出 权重文件为yolov6list_s.pt 权重为yolov6.pt 7、opencv DNN推理 8、个人总结 1、下载源码 下载最新的4.0版本的 2、下载权重文件 我下的是YOLOv6Lite-S 3、配置环境 cd到项目目录,运…

国民技术N32G430开发笔记(16)- IAP升级 整合多个bin文件为一个升级包

IAP升级 整合多个bin文件为一个升级包 1、我们的程序分区目前为: Boot 0x8000000 – 0x8004000 16KB Settings 0x8004000 – 0x8006000 8KB App 0x8006000 – 0x800B000 20KB Download 0x800B000 – 0x800FFFF 20KB 2、烧录时候的bin文件有三个: Bootl…

Docker笔记整理

安装Docker 通过 uname -r 命令查看你当前的内核版本 uname -r 使用 root 权限登录 Centos。确保 yum 包更新到最新 yum -y update 卸载旧版本(如果安装过旧版本的话) yum remove docker docker-common docker-selinux docker-engine 安装需要的软件包, yum-u…

Web前端已死?别带节奏了,说白了就是“卷”

趁着“前端已死”这个话题还有点热度,我想再好好聊聊这个话题。社区里怎么只有前端已死的论调,后端、DB、运维、连原生开发还在好好“划水”。前端却发出了哀嚎:前端已死,找工作好难啊。 前端技术精微渊深,除了基础的…

( 数组和矩阵) 766. 托普利茨矩阵 ——【Leetcode每日一题】

❓766. 托普利茨矩阵 难度:简单 给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。 如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵 。…

【Python习题集7】Python对CSV文件数据进行可视化

csv可视化 一、实验内容二、实验总结 一、实验内容 1、datal.csv中的B、C、D和E列数据分别是日期、权重、A企业的销售额、B企业的销售额。读取C、D、E列数据,并统计E列数据的算术平均数、加权平均值(权值为C列数据)、方差、中位数、最小值、最大值。并绘制E列数据的…

MyBatis:使用 MyBatis 实现多表查询(多对一和一对多)、动态 SQL、缓存

文章目录 MyBatis:Day 03一、复杂查询的环境搭建二、多表查询1. 多对一:关联(1)联表查询(2)子查询 2. 一对多:集合(1)联表查询(2)子查询 3. 总结 …