Dragonfly is an open source P2P-based file distribution and image acceleration system. It is hosted by the Cloud Native Computing Foundation (CNCF) as an Incubating Level Project.
Go to file
Eryu Guan 77225e1633
feat: don't gc client rpc connection if ExpireTime is 0 (#1296)
In case we don't want to GC client connections in some special
circumstances.

Signed-off-by: Eryu Guan <eguan@linux.alibaba.com>
2023-06-28 17:33:18 +08:00
.github chore: add schedule cron with e2e testing (#1262) 2023-06-28 17:33:14 +08:00
api feat: manager add seed peer (#1293) 2023-06-28 17:33:18 +08:00
build feat: use a golang native file server to replace nginx (#1258) 2023-06-28 17:33:17 +08:00
cdn feat: use a golang native file server to replace nginx (#1258) 2023-06-28 17:33:17 +08:00
client feat: manager add seed peer (#1293) 2023-06-28 17:33:18 +08:00
cmd feat: support build arm&&arm64 dfget (#1286) 2023-06-28 17:33:17 +08:00
deploy fix: run.sh threw error on mac (#1285) 2023-06-28 17:33:17 +08:00
docs docs: move document from /docs to d7y.io (#1229) 2023-06-28 17:33:12 +08:00
hack feat: use a golang native file server to replace nginx (#1258) 2023-06-28 17:33:17 +08:00
internal feat: move dfnet to pkg dir (#1265) 2023-06-28 17:33:15 +08:00
manager feat: manager add seed peer (#1293) 2023-06-28 17:33:18 +08:00
pkg feat: don't gc client rpc connection if ExpireTime is 0 (#1296) 2023-06-28 17:33:18 +08:00
scheduler fix: scheduler typo (#1297) 2023-06-28 17:33:18 +08:00
test fix: client synchronizer report error lock and dial grpc timeout (#1260) 2023-06-28 17:33:15 +08:00
version feat: update to v2.0.2 (#1232) 2023-06-28 17:33:12 +08:00
.gitignore feat: limit tree depth (#1099) 2023-06-28 17:33:00 +08:00
.gitmodules feat: add console submodule (#549) 2023-06-28 17:31:36 +08:00
.golangci.yml feat: manager add seed peer (#1293) 2023-06-28 17:33:18 +08:00
.goreleaser.yml feat: add dfcache rpm/deb packages and man pages and publish in goreleaser (#1259) 2023-06-28 17:33:14 +08:00
.markdownlint.yml docs: add metrics document (#1075) 2023-06-28 17:32:57 +08:00
CHANGELOG.md chore: generate change log 2023-06-28 17:33:12 +08:00
CODE_OF_CONDUCT.md docs: add slack and google groups (#1203) 2023-06-28 17:33:09 +08:00
CONTRIBUTING.md docs: add slack and google groups (#1203) 2023-06-28 17:33:09 +08:00
LICENSE Merge branch main-rc to branch main 2023-06-28 17:20:20 +08:00
MAINTAINERS.md docs: add slack and google groups (#1203) 2023-06-28 17:33:09 +08:00
Makefile feat: add dfcache rpm/deb packages and man pages and publish in goreleaser (#1259) 2023-06-28 17:33:14 +08:00
README.md docs: move document from /docs to d7y.io (#1229) 2023-06-28 17:33:12 +08:00
SECURITY.md docs: add slack and google groups (#1203) 2023-06-28 17:33:09 +08:00
codecov.yml Fix: use atomic to avoid data race in client (#254) 2023-06-28 17:22:38 +08:00
go.mod Add csv storage to scheduler (#1234) 2023-06-28 17:33:13 +08:00
go.sum Add csv storage to scheduler (#1234) 2023-06-28 17:33:13 +08:00

README.md

Dragonfly

alt

GitHub release Artifact Hub CI Coverage Go Report Card Open Source Helpers TODOs Discussions Twitter GoDoc LICENSE

Provide efficient, stable, secure, low-cost file and image distribution services to be the best practice and standard solution in the related Cloud-Native area.

Introduction

Dragonfly is an open source intelligent P2P based image and file distribution system. Its goal is to tackle all distribution problems in cloud native scenarios. Currently Dragonfly focuses on being:

  • Simple: Well-defined user-facing API (HTTP), non-invasive to all container engines;
  • Efficient: CDN support, P2P based file distribution to save enterprise bandwidth;
  • Intelligent: Host-level speed limit, intelligent flow control due to host detection;
  • Secure: Block transmission encryption, HTTPS connection support.

Dragonfly is now hosted by the Cloud Native Computing Foundation (CNCF) as an Incubating Level Project. Originally it was born to solve all kinds of distribution at very large scales, such as application distribution, cache distribution, log distribution, image distribution, and so on. You can visit d7y.io for more information.

Features

  • Implement P2P files distribution with various storage types (HDFS, storage services from various cloud vendors, Maven, Yum, etc.) through a unified back-to-source adapter layer.
  • Support more distribution modes: active pull, active push, real-time synchronization, remote replication, automatic warm-up, cross-cloud transmission, etc.
  • Provide separation and decoupling between systems, scheduling and plug-in CDN. Support on-demand deployment with flexible types: light or heavy, inside or outside, to meet the actual needs of different scenarios.
  • Newly designed P2P protocol framework based on GRPC with improved efficiency and stability.
  • Perform encrypted transmission, account-based transmission authentication and rate limit, and multi-tenant isolation mechanism.
  • Bear more efficient IO methods: multithreaded IO, memory mapping, DMA, etc.
  • Advocate dynamic compression, in-memory file systems, and more efficient scheduling algorithms to improve distribution efficiency.
  • Client allows third-party software to natively integrate Dragonflys P2P capabilities through C/S mode.
  • Productivity: Support file uploading, task management of various distribution modes, data visualization, global control, etc.
  • Consistent internal and external versions, shared core features, and individual extensions of non-generic features.
  • Enhanced integration with ecology: Harbor, Nydus (on-demand image download), warehouse services for various cloud vendors, etc.

Architecture

alt

Manager: Used to manage the dynamic configuration that each module depends on, and provide keepalive and metrics functions.

Scheduler: The tracker and scheduler in the P2P network that chooses appropriate downloading net-path for each peer.

CDN: A CDN server that caches downloaded data from source to avoid downloading the same files repeatedly.

Daemon: It's a daemon of dfget client. It establishes a proxy between containerd/CRI-O and registry.

Dfget: The client of Dragonfly used for downloading files. It's similar to wget.

Documentation

You can find the full documentation on the d7y.io.

Community

Welcome developers to actively participate in community discussions and contribute code to Dragonfly. We will remain concerned about the issues discussed in the community and respond quickly.

Contributing

You should check out our CONTRIBUTING and develop the project together.

Code of Conduct

Please refer to our Code of Conduct.