谈一谈文件系统的多租户实践

本文涉及的产品
对象存储 OSS,OSS 加速器 50 GB 1个月
简介: 为了保证多租户场景下,单个用户可以获得与独占资源时相同的体验,云服务需要综合利用负载均衡、请求优先级调度、实例隔离等多项技术,让用户流量恰当地分布在整个集群中。

多租户是云服务的重要属性。通过集群级别调度云服务实例,亦或是机器级别调度来自不同云服务实例的请求,云服务既要保证整个集群的物理资源都得到高效的利用,同时也要保证每个租户都能达到预期的性能指标。


1.多租户与QoS的必要性


云作为一种通用资源,为各行各业提供了强大的计算与存储能力,避免了用户自建基础设施、自行维护各类服务等所带来的开销。云服务通过负载均衡、隔离及QoS等技术,以及有限的物理资源服务了海量的用户。同时,从单个用户的视角看来,其性能与独占物理资源时的相比,没有明显的差异。


为了保证多租户场景下,单个用户可以获得与独占资源时相同的体验,云服务需要综合利用负载均衡、请求优先级调度、实例隔离等多项技术,让用户流量恰当地分布在整个集群中。另外,处理多个云服务实例请求的单个服务节点,需要公平地处理来自所有云服务实例的请求,避免请求饥饿及大负载实例对小负载实例的影响,保证每个云服务实例都能够达到其相应的服务等级。


2.多租户与QoS的一般技术


多租户与QoS的一般技术包含两个维度:一是集群维度,一是节点维度。


从集群维度来讲,云服务需要使用最少的资源来服务最多的云服务实例。云服务会通过动态负载均衡技术,将若干云服务实例调度到同一服务节点上,保证此服务节点不过载,且能够满足运行在其上的云服务实例的负载。云服务实例的压力是动态变化的,当某些云服务实例压力变大,导致某一个服务节点过载时,云服务的负载均衡器需要及时识别出来,并将部分压力迁移到闲置的服务节点上。如果服务节点不足,需要对整个集群进行扩容。在进行调度时,除了尽量均衡地分散压力,还需要限制某个用户的所有云服务实例或者单个云服务实例的若干分区的分布,以保证某个服务节点异常时,受影响的用户数尽可能少。从节点维度来讲,多租户的核心是保障每个租户的服务质量,使其延时和吞吐不受其他租户负载的影响。


总体而言,多租户系统需要具有保护底层资源的能力,同时,保证租户的公平性和服务质量的优先级。而这其中,便涉及资源保护、公平调度和优先级调度三个问题。


(1)资源保护

资源一般有两个属性。


· 容量:指底层资源提供的最大能力,例如NVMeSSD可以提供100万次的IOPS和2Gbps的数据吞吐量。当达到资源的容量上限时,资源的访问延时会加长,性能变差。

· 并发度:指资源支持的若干并发度。当提交的并发请求超过系统所能承受的上限时,也会导致资源的访问延时加长。


资源保护也是从对以上两个属性的限制入手的:限制容量即以一个非常小的时间片来限制IOPS;限制并发度即通过限制资源上的请求数的方式来达到保护资源的目的。


限制容量一方面可以保护底层资源,另一方面也可以显示限制租户的配额,从而明确地衡量与限制某个租户的资源占用。然而,当底层资源由于种种原因出现性能抖动时,如果多租户系统无法及时感知并阻断新请求的提交,那么等待使用资源的请求会持续堆积,导致整个系统出现雪崩现象。


限制并发度可以很好地处理底层资源的性能抖动。同时,为了限制租户的配额,还需要额外添加一层应用层的容量限流。


(2)公平调度

给定若干租户的任务后,调度决定了何时执行某一条请求,公平意味着不同租户的请求可以以相同的概率得到执行,从而达到所有租户平均排队时间最短、平均延时最小的目标。


为了解耦请求的接收与处理,一般请求被接收后,会被插入一个任务队列中,等待业务模块去执行。单个共享的任务队列和多租户是矛盾的,当所有租户的请求在一个任务队列中排队时,很难将一个租户的负载与其他租户的负载隔离,为了达成“所有租户延时最坏只与租户数T线性相关,与其他租户负载无关”的目的,多租户系统需要为每个租户提供一个自己的任务队列,这是公平调度的基础。


在请求被插入任务队列中后,调度器会以特定的策略来将队列中的任务提交到业务模块执行,如FIFO、Round Robin、Priority等典型策略。通过多任务队列,以及恰当的调度策略,单个服务节点上的不同租户的请求可以得到公平的调度与执行,从而给予单个租户独占系统的假象。


(3)优先级调度

在进行调度请求时,第一目标是公平调度。然而,某些租户具有一些特殊属性,如延时敏感、业务重要性高等。对于此类租户,多租户系统在调度时会给予资源倾斜,以保证他们延时更短,或者在资源被用满时,优先保证他们的服务质量。


3.文件存储的多租户实践


不同租户间的负载情况千差万别,同一租户低峰时段与高峰时段之间的压力差异也十分巨大。同时,文件操作是不等质的,不同类型请求对服务资源的消耗显著不同,例如,获取单个文件的属性与将一个文件重命名到另外一个目录下,这两者的开销相差极大。为了高效服务各式负载与各类请求,文件存储实现了集群负载均衡,同时引入了节点QoS机制。


(1)集群负载均衡

为了充分使用集群能力,文件存储通过一个集群负载均衡器来对元数据节点进行负载均衡。当检测到某个元数据节点过载时,负载均衡器会负责将过载节点上的部分实例迁出,保证单个元数据节点上的所有文件系统实例都能够获取足够的资源来完成请求处理。


(2)节点QoS机制

文件存储单个元数据节点上采用了如下图所示的架构进行多租户的QoS控制,具体说明如下:


· 外部接口层:QoS对外提供提交任务(Submit Task)接口。租户请求进入Qos系统时,系统为每个租户维护一个任务队列(Task Queue),任务请求进入对应队列的尾部。

· 调度层:对若干任务队列进行调度,保证每个租户可以公平地使用底层的共享物理资源。对于特殊租户,调度层会给予一定优先级进行优先调度。

· 资源保护层:资源保护层封装底层的共享物理资源,通过对并发度的控制来主动控制下发到底层资源的流量。当底层资源空闲时,主动从调度层获取任务来执行。

文件存储元数据节点架构.png

文件存储元数据节点架构


在这样的架构设计下,首先,将请求按照租户粒度抽象成多个队列,每个租户维护自己的请求队列,避免单个租户打爆系统资源队列引起的毛刺;其次,通过调度层对租户任务队列进行调度,将请求的任务队列控制在QoS系统内,实现租户的公平调度,避免因底层的共享物理资源排队过深而导致延时和优先级无法得到保证的情况发生;再次,控制单个租户任务队列对底层的共享物理资源的占用,避免单个租户用尽底层的共享物理资源;最后,通过资源保护层控制请求下发,避免在底层的共享物理资源性能退化时,因请求无限堆积而引发系统崩溃。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
搜索推荐 数据管理 定位技术
iOS应用开发中有多种主流框架
iOS应用开发中有多种主流框架
896 60
|
Linux 异构计算 Docker
实战 Google Colab,一起用 GPU
实战 Google Colab,一起用 GPU
1009 0
|
存储 API 开发工具
DeepSeek 3FS解读与源码分析(5):客户端解读
本文深入解析了3FS的客户端模式,包括FUSE Client和Native Client(USRBIO)。
DeepSeek 3FS解读与源码分析(5):客户端解读
|
5月前
|
数据采集 机器学习/深度学习 人工智能
关于数据集的采集、清理与数据,看这篇文章就够了
本文用通俗语言解析AI“隐形王者”——数据集,涵盖本质价值、三类数据形态、全生命周期七步法(需求定义→采集→清洗→标注→存储→划分→评估),并以垃圾评论拦截为例手把手实操。强调“数据即新石油”,质量决定模型上限。
464 16
|
人工智能 自然语言处理 数据安全/隐私保护
智源研究院发布开源中文互联网语料库CCI 4.0,新增高质量英文数据与合成数据
2025年5月6日,智源研究院在法国巴黎举行的GOSIM全球开源创新论坛上发布大型开源文本数据集CCI 4.0,为全球的大模型创新发展再次提供重要的开源资源,并积极推动全球开源合作。
495 10
|
存储 人工智能 文件存储
阿里云云存储技术:构建智能时代的数字底座
在数据成为核心资产的时代,阿里云云存储技术为企业提供从数据存储、管理到智能分析的全栈式解决方案。涵盖对象存储(OSS)、块存储、文件存储三大核心服务,支持智能分层、全球加速与数据湖集成等功能。通过极致性能优化、全链路数据安全、绿色低碳存储等六大创新引擎,助力企业实现数字化转型。阿里云云存储不仅满足传统业务需求,还赋能AI训练、混合云灾备、元宇宙等前沿场景,推动数据价值最大化。未来,阿里云将持续探索智能化与无边界化的存储技术,为企业创造更多可能。
1123 13
|
前端开发 JavaScript API
前端大佬都在用的usePagination究竟有多强?
usePagination 是 alovajs 提供的一款强大的分页请求工具,专为简化分页场景而生。它能自动管理分页数据、支持预加载、追加模式以及丰富的列表操作函数,极大提升开发效率与用户体验。作为下一代请求工具,alovajs 不仅涵盖 15+ 请求策略,还通过状态化数据和特定事件减少代码量。无论是下拉加载还是翻页优化,usePagination 都能轻松应对。如果你正在寻找高效的分页解决方案,不妨试试这个贴心的工具!
|
安全 Java 编译器
springboot 整合表达式计算引擎 Aviator 使用示例详解
本文详细介绍了Google Aviator 这款高性能、轻量级的 Java 表达式求值引擎
2461 6
|
SQL 缓存 关系型数据库
如何优化分页查询的性能?
【8月更文挑战第3天】如何优化分页查询的性能?
941 37

热门文章

最新文章