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

Open
wants to merge 4 commits into
base: main
Choose a base branch
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 <gaius.qi@gmail.com>
Copy link

codecov bot commented Dec 28, 2023

Codecov Report

Attention: 88 lines in your changes are missing coverage. Please review.

Comparison is base (2bce542) 55.98% compared to head (875350b) 56.40%.
Report is 6 commits behind head on main.

Files 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.

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.

None yet

1 participant