Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: dragonfly as read-only object storage #4302

Closed
wants to merge 4 commits into from

Conversation

gaius-qi
Copy link

Dragonfly read requests via peer proxy and write requests via the default client of object storage. Backend storage now supports s3, oss and obs.

English document: https://github.com/juicedata/juicefs/files/13787601/Fluid.JuiceFS.Dragonfly-EN.V2.pdf
Chinese document: https://github.com/juicedata/juicefs/files/13787604/Fluid.JuiceFS.Dargonfly-ZH.V2.pdf

Dragonfly read requests via peer proxy and write requests via
the default client of object storage. Backend storage now supports
s3, oss and obs.

Signed-off-by: Gaius <[email protected]>
Copy link

codecov bot commented Dec 28, 2023

Codecov Report

Attention: Patch coverage is 0% with 88 lines in your changes missing coverage. Please review.

Project coverage is 56.40%. Comparing base (2bce542) to head (875350b).
Report is 547 commits behind head on main.

Files with missing lines Patch % Lines
pkg/object/dragonfly.go 0.00% 68 Missing ⚠️
pkg/object/obs.go 0.00% 11 Missing ⚠️
pkg/object/s3.go 0.00% 7 Missing ⚠️
pkg/object/oss.go 0.00% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4302      +/-   ##
==========================================
+ Coverage   55.98%   56.40%   +0.41%     
==========================================
  Files         154      154              
  Lines       39913    39859      -54     
==========================================
+ Hits        22344    22481     +137     
+ Misses      15061    14870     -191     
  Partials     2508     2508              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@gaius-qi
Copy link
Author

gaius-qi commented Dec 29, 2023

Architecture

image

Dragonfly becomes a new cache between JuiceFS and object storage. There are optimizations in the reading and writing. When reading, if there is no hit in the JuiceFS cache, the traffic will be forwarded to Dragonfly Peer. It can be used to eliminate the bandwidth limit of the object storage through P2P technology, thereby accelerating file downloading.

Advantages of using Dragonfly to proxy only read requests compared to previous solution

  • Historical storage data can be switched to use Dragonfly as cache without compatibility problem.
  • If JuiceFS write requests are supported, a dragonfly cluster needs to be deployed corresponding to an object storage. If it only supports read requests, Dragonfly can be deployed only one corresponding to many object storages as a public cache.

Performance testing

https://www.chenshaowen.com/blog/performance-testing-and-comparison-of-juicefs-ce-ee-and-dragonfly.html#6-%E6%80%BB%E7%BB%93

Others

Dragonfly feature will become stable, and if there is demand in the future, more object storage will be supported.

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.
You have signed the CLA already but the status is still pending? Let us recheck it.

@gaius-qi gaius-qi closed this Dec 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants