|
| 1 | +# Dragonfly v2.4.0 is released |
| 2 | + |
| 3 | +Dragonfly v2.4.0 is released!🎉🎉🎉 Thanks the [contributors](https://github.com/dragonflyoss/dragonfly/graphs/contributors) who made this release happend and welcome you to visit [d7y.io](https://d7y.io) website. |
| 4 | + |
| 5 | + |
| 6 | + |
| 7 | +## New features and enhancements |
| 8 | + |
| 9 | +### load-aware scheduling algorithm |
| 10 | + |
| 11 | +A two-stage scheduling algorithm combining central scheduling with node-level secondary scheduling to |
| 12 | +optimize P2P download performance based on real-time load awareness. |
| 13 | + |
| 14 | + |
| 15 | + |
| 16 | +For more information, please refer to the [Scheduling](https://d7y.io/docs/next/operations/deployment/applications/scheduler/#scheduling). |
| 17 | + |
| 18 | +### Vortex Protocol Support for P2P File Transfer |
| 19 | + |
| 20 | +Dragonfly provide the new Vortex transfer protocol based on TLV to improve the download performance in internal network. |
| 21 | +Use the TLV (Tag-Length-Value) format as a lightweight protocol to replace gRPC for data transfer between peers. |
| 22 | +TCP-based Vortex reduces large file download time by `50%` and QUIC-based Vortex by `40%` compared to gRPC, both effectively reducing peak memory usage. |
| 23 | + |
| 24 | +For more information, please refer to the [TCP Protocol Support for P2P File Transfer](https://github.com/dragonflyoss/design/blob/main/systems-analysis/tcp-protocol/tcp-protocol.md) and [QUIC Protocol Support for P2P File Transfer](https://github.com/dragonflyoss/design/blob/main/systems-analysis/quic-protocol/quic-protocol.md). |
| 25 | + |
| 26 | +### Request SDK |
| 27 | + |
| 28 | +A SDK for routing User requests to Seed Peers using consistent hashing, replacing the previous Kubernetes Service load balancing approach. |
| 29 | + |
| 30 | + |
| 31 | + |
| 32 | +For more details, please refer to [Request SDK](https://d7y.io/docs/next/advanced-guides/request-sdk/). |
| 33 | + |
| 34 | +### Simple Multi‑Cluster Kubernetes Deployment with Scheduler Cluster ID |
| 35 | + |
| 36 | +Dragonfly supports a simplified feature for deploying and managing multiple Kubernetes clusters by explicitly assigning a `schedulerClusterID` to each cluster. |
| 37 | +This approach allows users to directly control cluster affinity without relying on location‑based scheduling metadata such as IDC, hostname, or IP. |
| 38 | + |
| 39 | +Using this feature, each Peer, Seed Peer, and Scheduler determines its target scheduler cluster through a clearly defined scheduler cluster ID. |
| 40 | +This ensures precise separation between clusters and predictable cross‑cluster behavior. |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | +For more information, please refer to the [Create Dragonfly Cluster Simple](https://d7y.io/docs/next/getting-started/quick-start/multi-cluster-kubernetes/#create-dragonfly-cluster-simple). |
| 45 | + |
| 46 | +### Performance and Resource Optimization for Manager and Scheduler Components |
| 47 | + |
| 48 | +Enhanced service performance and resource utilization across Manager and Scheduler components while significantly reducing |
| 49 | +CPU and memory overhead, delivering improved system efficiency and better resource management. |
| 50 | + |
| 51 | +### Enhanced Preheating |
| 52 | + |
| 53 | +- Support for IP-based peer selection in preheating jobs with priority-based selection logic where IP specification |
| 54 | + takes highest priority, followed by count-based and percentage-based selection |
| 55 | + |
| 56 | +- Support for preheating multiple URLs in a single request. |
| 57 | + |
| 58 | +- Support for preheating file and image via Scheduler gRPC interface. |
| 59 | + |
| 60 | + |
| 61 | + |
| 62 | +### Calculate task ID based on image blob SHA256 to avoid redundant downloads |
| 63 | + |
| 64 | +The Client now supports calculating task IDs directly from the SHA256 hash of image blobs instead of using the download URL. |
| 65 | +This enhancement prevents redundant downloads and data duplication when the same blob is accessed from |
| 66 | +different registry domains. |
| 67 | + |
| 68 | +### Cache HTTP 307 redirects for split downloads |
| 69 | + |
| 70 | +Support for caching HTTP 307 (Temporary Redirect) responses to optimize Dragonfly's multi-piece download performance. |
| 71 | +When a download URL is split into multiple pieces, the redirect target is now cached, |
| 72 | +eliminating redundant redirect requests and reducing latency. |
| 73 | + |
| 74 | +### Go Client Deprecated and Replaced by Rust Client |
| 75 | + |
| 76 | +The Go client has been deprecated and replaced by the [Rust Client](https://github.com/dragonflyoss/client). All future development and maintenance will focus |
| 77 | +exclusively on the Rust client, which offers improved performance, stability, and reliability. |
| 78 | + |
| 79 | +For more information, please refer to the [dragoflyoss/client](https://github.com/dragonflyoss/client). |
| 80 | + |
| 81 | +### Additional Enhancements |
| 82 | + |
| 83 | +- Enable 64K page size support for ARM64 in the Dragonfly Rust client. |
| 84 | +- Fix missing git commit metadata in dfget version output. |
| 85 | +- Support for `config_path` of `io.containerd.cri.v1.images` plugin for containerd V3 configuration. |
| 86 | +- Replaces glibc DNS resolver with hickory-dns in reqwest to implement DNS caching and prevent excessive DNS lookups during piece downloads. |
| 87 | +- Support for the --include-files flag to selectively download files from a directory. |
| 88 | +- Add the `--no-progress flag` to disable the download progress bar output. |
| 89 | +- Support for custom request headers in backend operations, enabling flexible header configuration for HTTP requests. |
| 90 | +- Refactored log output to reduce redundant logging and improve overall logging efficiency. |
| 91 | + |
| 92 | +## Significant bug fixes |
| 93 | + |
| 94 | +- Modified the database field type from `text` to `longtext` to support storing the information of preheating job. |
| 95 | +- Fixed panic on repeated seed peer service stops during Scheduler shutdown. |
| 96 | +- Fixed broker authentication failure when specifying the Redis password without setting a username. |
| 97 | + |
| 98 | +## Nydus |
| 99 | + |
| 100 | +### New features and enhancements |
| 101 | + |
| 102 | +- Nydusd: Add CRC32 validation support for both RAFS V5 and V6 formats, enhancing data integrity verification. |
| 103 | +- Nydusd: Support resending FUSE requests during nydusd restoration, improving daemon recovery reliability. |
| 104 | +- Nydusd: Enhance VFS state saving mechanism for daemon hot upgrade and failover. |
| 105 | +- Nydusify: Introduce Nydus-to-OCI reverse conversion capability, enabling seamless migration back to OCI format. |
| 106 | +- Nydusify: Implement zero-disk transfer for image copy, significantly reducing local disk usage during copy operations. |
| 107 | +- Snapshotter: Builtin blob.meta in bootstrap for blob fetch reliability for RAFS v6 image. |
| 108 | + |
| 109 | +### Significant bug fixes |
| 110 | + |
| 111 | +- Nydusd: Fix auth token fetching for `access_token` field in registry authentication. |
| 112 | +- Nydusd: Add recursive inode/dentry invalidation for umount API. |
| 113 | +- Nydus Image: Fix multiple issues in optimize subcommand and add backend configuration support. |
| 114 | +- Snapshotter: Implement lazy parent recovery for proxy mode to handle missing parent snapshots. |
| 115 | + |
| 116 | +## Others |
| 117 | + |
| 118 | +You can see [CHANGELOG](https://github.com/dragonflyoss/dragonfly/blob/main/CHANGELOG.md) for more details. |
| 119 | + |
| 120 | +## Links |
| 121 | + |
| 122 | +- Dragonfly Website: <https://d7y.io/> |
| 123 | +- Dragonfly Repository: <https://github.com/dragonflyoss/dragonfly> |
| 124 | +- Dragonfly Client Repository: <https://github.com/dragonflyoss/client> |
| 125 | +- Dragonfly Console Repository: <https://github.com/dragonflyoss/console> |
| 126 | +- Dragonfly Charts Repository: <https://github.com/dragonflyoss/helm-charts> |
| 127 | +- Dragonfly Monitor Repository: <https://github.com/dragonflyoss/monitoring> |
| 128 | + |
| 129 | +## Dragonfly Github |
| 130 | + |
| 131 | + |
0 commit comments