多云架构,JuiceFS 如何实现一致性与低延迟的数据分发

news2025/1/11 9:01:14

随着大模型的普及,GPU 算力成为稀缺资源,单一数据中心或云区域的 GPU 资源常常难以满足用户的全面需求。同时,跨地域团队的协作需求也推动了企业在不同云平台之间调度数据和计算任务。多云架构正逐渐成为一种趋势,然而该架构下的数据分发面临一系列挑战。

01 多云架构下的存储挑战

在实际操作中,不少企业在各个云平台自行构建计算 Pod,来处理特定的计算任务并进行数据分发。然而,如何确保这一分发过程的持续性,并将训练结果及时归并,成为了亟待解决的难题。尤其是当数据需要跨地域传输时,性能瓶颈和数据一致性问题尤为突出。

以一个具体场景为例,图中左侧为训练集群,部署于腾讯云,而右侧则为推理集群,位于阿里云。如何将训练集群所生成的模型数据高效地分发至推理集群呢?

首要问题在于,数据的分发与异地计算难度较大,需用户自行将数据从文件系统层面拷贝至异地,并设定定时定量的策略。

其次,当数据量庞大时,若需全面同步,将耗费大量资源。而热数据往往仅占少数,企业往往难以预知哪些数据为热数据,需在读取后才能确定。因此,按需拷贝而非全面拷贝,并在异地设立本地缓存,既能提升性能,又能兼顾成本。

再者,网络带宽、出错重试等问题可能导致数据不一致。此外,云厂商通常倾向于构建封闭的生态,不愿提供跨云功能,如腾讯云便不会提供工具协助用户将数据拷贝至其他云进行分发。因此,作为云中立的第三方文件系统,我们需提供整体的解决方案,以打破单一云厂商的束缚,满足客户的跨云与多云需求。

02 JuiceFS 跨云、多云解决方案

JuiceFS 企业版是基于对象存储的分布式文件系统,相比社区版它提供了更强的元数据引擎和缓存管理能力。针对用户在多云架构中对数据访问性能的不同需求,juiceFS 提供跨区和跨地域的多种方案。

方案 1:同地域、跨云数据分发

该方案是指在同区域的不同云之间进行数据分发,常被应用于数据双活与灾备场景。通过在源区域(下图左上角)与目标区域之间建立异步数据同步关系,系统能够自动将数据从一个区域复制到另一个区域,并保证数据的一致性。

该方案采用共享元数据服务的方式,使得不同区域的客户端可以在挂载文件系统时进行就近写入,优化数据存取效率。异步复制和元数据一致性保证了在不同区域间的数据一致性和稳定性。

数据一致性方面,JuiceFS 的强一致性由元数据保证,文件有变更会在对象存储上追加新的数据块,然后元数据会指向新的数据块,所以只要元数据一致,就能确保整个文件的一致性。因此,当目标客户端访问同一元数据服务时,不存在数据不一致的情况。期间若数据已同步至目标区域存储桶,则直接从该桶读取;若尚未同步,则会回源至源存储桶读取,以确保数据的完整性和一致性。

此方案广泛适用于数据双活和灾备场景。对于数据双活应用,企业可以通过跨区数据复制在多个区域之间共享数据,实现高可用性和负载均衡。

在灾备场景中,该方案通过异步将数据备份到目标区域,避免了因源云平台出现问题(如账号封禁、访问限制等)导致的数据不可用情况。即便源区域发生故障,客户端只需挂载并切换到目标区域即可继续正常工作,数据可以无缝恢复。

方案 2:跨地域数据访问,适用于大规模 AI 训练场景

针对跨地域数据访问的性能挑战,我们提供了多种解决方案以满足不同场景下的需求。

元数据和数据同步

当两地享有共同地域的元数据服务时,数据访问通常不会受到显著延迟影响。然而,当数据需要跨国或跨大洲传输,如从新加坡或美国节点访问时,性能问题可能变得尤为突出,尤其是当涉及大量小文件时。此时,远程数据访问若未命中缓存,可能需要回源区域读取,这将严重影响性能。

为解决这一问题,我们设计了镜像文件系统功能,该功能通过同步源区域和目标区域(镜像区域)中的数据和元数据,确保两地数据一致性,从而实现跨地域数据的低延迟访问。虽然我们期望实现实时同步,但由于地域间的网络限制,实际上无法做到完全的实时性。

镜像文件系统中的操作流程如下:当源区域的客户端对源区域的存储桶发起读写操作时,会异步地将数据写入镜像区域的存储桶。当镜像区域的客户端在进行训练或推理时,系统将就近从镜像区域读取数据,以减少访问延迟从而提高性能。若数据尚未同步至镜像区域,系统将回源读取。

值得注意的是,在 JuiceFS 5.0 版本之前,镜像区域仅支持读操作;5.0 及之后版本则加入了写操作功能。在进行写操作时,系统先将数据写入镜像区域桶里,再将元数据更新到源区域的元数据服务中(注意:元数据不会直接写入镜像区域)。然后,元数据再按正常流程同步到镜像区域。

这个镜像写入流程看起来有些复杂,但为了确保在各种网络波动情况下同步不会出现错误,我们采用了单向同步的设计,虽然在写入时会承受一定的延迟,但这是为了一致性做出必要的妥协。

仅元数据同步

此外,为了应对大数据量同步时的成本和时间挑战,我们提供了按需同步的方案。用户可以选择仅同步元数据。这与上一种方式的差别就在于避免的全桶复制,虽然缺乏一定数据本地性,但如果分布式缓存有足够命中率,性能仍能得到保障。最为关键的是,这种方式省去了大量时间、复制流量及重复存储的成本。在写入数据时,系统同样将数据写回源区域的存储桶和元数据区域,并同步至镜像区域。通过这样的方式,我们实现了安全、高效的跨地域数据同步和访问。

03 某 LLM 企业腾讯云到阿里云跨云案例(仅元数据同步)

该企业在阿里云上拥有大量闲置的训练 GPU 资源,希望能够将这些资源与腾讯云的训练任务协同使用。因此,企业需要将数据从腾讯云分发到阿里云。然而,由于两者之间网络波动频繁,数据分发受阻,进而影响了训练效率,尤其是在处理大量小文件时,卡顿现象更为明显

为解决这一问题,企业选择使用 JuiceFS 来支持跨地域的数据分发场景。通过同步元数据, JuiceFS 有效降低了网络波动带来的影响。同时,为了控制成本,企业并未将所有数据同步到阿里云,而是采用分布式缓存,仅按需预热并同步需要的数据,从而在保证性能的同时优化了成本。

目前,镜像文件系统的大小约为 256TB,文件数量达到 1300 万个,平均文件大小约为18.6MB。阿里云客户端在镜像区域的数量达到 540 个,有大量的训练容器协助腾讯云进行训练。阿里云端元数据的 QPS 已达到 5.81 万次。尽管分布式缓存节点数量为 138 个,缓存容量仅为 8.8TB,但通过足够的节点数量和网卡数量,系统能够聚合出较大的带宽,缓存的最大读取吞吐量为 37GB/s,写入吞吐量为 4GB/s,能够满足该场景的性能要求

03 小结

针对用户在多云架构中对数据访问性能的不同需求,JuiceFS 从第三方云中立的角度提供完整的解决方案,不捆绑任何特定云平台。

  • 方案 1:同地域跨云数据分发
    • 适用于两地距离相对较近、数据通信稳定的场景,同时也适用于跨云桶数据灾备的解决方案。
  • 方案 2:跨地域数据访问
    • 数据与元数据均同步。此方案支持多份数据同步,尤其适用于地域相隔较远的场景。其优势在于读取性能最佳,因为元数据和数据均可从本地读取。然而,这也带来了最高的成本。
    • 仅元数据同步:兼顾成本与性能的折衷方案。元数据从本地读取,而数据则按需从缓存中读取;若缓存未命中,则回源读取。然而,其写入性能相对一般,因为无论是数据还是元数据,均需回源写入。此方案尤其适用于对成本敏感且镜像区域大量数据为只读的场景。

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

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

相关文章

如何获取文件的MIME类型

文章目录 1. 概念介绍2. 方法与类型2.1 使用方法2.2 常见类型3. 示例代码4. 内容总结我们在上一章回中介绍了"如何加载本地图片"相关的内容,本章回中将介绍如何获取文件类型.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在本章回中提到的文件类型是指MI…

【Uniapp-Vue3】computed计算属性用法及方法对比

如果我们想要将两个响应式变量进行某种运算,就可以使用computed计算属性。 比如下面这个例子中,输入名和姓合成全名,可以用直接显示的方法: 我们也可以使用computed属性: import {computed} from "vue"; le…

C#实现凸壳算法

凸壳计算代码: public static PointD[] calcConvexHull(PointD[] points) {// 按 x 坐标对点进行排序Array.Sort(points, (p1, p2) => p1.X.CompareTo(p2.X));// 创建下凸壳var lowerHull = new List<PointD>();foreach (var point in points){while (lowerHull.Co…

设计模式 行为型 状态模式(State Pattern)与 常见技术框架应用 解析

状态模式&#xff08;State Pattern&#xff09;是一种行为型设计模式&#xff0c;它允许对象在内部状态改变时改变其行为&#xff0c;使得对象看起来好像修改了它的类。这种设计模式的核心思想是将对象的状态和行为封装成不同的状态类&#xff0c;通过状态对象的行为改变来避免…

SAP SD学习笔记27 - 贩卖契约(框架协议)2 - 基本契约 - 金额契约(价值合同)

上一章讲了贩卖契约&#xff08;框架协议&#xff09;的概要&#xff0c;以及贩卖契约中最为常用的 基本契约 - 数量契约。 SAP SD学习笔记26 - 贩卖契约(框架协议)的概要&#xff0c;基本契约 - 数量契约-CSDN博客 本章继续讲SAP中的内容&#xff1a; - 基本契约 - 金额契约…

mysql之基本select语句 运算符 排序分页

1.SQL的分类 DDL:数据定义语言. CREATE ALTER DROP RENAME TRUNCATE DML: 数据操作语言. INSERT DELETE UPDATE SELECT 重中之重 DCL: 数据控制语言. COMMIT ROLLBACK SAVEPOINT GRANT REVOKE 2.SQL语言的规则与规范 1.基本规则 SQL可以在一行或多行,为了提高可…

Linux中SSH服务(二)

一、基于公私钥的认证&#xff08;免密登录&#xff09; 1、Windows免密登录Linux Windows推荐安装Cygwin软件&#xff1a;Cygwin 1.1Windows上面生成公私钥 之前已经生成过了&#xff0c;所以显示公私钥已存在 lovezywLAPTOP-AABHB5ED ~ $ ssh-keygen Generating public/pr…

.NET Core NPOI 导出图片到Excel指定单元格并自适应宽度

NPOI&#xff1a;支持xlsx&#xff0c;.xls&#xff0c;版本>2.5.3 XLS&#xff1a;HSSFWorkbook&#xff0c;主要前缀HSS&#xff0c; XLSX&#xff1a;XSSFWorkbook&#xff0c;主要前缀XSS&#xff0c;using NPOI.XSSF.UserModel; 1、导出Excel添加图片效果&#xff0…

NS2202X 系列 40V 输入 OVP 保护 IC

1 特性  最大输入电压&#xff1a; 40V  内部预设 2.1A 负载过流 OCP 保护  外置过流保护阈值可调节引脚&#xff0c;可悬空  外置 EN 使能控制引脚  内部预设 6V 输入过压 OVP 保护  输入 OVP 保护响应时间 20ns  内置 150 ℃过温…

Web前端基础知识(七)

要在JS中获取元素节点&#xff0c;需要使用DOM API提供的方法。 innerHTML&#xff1a;不仅会返回一个纯文本&#xff0c;还可以解析一下这个文本中的语意。 innerText: 忽略HTML标记。 举例&#xff1a; <body> <div id"box1">这是一个ID选择器标签…

[Transformer] The Structure of GPT, Generative Pretrained Transformer

The Structure of Generative Pretrained Transformer Reference: The Transformer architecture of GPT models How GPT Models Work

欧拉公式和傅里叶变换

注&#xff1a;英文引文机翻&#xff0c;未校。 中文引文未整理去重&#xff0c;如有异常&#xff0c;请看原文。 Euler’s Formula and Fourier Transform Posted byczxttkl October 7, 2018 Euler’s formula states that e i x cos ⁡ x i sin ⁡ x e^{ix} \cos{x} i …

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…

Python 模块 Uvicorn 实战指南

文章目录 1. 介绍和安装1.1 介绍1.2 安装 2. 创建基础应用2.1 简单的 HTTP 应用2.2 添加日志 3. 实现高级功能3.1 支持 WebSocket3.2 优化运行性能 4. Nginx 配置反向代理4.1 安装与配置 Nginx4.2 启用 SSL 支持4.3 性能优化建议 5. 常见问题与解决方案5.1 高并发问题5.2 WebSo…

音频数据增强:提升音频信号质量的多种技术

在音频处理和机器学习领域&#xff0c;音频数据增强是一种常用的技术&#xff0c;旨在通过对原始音频信号进行各种变换和处理&#xff0c;生成更多样化的训练数据。   这不仅可以提高模型的鲁棒性&#xff0c;还能改善其在真实世界应用中的表现。本文将介绍几种常用的音频数据…

uniapp vue2版本如何设置i18n

如何设置i18n在该软件设置过语言的情况下优先选择所设置语言&#xff0c;在没有设置的情况下&#xff0c;获取本系统默认语言就&#xff0c;将系统默认语言设置为当前选择语言。 1、下载依赖&#xff1a; npm install vue-i18n --save 2、创建相关文件&#xff08;在最外层&…

vulnhub靶场【DC系列】之9 the final 结束篇

前言 靶机&#xff1a;DC-8&#xff0c;IP地址为192.168.10.11&#xff0c;后续因为靶机重装&#xff0c;IP地址变为192.168.10.13 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.2 都采用VMWare&#xff0c;网卡为桥接模式 对于文章中涉及到的靶场以及工具&#xf…

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法

网络安全 | 网络安全法规&#xff1a;GDPR、CCPA与中国网络安全法 一、前言二、欧盟《通用数据保护条例》&#xff08;GDPR&#xff09;2.1 背景2.2 主要内容2.3 特点2.4 实施效果与影响 三、美国《加利福尼亚州消费者隐私法案》&#xff08;CCPA&#xff09;3.1 背景3.2 主要内…

基于QT和C++的实时日期和时间显示

一、显示在右下角 1、timer.cpp #include "timer.h" #include "ui_timer.h" #include <QStatusBar> #include <QDateTime> #include <QMenuBar> Timer::Timer(QWidget *parent) :QMainWindow(parent),ui(new Ui::Timer) {ui->setup…

STM32小实验2

定时器实验 TIM介绍 TIM&#xff08;Timer&#xff09;定时器 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断…