mirror of
https://github.com/nspcc-dev/neofs-s3-gw.git
synced 2026-03-01 04:29:15 +00:00
Fast object upload policy in gateway / per request #285
Labels
No labels
I2
I2
I3
I4
S2
S3
S4
S4
U0
U1
U2
U2
U3
U4
U4
auth-mate
blocked
bug
config
dependencies
discussion
documentation
enhancement
epic
feature
go
good first issue
help wanted
performance
question
security
test
tree-service
tree-service
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nspcc-dev/neofs-s3-gw#285
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @alexvanin on GitHub (Jul 18, 2022).
Usually NeoFS containers have placement policies with replica value > 1. It doesn't make much sense to use single replica, because NeoFS can't provide reliable storage this way (no erasure codes yet, so the system stores full object replicas).
When client sends the data to storage node, by default it waits until storage node store all replicas according to placement policy. This behaviour can be changed by setting copies_number parameter in the request. Setting this value to 1 allows client to wait only for one successful replica upload. Storage node will replicate the object asynchronously later.
It allows to increase object upload rate, but decrease reliability: storage node may lose the data before it will be replicated, which gonna lead to data loss. However, sometimes it worth the risk, especially for pure benchmarks.
Allow S3 Gateway clients to switch between reliable and fast upload.
Gateway setting
Client setting
/cc @realloc @KirillovDenis @masterSplinter01
@KirillovDenis commented on GitHub (Jul 18, 2022):
We can use user-defined metadata https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingMetadata.html#UserMetadata.
in sdk (e.g. java) it will look like (use Builder.metadata):
@alexvanin commented on GitHub (Sep 1, 2022):
All done