Dragonfly 发布 2.3 版本,新增持久化缓存、资源搜索及 Vortex 协议等新特性

Dragonfly 发布 2.3.0 版本,新增多个功能特性并进行安全增强。同时,子项目 Nydus 也增加多个功能特性。本篇博客将介绍最重要的变更。有关功能增强及漏洞修复的完整列表,请查看 d7y.io 官网。
关于 Dragonfly
Dragonfly 是一款基于 P2P 技术的文件分发和镜像加速系统,作为 CNCF 的 Incubating 项目,它旨在解决大规模文件分发场景中的效率和速度问题。通过最大限度地利用网络中对等节点(Peer)的闲置带宽,Dragonfly 能有效减少对源站的依赖和回源流量,显著提升分发效率。它致力于成为云原生场景下镜像加速领域的标准解决方案,并且近年来在 AI 推理和训练场景中的模型分发方面也得到了广泛应用。
功能特性
持久化缓存任务
它旨在为任务提供持久化缓存。该工具可以在 P2P 网络中导入和导出文件。该解决方案专为高速读写操作而设计。这使其在涉及大文件的场景中特别有优势,例如机器学习模型 checkpoints,在这些场景中,快速、可靠地访问和跨网络分发对于训练和推理工作流至关重要。通过利用 P2P 分发和持久化缓存,dfcache 显著减少了 I/O 瓶颈并加速了大型数据资产生命周期。

有关如何使用 dfcache 命令行工具的文档,请参阅以下链接:https://d7y.io/docs/next/reference/commands/client/dfcache/

资源搜索(任务和持久化缓存任务)
资源搜索功能可以无缝查询任务,包括文件、镜像和持久化缓存任务。它优化了资源访问,提高了任务管理和检索效率。

Vortex:基于 TLV 的 P2P 文件传输协议
Vortex 协议是 Dragonfly 项目中一个用 Rust 实现的高性能点对点(P2P)文件传输协议。它利用 TLV(Tag-Length-Value)格式实现高效灵活的数据传输,非常适合大规模文件分发场景。
包格式:
包标识符(8 位):唯一标识每个包
标签(8 位):指定值字段中的数据类型
长度(32 位):表示值字段的长度,最大为 4 GiB
值(可变):实际数据内容,最大为 1 GiB
协议格式:
更多信息,请参阅 Vortex 协议
增强的大文件分发
此版本显著增强了 Dragonfly 的大文件分发能力,提供了更高的效率和性能。我们针对大文件场景改进了调度算法,以确保更智能的资源和任务分配。此外,新机制现在能更有效地平衡大文件传输期间对等节点间的负载。对点对点(P2P)协议和网络传输层的优化进一步提高了传输效率。
这些改进包括对客户端和调度器的性能优化。您可以在项目的拉取请求中找到更多详细信息。
支持个人访问令牌(PAT)的作用域
通过允许用户为每个 PAT 定义特定的访问权限(作用域),我们显著增强了 Open API 交互的安全性。现在,PAT 可以被限制为仅有所需的权限,而不是授予宽泛的权限,以完成特定的集成或任务。

增强的预热
实现预热任务的分布式速率限制
通过限制在分布式系统中发起预热请求的速率,可以防止过多的预热活动给源站带来压力。此增强功能确保了更稳定的预热。

支持为预热设置分片长度
通过允许调整分片大小,用户可以优化数据传输效率,特别是在涉及大文件的场景中。

灵活预热:按百分比或数量设置对等节点范围
此功能通过允许用户更精确地指定预热范围来增强预热能力。

实现用户操作的审计日志记录
此功能引入了全面的审计日志记录功能,以跟踪系统内的用户操作。审计日志将记录用户执行的关键操作,例如发起预热任务、删除任务缓存以及其他重要的系统交互。

垃圾回收
Dragonfly 支持垃圾回收(GC)审计日志和 GC 作业记录,以跟踪和管理垃圾回收活动。管理器支持自动 GC 保留,允许记录保留可配置的时间段。此外,它还提供了根据需要手动触发强制 GC 操作的功能。
此功能通过自动保留策略和手动干预以立即执行 GC,确保了对 GC 流程的高效监控和管理,提供了灵活性。

使用硬链接优化文件下载
文件下载需要以高效和安全的方式完成。如果用户正在下载大文件,下载文件并复制到输出路径效率不高。相反,我们可以创建文件的硬链接并将链接发送给用户。这样,我们可以避免复制文件并节省时间和资源。如果硬链接失败(例如,由于不同的文件系统),dfdaemon 将回退到复制文件。更多信息,请参阅文件下载工作流。
分片哈希计算支持硬件加速
此功能启用了硬件加速的分片哈希计算,显著提高了性能和效率。通过利用专用硬件,哈希计算过程得到加速,从而可以更快地处理大文件。
高级存储管理
操作的磁盘空间验证
此功能通过实现磁盘空间验证来增强客户端的存储功能。当检测到磁盘空间不足时,客户端将返回失败响应,防止潜在的数据损坏或不完整的操作。
磁盘垃圾回收管理
此功能通过引入基于磁盘使用情况的可配置垃圾回收(GC)阈值来增强 Peer 的磁盘管理。distThreshold 参数允许用户定义特定的磁盘容量(例如 10TiB)作为计算 GC 触发点的基础。如果设置了该参数,则 distHighThresholdPercent(例如 80%)和 distLowThresholdPercent(例如 60%)将相对于此容量应用。如果未提供 distThreshold 或设置为 0,则这些百分比将根据总实际磁盘空间计算。当磁盘使用率超过高阈值时,Dragonfly 会触发 GC(LRU) 来回收空间;当使用率低于低阈值时,GC 停止。这可以有效管理用于缓存的逻辑磁盘部分,从而提高资源利用率和系统性能。

支持 OpenTelemetry 追踪
Dragonfly 支持基于 OpenTelemetry 的追踪,涵盖了 Manager、Scheduler 和 Peers。这使得下载过程具有端到端的可视性,允许用户使用特定的任务 ID 查询详细信息,例如整体下载延迟。该集成确保了整个系统的高效监控和性能分析。
添加如下追踪配置(在 Manager、Scheduler 和 Peer 中):

您可以访问 Jaeger UI 来可视化追踪。

更多信息,请参阅更多信息,请参阅追踪。
安全增强
我们衷心感谢 CNCF TAG Security 在联合安全审计方面的合作。他们的专业知识和彻底审查对于帮助我们识别 Dragonfly 内需要改进的安全领域非常有价值。有关已解决的特定安全问题和相应修复的详细信息,请参阅以下 issue:
https://github.com/dragonflyoss/dragonfly/issues/3811
Nydus
新功能和增强
nydusify copy:支持分块上传和重试机制以处理大型镜像 blob。
nydusify check:重构以支持 OCI v1 和 nydus 格式镜像作为源和目标。
nydusd:支持块级 CRC 数据验证以确保镜像数据一致性。
重大错误修复
修复了
sysinfo
库引起的内存泄漏和文件描述符泄漏问题。清理 Unix 域套接字(UDS)以防止 dfdaemon 启动崩溃。
防止客户端从多个父节点重复下载同一分片。
其他
您可以在 CHANGELOG 中查看更多详细信息。
链接
Dragonfly 网站:https://d7y.io/
Dragonfly 仓库:https://github.com/dragonflyoss/dragonfly
Dragonfly 客户端仓库:https://github.com/dragonflyoss/client
Dragonfly 控制台仓库:https://github.com/dragonflyoss/console
Dragonfly Charts 仓库:https://github.com/dragonflyoss/helm-charts
Dragonfly 监控仓库:https://github.com/dragonflyoss/monitoring
评论