Dragonfly v2.5.0 发布

发布于

Dragonfly v2.5.0 现已[发布](https://mp.weixin.qq.com/s/v5l3hLqvaBhn90TfYOFtnA),具体更新内容包括:

### 新功能和增强

**从 Hugging Face 和 ModelScope 直接下载仓库**
Dragonfly Client 现在支持直接从 Hugging Face 和 ModelScope 下载模型仓库。用户可以运行如下命令来获取仓库:`dfget hf://deepseek-ai/DeepSeek-OCR`和 `dfget modelscope://models/deepseek-ai/DeepSeek-OCR`。Git LFS 数据会通过 Dragonfly P2P 加速下载,而其他仓库元数据会通过 Git 协议获取。

![图片](https://oscimg.oschina.net/oscnet/up-e3a45a8b977aaa057ccb7e610e1bf793b9f.png)

**用于 Kubernetes Webhook 注入的 Dragonfly Injector**
Dragonfly 提供了 `dragonfly-injector`,这是一个用于自动注入 P2P 能力的 Kubernetes Mutating Admission Webhook。它可以通过基于 annotation 的策略,将 Dragonfly client 二进制文件和配置、`dfdaemon` socket 挂载以及 CLI 工具注入到应用 Pod 中,使 Pod 能够在不重新构建容器镜像的情况下,使用 Dragonfly 下载文件。Helm Charts 现在也支持在启用 webhook injection 的情况下部署 Dragonfly。

**用于下载控制的 Blocklist**
Dragonfly 支持在 Manager 控制台中配置 blocklist,用于禁用特定下载。这可以作为一种紧急措施,用来缓解突发异常请求对服务造成的影响。当被阻止的下载被拦截时,gRPC 下载会返回 `PermissionDenied` 错误码,HTTP proxy 下载会返回 `FORBIDDEN` 状态。

![图片](https://oscimg.oschina.net/oscnet/up-80422c10110d72200a00954be872d9996b9.png)

*【图片:Dragonfly Cluster Config 的截图,展示 Blocklist 配置区域。】*

**全面的限流**
Dragonfly 在控制平面和客户端引入了更完整的限流能力。Manager 和 Scheduler gRPC servers 现在支持为 unary requests 和 streaming connections 配置请求速率限制。客户端支持 outbound bandwidth、inbound bandwidth、back-to-source bandwidth、prefetch bandwidth、upload request、download request 和 adaptive rate limiting,以更好地保护源服务,并提升系统在高负载下的稳定性。

**dfctl命令行工具**
Dragonfly Client 引入了 `dfctl`。这是一个命令行工具,用于管理客户端本地存储中的任务,包括 tasks、persistent tasks 和 persistent cache tasks。它支持列出和删除本地资源,也可以通过 Scheduler 对文件任务和镜像任务进行 preheat。

**容器镜像仓库代理配置简化**
dfdaemon 现在可以从 containerd registry mirror requests 附加的 ns 查询参数中推断 upstream registry。结合 `proxyAllRegistries: true`,用户可以使用一个 `_default/hosts.toml` 配置,将所有 registries 路由到 Dragonfly,而不需要维护单独的、特定于 registry 的 `hosts.toml` 文件和 `X-Dragonfly-Registry` headers。

**Client 下载和传输优化**
Dragonfly Client 在多个方面提升了下载效率和文件传输可靠性。parent selector 和 piece collector 现在会更紧密地协作,在调度决策之前收集足够的 parent peers,从而提升带宽利用率,同时为不稳定的 parent peers 保留 graceful fallback。文件导出和下载操作现在使用 buffered writes,并且 gRPC stream buffer sizes 和连接设置已经过调优,以获得更好的大文件传输性能。

**HTTP 处理和重定向安全改进**
HTTP backend 现在使用 HTTP/1.1,并改进了 stat request 处理:当响应有 `Transfer-Encoding` 但没有 `Content-Length` 时,会使用 HEAD request 重试。Dragonfly 在跟随跨源重定向时,也会移除敏感 headers,例如 `Authorization` 和 `Cookie`;同时避免缓存相对路径形式的 HTTP 307 redirect locations,但仍然会在请求处理过程中正确解析它们。

**其他增强**
- 在 Manager 中增加 ExternalRedis TLS 支持,包括 CA certificate、client certificate、key 和 `insecureSkipVerify` 选项。
- 移除已废弃的 V1 preheat API endpoints,并将健康检查统一到 `/healthy` endpoint。
- 改进 upload 和 download metrics collection,并移除未使用的 gRPC piece download 逻辑。
- 改进 `INSTANCE_NAME` 生成方式:使用 Kubernetes build-time environment variables,并在需要时 fallback 到系统 hostname。
- 增加 `dfdaemon hickory_dns` 选项,使 DNS resolver 行为可以配置。
- 改进 OCI registry blob downloads 的 task ID 计算,以减少跨 registries 的重复下载和存储。

### 重要 Bug 修复
- 修复 Redis Lua script 中 peer TTL 和 `concurrent_piece_count` 的参数顺序,防止非预期的 key expiration 和错误的 peer state。
- 修复在写入默认 Scheduler Cluster 和 Seed Peer Cluster 记录后,PostgreSQL SERIAL sequence 的处理问题,避免创建新 clusters 时出现 primary key 冲突。
- 修复相对路径 HTTP 307 redirect 处理:对相对 Location 值跳过缓存,并在跟随重定向之前,基于 base URL 对其进行解析。

### Nydus

**新功能和增强**
- 支持为 Ondemand data 构建 prefetch-optimized layer blobs。
- 支持将 Nydus images 转换为 OCI 格式,并支持与 local archives 之间相互转换。
- 支持 Nydusify Copy 中的 zero-disk transfer。
- 引入基于 uffd 的 virtio-pmem DAX backend 支持,以在 Kata 场景中实现高性能的 on-demand image loading。
- 支持将 Storage layer 从 Proxy mode 切换到 Dragonfly SDK mode,以提升 P2P cache hit 性能。
- 支持使用 short container IDs 执行 commit,并在 commit 之前同步 filesystem。
- 支持在恢复 Nydusd 时重新发送 FUSE requests,修复 hot-upgrade tests。

**重要 Bug 修复**
- 修复 Blobfs 与 fuse-backend-rs 0.12.0 的兼容性。
- 修复 failover-policy 参数解析。
- 修复 Builder 中 symbolic link 覆盖 directory 时触发的 panic。
- 修复 chunkdict deduplication logic、DBSCAN clustering 和 chunk sorting 中的多个问题。
- 修复 Nydus image detection logic。
- 修复 fusedev 中 nested mount points 的 remount invalidation。
- 修复 Nydusctl backend metric counters 被 reset 时出现 abnormal values 的问题。
- 修复 image names 被修改后 Nydusify 找不到 blobs 的问题。
- 修复 Nydusify 中的 plain HTTP conversion。

---

原文链接:[点击查看](https://www.oschina.net/news/471723/dragonfly-2-5-0-released)

评论

暂无评论。