当前位置: 首页 > news >正文

百度沧海文件存储CFS推出新一代Namespace架构

每秒创建百万文件,百度沧海·文件存储CFS推出新一代Namespace架构

随着移动互联网、物联网、AI 计算等技术和市场的迅速发展,数据规模指数级膨胀,对于分布式文件系统作为大规模数据场景的存储底座提出了更高的要求。已有分布式文件系统解决方案存在着短板,只能适应有限的场景:

>> 新型分布式文件系统无法承接传统领域内的所有 WorkLoad:通过只支持部分 POSIX 接口来简化系统设计,无法完全兼容 POSIX 协议。

>> 传统分布式文件系统无法支持海量小文件场景:为了保证低延迟,元数据的可扩展性较差、随文件规模性能和稳定性下降严重,无法支持如 AI 训练、自动驾驶等文件规模达到十亿甚至百亿规模的 AI 场景。

因此,设计出一款不仅能完美兼容传统应用,又能适应最新 AI 场景需求的分布式文件存储,显得意义重大。这样的分布式文件系统需要满足:

  • 完全兼容 POSIX 协议。

  • 在确保元数据低延迟、稳定的情况下,可线性扩展,支持百亿文件规模,具备超大规模文件数量元数据操作能力的同时具备超高的性能稳定性。

要想达到以上目标,百度沧海·文件存储 CFS 给出的技术解答是设计新一代的 Namespace 子系统,在实现创建文件每秒百万级 QPS 的同时,保证各项性能指标表现稳定。

这使得文件存储 CFS 不仅可以支持传统应用,作为传统业务上云的存储方案;也可以应用于最新的 AI 场景,满足海量文件规模处理的应用需求。

Namespace 的技术现状

Namespace 子系统的功能主要是维护文件系统的文件属性、目录树结构等元数据信息,同时支持兼容 POSIX 的目录树及文件操作,如:文件/目录创建、查找(Lookup/Getattr)删除及重命名(Rename)等。

当前,业界分布式文件系统领域衍生出各种类型的 Namespace 技术架构,可以归类为如下几种:

  • 单机架构:配合单机全内存,可做到低延迟,无法横向扩展,最大规模仅支持 5 亿文件数,代表产品为 HDFS。

  • 并行架构:适用于 HPC 等并行文件系统应用场景,元数据静态切分到多机部署,单机利用一主一备保证可用性,缺乏弹性扩展能力。

  • 分布式架构:将元数据按照某种方式切分和扩展到一组机器上,按照集群的方式管理。

相对于单机架构不可扩展及并行架构对扩展性的弱支持,分布式 Namespace 架构在扩展性上做的更加彻底。

那么直接引入一套现成的分布式 Namespace 架构是否可以直接解决上文提到的挑战呢? 

答案是否定的,因为现有的分布式 Namespace 架构都存在各自的局限性和不足。

  • 基于 Hash Based 架构尽管具有很好的扩展性及负载均衡效果,但是其牺牲了 POSIX 兼容语义的支持。该架构方案将文件全路径 Hash 来组织打散到分布式 Meta 集群,对于 Lookup 路径查找非常友好同时容易实现,但是缺点是牺牲了元数据的局部性,尤其是 rename 的实现复杂度高且性能很差,这类架构主要停留在学术研究,没有在工业界大规模应用,典型的系统如 Dr.Hadoop,GiraffaFS;

  • 基于子树划分架构保证了元数据的局部性,可兼容 POSIX 语义,但是扩展性不够好 。该架构方案通过将层级目录树拆分成多个子树并将每颗子树按照相应的负载策略部署到不同的 Meta 节点中,单节点上具有很好的元数据局部性,但是缺点就是容易产生热点,负载均衡难以实现,扩展性不够好,典型的实现如 CephFS、IndexFS;

相对于前两种架构都具有明显的局限性且难以弥补,近几年脱颖而出的基于分布式数据库或分布式 KV 的 Namespace 架构兼顾了扩展性及 POSIX 语义兼容支持。

该方案通常采用分层架构:上层维护了一层元数据处理层,该层将目录树 POSIX 操作转化为数据库事务请求。下层是分布式数据库或分布式 KV 层,负责元数据的存储管理,同时对上层的数据库事务请求进行语义处理。

通过这样的分层架构就做到了对 POSIX 语义的完整兼容。同时,利用分布式数据库或分布式 KV 本身的可扩展性,做到了 NameSpace 架构的可扩展。

另外,为了进一步提升 POSIX 语义的处理速度,通常会维护一层 Hint Cache 来加速元数据的处理。

虽然该架构方案可以在存储层面做到弹性可扩展且简化了元数据的处理,但由于现有架构对锁及数据库事务存在强依赖,Namespace 在写延迟及写性能的扩展性层面仍然存在不足,难以支持每秒创建百万以上的文件的需求。

百度智能云 CFS 在此架构基础上改进和扩展出新一代的 Namespace 架构。

CFS 的 Namespace 架构

百度沧海的文件存储 CFS 作为百度智能云提供的分布式文件存储服务,通过标准的文件访问协议(NFS/SMB),为云上的虚机、容器等计算资源提供无限扩展、高可靠、地域级别共享的文件存储能力。

为了兼顾传统及 AI 场景的用户需求,弹性可扩展且兼容 POSIX 一直被作为 CFS 架构尤其是 Namespace 子系统的重要设计目标。

基于分布式 KV 架构,CFS 采用自研的分布式索引系统来支撑 Namespace 子系统,并基于该索引系统实现了分层架构,即 POSIX 语义层+分布式 KV 层。该索引系统经过 CFS 产品多年的打磨,目前可以非常好地解决 Namespace 层级结构扩展性与低延迟的需求。

相比于其他基于分布式数据库或分布式 KV 的分布式文件系统(比如 HopsFS),CFS 不直接依赖底层分布式数据库或分布式 KV 层的锁及事务机制来维持 POSIX 语义,而是通过以下创造性的设计配合来解决:

  • 适配层级结构数据模型,定制化 Schema 来降低 KV 层数据之间的关联性。

  • 在 POSIX 语义层设计一套针对 Namespace 层级结构、相对数据库锁及事务机制更轻量的一致性协议,保障所有 Namespace 层的读写操作不会破坏 POSIX 语义。

基于以上设计,CFS 在 Namespace 层的读写操作都具备非常低的延迟和好的线性扩展能力,具体性能参考下文测试结果。

除此之外,为了进一步优化延迟,CFS 团队在该架构的各个层面做了深入优化:

  • 单机层面进一步优化延迟:单机 KV 引擎适配了 AEP 等高速硬件,确保 Namespace 关键路径低延迟。

  • 一致性协议层面进一步优化扩展性及延迟:POSIX 语义层一致性协议采用无状态实现,不同节点之间无需同步、无需单独部署,而是作为 LIB 编译到 Client 或者接入模块,简化了架构的维护及 Namespace 读写路径,同时进一步保障了架构的可扩展性。

Namespace 性能测试

为了验证 CFS 产品 Namespace 架构的扩展性及性能稳定性,我们分别从扩展索引系统 KV 节点和 Meta Client 节点两个维度来测试,在验证扩展性同时给出相应单次请求的延迟数据及稳定性。

说明:以下测试 workload 均采用 Mdtest 作为元数据测试工具,其中 Meta Client 作为文件系统协议接入层对接标准的 NFS 协议,压测中的线程工作在相同 FS 不同路径上。

KV 节点扩展 

以下数据对比了 10 个 KV 节点和 20 个 KV 节点在并发 mkdir 的性能数据表现(图中 BE 对应分布式 KV 层一个后端 KV 节点):

通过以上数据可以看出:

  • 20 个 KV 节点相对于 10 个 KV 节点在写吞吐上接近于两倍的提升;

  • 当系统负载正常情况下一次 Namespace 写延迟只需要 2ms 左右;

  • 当系统负载过高且瓶颈来到 KV 层,延迟长尾表现稳定;

综上,可以看出 CFS 的架构在 KV 层可以支持线性扩展。

Meta Client 扩展  

以下是基于集群的 KV 层固定为 24 个 KV 节点的对应数据,一方面通过扩展 Meta Client 数来验证架构在语义层的扩展性,另一方面验证架构在读和写是否具备突破百万 QPS 的能力。

通过以上数据可以看出:

  • Namespace 写和读吞吐可以在 POSIX 语义层做到线性扩展,其中写操作(文件\目录创建)可以达到 100 万 QPS,即每秒可支持创建百万文件;路径查找(Lookup)可以达到 400 万 QPS,目录/文件属性获取(Getattr)可以达到 600 万 QPS。

  • 延迟方面写延迟为 2ms,读延迟只需要百 us 级。

CFS 可以在元数据读写操作上都可以做到支持线性扩展的同时保证低延迟以及性能稳定性,并且在此基础上完成每秒创建百万文件的挑战。

相关文章:

百度沧海文件存储CFS推出新一代Namespace架构

随着移动互联网、物联网、AI 计算等技术和市场的迅速发展,数据规模指数级膨胀,对于分布式文件系统作为大规模数据场景的存储底座提出了更高的要求。已有分布式文件系统解决方案存在着短板,只能适应有限的场景: >> 新型分布式…...

16-网络安全框架及模型-BiBa完整性模型

目录 BiBa完整性模型 1 背景概述 2 模型原理 3 主要特性 4 优势和局限性 5 应用场景 BiBa完整性模型 1 背景概述 Biba完整性模型是用于保护数据完整性的模型,它的主要目标是确保数据的准确性和一致性,防止未授权的修改和破坏。在这个模型中&#…...

ssm基于冲突动态监测算法的健身房预约系统的设计与实现论文

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装健身房预约系统软件来发挥其高效地信息处理的作用&#xff…...

基于 Element UI 适用于 Vue 2 版本的虚拟列表选择器组件el-select

背景:在某些使用情况下,单个选择器可能最终加载数万行数据。 将这么多的数据渲染至 DOM 中可能会给浏览器带来负担,从而造成性能问题。 ——vue3element-plus有现成的轮子。而vue2element-ui没有。 以下 文章大部分 摘自 源组件中的README.md…...

java常见面试题:请解释一下Java中的常用分布式框架,如Spring Boot、Dubbo等。

下面我将详细介绍Java中的两个常用分布式框架:Spring Boot和Dubbo。 1. Spring Boot Spring Boot是一个用于创建独立、可运行的、生产级别的Spring应用程序的框架。它简化了Spring应用程序的创建和部署,使得开发人员能够专注于编写业务逻辑&#xff0c…...

FreeRTOS列表与列表项相关知识总结以及列表项的插入与删除实战

1.列表与列表项概念及结构体介绍 1.1列表项简介 列表相当于链表,列表项相当于节点,FreeRTOS 中的列表是一个双向环形链表 1.2 列表、列表项、迷你列表项结构体 1)列表结构体 typedef struct xLIST { listFIRST_LIST_INTEGRITY_CHECK_VAL…...

07|输出解析:用OutputParser生成鲜花推荐列表

07|输出解析:用OutputParser生成鲜花推荐列表 模型 I/O Pipeline 下面先来看看 LangChain 中的输出解析器究竟是什么,有哪些种类。 LangChain 中的输出解析器 语言模型输出的是文本,这是给人类阅读的。但很多时候,你…...

cfa一级考生复习经验分享系列(十二)

背景:就职于央企金融机构,本科金融背景,一直在传统金融行业工作。工作比较忙,用了45天准备考试,几乎每天在6小时以上。 写在前面的话 先讲一下,整体一级考下来,我觉得知识点多,偏基础…...

【损失函数】SmoothL1Loss 平滑L1损失函数

1、介绍 torch.nn.SmoothL1Loss 是 PyTorch 中的一个损失函数,通常用于回归问题。它是 L1 损失和 L2 损失的结合,旨在减少对异常值的敏感性。 loss_function nn.SmoothL1Loss(reductionmean, beta1.0) 2、参数 size_average (已弃用): 以前用于确定是…...

Go语言中的HTTP重定向

大家好,我是你们可爱的编程小助手,今天我们要一起探讨如何使用Go语言实现HTTP重定向,让我们开始吧! 大家都知道,网站开发中有时候需要将用户的请求从一个URL导向到另一个URL。比如说,你可能想将旧的URL结构…...

ORACLE P6 v23.12 最新虚拟机(VM)全套系统环境分享

引言 根据上周的计划,我简单制作了两套基于ORACLE Primavera P6 最新发布的23.12版本预构建了虚拟机环境,里面包含了全套P6 最新版应用服务 此虚拟机仅用于演示、培训和测试目的。如您在生产环境中使用此虚拟机,请先与Oracle Primavera销售代…...

鸿蒙开发ArkTS基础学习-开发准备工具配置

文章目录 前言1. 准备工作2.开发文档3.鸿蒙开发路径一.详情介绍二.DevEco Studio安装详解-开发环境搭建2.1配置开发环境欢迎各位读者阅读本文,今天我们将介绍鸿蒙(HarmonyOS)应用开发的入门步骤,特别是在准备工作和开发环境搭建方面的重要信息。本文将对鸿蒙官方网站的关键…...

WEB 3D技术 three.js 雾 基础使用讲解

本文 我们说一下 雾 在three.js中有一个 Fog类 它可以创建线性雾的一个效果 她就是模仿现实世界中 雾的一个效果 你看到远处物体会组件模糊 直到完全被雾掩盖 在 three.js 中 有两种雾的形式 一种是线性的 一种是指数的 个人觉得 线性的会看着自然一些 他是 从相机位置开始 雾…...

Python中的网络编程

IP地址 IPv4IPv6查看本机的IP地址 win ipconfiglinux ifconfig ping命令 ping www.baidu.com 查看是否能连通指定的网站ping 192.168.1.222 查看是否能连通指定的IP Port端口 0-65535 TCP/IP协议 传输数据之前要建立连接,通过三次握手建立: 客户端 --&g…...

uni-app js语法

锋哥原创的uni-app视频教程: 2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版),火爆更新中...共计23条视频,包括:第1讲 uni…...

【论文阅读笔记】Detecting Camouflaged Object in Frequency Domain

1.论文介绍 Detecting Camouflaged Object in Frequency Domain 基于频域的视频目标检测 2022年发表于CVPR [Paper] [Code] 2.摘要 隐藏目标检测(COD)旨在识别完美嵌入其环境中的目标,在医学,艺术和农业等领域有各种下游应用。…...

Mysql(5日志备份恢复)

一.日志管理 MySQL 的日志默认保存位置为 /usr/local/mysql/data 先看下mysql的日志文件有无: 修改配置文件添加:错误日志,用来记录当MySQL启动、停止或运行时发生的错误信息,默认已开启 修改配置文件添加:通用查…...

MR实战:实现数据去重

文章目录 一、实战概述二、提出任务三、完成任务(一)准备数据文件1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 (二)实现步骤1、Map阶段实现(1)创建Maven项目(2)添加相关依赖…...

JVM 常用知识和面试题

1. 什么是JVM内存结构? jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区; 程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟…...

【教3妹学编程-算法题】一年中的第几天

3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包” 2哥 :3妹,什么事呀这么开森。 3妹:2哥你看今天的天气多好啊,经过了一周多的寒潮,天气总算暖和些了。 2哥&#xff…...

ramdump 中的memory统计

0. 前言 ramdump是指某个时刻系统或者子系统发生crash等异常,系统将内存中的数据通过一定的方式保存下来,相当于一个系统内存快照,用以开发者离线分析系统异常问题。 ramdump 工具中有很多内存统计的脚本,本文逐一剖析内存相关的…...

Element-Ui树形数据懒加载,删除到最后一个空数组不刷新问题

使用elemenui树形删除数据的时候刷新页面,我在网上找了好多方法,要么没用,要么都是部分代码,自己又看不懂,不得不硬着头皮看源码,发现了有个方法可以刷新。 使用elemenui树形删除数据的时候刷新页面。源码里…...

基于NASM搭建一个能编译汇编语言的汇编软件工具环境(利用NotePad++)

文章目录 一、创建汇编语言源程序二、Notepad的下载、安装、使用三、下载和安装编译器NASM3.1 下载NASM编译器3.2 安装并配置环境变量 四、编译汇编语言源程序(使用命令)五、下载和使用配套源码及工具六、将编译功能集成到Notepad 一、创建汇编语言源程序…...

使用setoolkit制作钓鱼网站并结合dvwa靶场储存型XSS漏洞利用

setoolkit是一款kali自带的工具 使用命令启动 setoolkit 1) Social-Engineering Attacks 1) 社会工程攻击 2) Penetration Testing (Fast-Track) 2) 渗透测试(快速通道) 3) Third Party Module…...

计算机组成原理-总线概述

文章目录 总线简图总线的物理实现总览总线定义总线的特性总线的分类按数据格式分类串行总线并行总线 按总线功能分类注意系统总线的进一步分类 总线的结构单总线的机构双总线的结构三总线的结构四总线的结构 小结 总线简图 总线的物理实现 如果该为数据总线,那么当…...

三角函数两角和差公式推导

一.几何推理 1.两角和公式 做一斜边为1的直角△ABC,任意旋转非 k Π , k N kΠ,kN kΠ,kN,补充如图,令 ∠ A B C ∠ α , ∠ C B F ∠ β ∠ABC∠α,∠CBF∠β ∠ABC∠α,∠CBF∠β ∴ ∠ D B F ∠ D B A ∠ α ∠ β 90 , ∠ D A …...

HarmonyOS page生命周期函数讲解

下面 我们又要看一个比较重要的点了 页面生命周期 页面组件有三个生命周期 onPageShow 页面显示时触发 onPageHide 页面隐藏时触发 onBackPress 页面返回时触发 这里 我们准备两个组件 首先是 index.ets 参考代码如下 import router from ohos.router Entry Component struc…...

3D视觉-结构光测量-线结构光测量

概述 线结构光测量中,由激光器射出的激光光束透过柱面透镜扩束,再经过准直,产生一束片状光。这片光束像刀刃一样横切在待测物体表面,因此线结构光法又被成为光切法。线结构光测量常采用二维面阵 CCD 作为接受器件,因此…...

ssm基于web的马病管理系统设计与实现+jsp论文

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,马病信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大…...

SaaS版Java基层健康卫生云HIS信息管理平台源码(springboot)

云his系统源码,系统采用主流成熟技术开发,B/S架构,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问,前后端分离,多服务协同,服务可拆分,功能易扩展。多集团统一登录…...

政府网站建设专题的目的/免费发外链

上一期我对BBR进行修改的目标很简单,就是提高算法的RTT公平性,主要修改点有3个: 固定增益系数改为了RTT的减函数。RTT相关的steady phase改为了固定时间。探测到带宽腾出时,马上进行up probe。 详情参见: https://zh…...

自助建站系统源码下载/开源crm系统

联想thinkpad e580笔记本网卡驱动是款不错的lenovo系列的驱动程序,如果您的联想笔记本出现无法识别网卡驱动或网络卡顿等情况,可以来本站下载此e580网卡驱动帮助您有效的解决相关问题等,欢迎有需要的用户前来下载!联想e580网卡驱动…...

做外贸必须有公司网站么/全自动引流推广软件免费

2.Ransac是一种非常简单的算法 用于在一群样本中去掉噪声样本,得到有效的样本采用随机抽样验证的方法,以下节选自wikipedia,选有用的贴了过来 RANSAC RANSAC is an abbreviation for "RANdom SAmple Consensus". It is an algorith…...

横屏滚动网站/百度开户要多少钱

ubuntu远程连接工具 1.ssh连接:2.文件传输:3.remmina1.ssh连接: ssh客户端-putty sudo apt install putty2.文件传输: GFTP sudo apt install gftp3.remmina 有ssh,xrdp,ftp等功能,软件迭代不稳定,但是功能强大1 sudo apt-add-repository ppa:remmina-ppa-team/rem…...

现在c 做网站用什么/专业的网站优化公司

受不了,asa和思科路由器 系统命令不一致,这一篇专门来写asa。先看下版本asa825# show versionCisco Adaptive Security Appliance Software Version 8.2(5)Device Manager Version 6.4(9)asa825# show flash:--#-- --length-- -----date/time------ p…...

织梦网站如何做seo/站长工具关键词查询

方法一:使用系统组件.版本 2.局部变量 对象, 对象对象.创建 (“ScriptControl”, )对象.写属性 (“Language”, “JScript”)对象.方法 (“AddCode”, “JS代码”)输出调试文本 (对象.通用方法 (“Run”, “s”).取文本 ())方法二:使用精益模块.版本 2.局…...