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
yangjun289519474 cf4944894d
Add sqlite, miniredis as mysql, redis mock suite, to f… (#293)
* test(manager): add sqlite, miniredis as mysql, redis mock suite, to fix manager unit test

Signed-off-by: hanson.yj <hanson.yj@alibaba-inc.com>

* fix(manager): add sync.Mutex when get/set leaseid

Signed-off-by: hanson.yj <hanson.yj@alibaba-inc.com>

* feat(manager): modify manager store config, add yaml config exaple

Signed-off-by: hanson.yj <hanson.yj@alibaba-inc.com>

* feat(manager): modify manager store config, add yaml config exaple

Signed-off-by: hanson.yj <hanson.yj@alibaba-inc.com>

* fix(manager): add comment for StoreSource

Signed-off-by: hanson.yj <hanson.yj@alibaba-inc.com>

Co-authored-by: hanson.yj <hanson.yj@alibaba-inc.com>
2023-06-28 17:22:41 +08:00
.github Add release workflow and optimize other workflows (#277) 2023-06-28 17:22:39 +08:00
api fix(manager): modify to config from scheduler_config in swagger yaml (#317) 2023-06-28 17:22:41 +08:00
build Add goreleaser NFPM (#313) 2023-06-28 17:22:41 +08:00
cdnsystem Fix golang lint (#249) 2023-06-28 17:22:38 +08:00
client Unified error handling style (#302) 2023-06-28 17:22:40 +08:00
cmd Feature/base options (#269) 2023-06-28 17:22:39 +08:00
deploy add installation.namespace config for helm chart (#301) 2023-06-28 17:22:40 +08:00
docs Add sqlite, miniredis as mysql, redis mock suite, to f… (#293) 2023-06-28 17:22:41 +08:00
hack fix: Makefile and build.sh (#309) 2023-06-28 17:22:41 +08:00
internal fix: when load config from cdn directory in dynconfig, skip sub directories (#310) 2023-06-28 17:22:41 +08:00
manager Add sqlite, miniredis as mysql, redis mock suite, to f… (#293) 2023-06-28 17:22:41 +08:00
pkg feature: disable resolver server config (#314) 2023-06-28 17:22:41 +08:00
scheduler fix: when load config from cdn directory in dynconfig, skip sub directories (#310) 2023-06-28 17:22:41 +08:00
version Fix lint (#244) 2023-06-28 17:22:37 +08:00
.gitignore docs: add CHANGELOG.md 2023-06-28 17:22:40 +08:00
.golangci.yml Fix golang lint (#249) 2023-06-28 17:22:38 +08:00
.goreleaser.yml Add goreleaser NFPM (#313) 2023-06-28 17:22:41 +08:00
CHANGELOG.md docs: add CHANGELOG.md 2023-06-28 17:22:40 +08:00
CODE_OF_CONDUCT.md chore: change manager swagger docs path and add makefile swagger command (#183) 2023-06-28 17:21:32 +08:00
CONTRIBUTING.md Rewrite README.md (#166) 2023-06-28 17:21:33 +08:00
LICENSE Merge branch main-rc to branch main 2023-06-28 17:20:20 +08:00
Makefile Add sqlite, miniredis as mysql, redis mock suite, to f… (#293) 2023-06-28 17:22:41 +08:00
README.md feature: update docs (#307) 2023-06-28 17:22:41 +08:00
SECURITY.md chore: add SECURITY.md (#181) 2023-06-28 17:21:32 +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 sqlite, miniredis as mysql, redis mock suite, to f… (#293) 2023-06-28 17:22:41 +08:00
go.sum Add sqlite, miniredis as mysql, redis mock suite, to f… (#293) 2023-06-28 17:22:41 +08:00

README.md

Dragonfly

alt

GitHub release 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.

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 choose appropriate downloading net-path for each peer.

CDN: A CDN server that caches downloaded data from source to avoid downloading 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.

Getting Started

Documentation

You can find the Dragonfly documentation on the website.

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.