-
Notifications
You must be signed in to change notification settings - Fork 38
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
Replication without decoding #2317
Labels
enhancement
Improving existing functionality
I4
No visible changes
neofs-storage
Storage node application issues
performance
More of something per second
S2
Regular significance
U4
Nothing urgent
Milestone
Comments
roman-khimov
added
neofs-storage
Storage node application issues
refactor
performance
More of something per second
labels
Apr 24, 2023
roman-khimov
added
enhancement
Improving existing functionality
U4
Nothing urgent
S2
Regular significance
I4
No visible changes
and removed
refactor
labels
Dec 21, 2023
cthulhu-rider
added a commit
that referenced
this issue
Jan 24, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 24, 2024
Previously, replication service of storage nodes encoded single object into protocol message N times, where N is a number of nodes to accept new object replica. Based on the fact that if the object is fixed, the request remains unchanged, it makes sense to prepare the message once and send it to all nodes. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 24, 2024
Previously, replication service of storage nodes encoded single object into protocol message N times, where N is a number of nodes to accept new object replica. Based on the fact that if the object is fixed, the request remains unchanged, it makes sense to prepare the message once and send it to all nodes. Closes #2316. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 24, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 24, 2024
Previously, replication service of storage nodes encoded single object into protocol message N times, where N is a number of nodes to accept new object replica. Based on the fact that if the object is fixed, the request remains unchanged, it makes sense to prepare the message once and send it to all nodes. Closes #2316. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 29, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 29, 2024
Previously, replication service of storage nodes encoded single object into protocol message N times, where N is a number of nodes to accept new object replica. Based on the fact that if the object is fixed, the request remains unchanged, it makes sense to prepare the message once and send it to all nodes. Closes #2316. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 29, 2024
Previously, storage nodes always sent "ready" objects after client data slicing via NeoFS API `ObjectService.Put` RPC. Recently, NeoFS protocol was extended with `ObjectService.Replicate` RPC allowing to replicate object from one container node to another. New RPC is more efficient, and now used by Policer+Replicator tandem to replicate objects on shortage. Actually, when `ObjectService.Put` server makes initial object save, it does completely the same. In total, when `Put` server represents storage node from the container, it can use `Replicate` RPC for better performance. An additional advantage is the one-time encoding of the protocol message, which is reused for sending to different nodes. This reduces the memory cost of processing each data stream. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 30, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 30, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 30, 2024
Previously, replication service of storage nodes encoded single object into protocol message N times, where N is a number of nodes to accept new object replica. Based on the fact that if the object is fixed, the request remains unchanged, it makes sense to prepare the message once and send it to all nodes. Closes #2316. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Jan 30, 2024
Previously, storage nodes always sent "ready" objects after client data slicing via NeoFS API `ObjectService.Put` RPC. Recently, NeoFS protocol was extended with `ObjectService.Replicate` RPC allowing to replicate object from one container node to another. New RPC is more efficient, and now used by Policer+Replicator tandem to replicate objects on shortage. Actually, when `ObjectService.Put` server makes initial object save, it does completely the same. In total, when `Put` server represents storage node from the container, it can use `Replicate` RPC for better performance. An additional advantage is the one-time encoding of the protocol message, which is reused for sending to different nodes. This reduces the memory cost of processing each data stream. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 19, 2024
Previously, the local object storage engine always decoded the requested objects. In cases where it was necessary to obtain a binary object, an excessive decoding-encoding round was performed. Now you can specify an optional `bytes.Buffer` into which the object will be read. Refs #2316. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
Previously, the local object storage engine always decoded the requested objects. In cases where it was necessary to obtain a binary object, an excessive decoding-encoding round was performed. Now `GetBytes` method to access object binary is provided. The method allows to optimize allocations via optional parameter. Refs #2316. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
Previously, storage nodes always sent "ready" objects after client data slicing via NeoFS API `ObjectService.Put` RPC. Recently, NeoFS protocol was extended with `ObjectService.Replicate` RPC allowing to replicate object from one container node to another. New RPC is more efficient, and now used by Policer+Replicator tandem to replicate objects on shortage. Actually, when `ObjectService.Put` server makes initial object save, it does completely the same. In total, when `Put` server represents storage node from the container, it can use `Replicate` RPC for better performance. An additional advantage is the one-time encoding of the protocol message, which is reused for sending to different nodes. This reduces the memory cost of processing each data stream. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
Previously, the local object storage engine always decoded the requested objects. In cases where it was necessary to obtain a binary object, an excessive decoding-encoding round was performed. Now `GetBytes` method to access object binary is provided. The method allows to optimize allocations via optional parameter. Refs #2316. Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 21, 2024
Previously, storage nodes always sent "ready" objects after client data slicing via NeoFS API `ObjectService.Put` RPC. Recently, NeoFS protocol was extended with `ObjectService.Replicate` RPC allowing to replicate object from one container node to another. New RPC is more efficient, and now used by Policer+Replicator tandem to replicate objects on shortage. Actually, when `ObjectService.Put` server makes initial object save, it does completely the same. In total, when `Put` server represents storage node from the container, it can use `Replicate` RPC for better performance. An additional advantage is the one-time encoding of the protocol message, which is reused for sending to different nodes. This reduces the memory cost of processing each data stream. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 29, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 29, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Feb 29, 2024
Previously, storage nodes always sent "ready" objects after client data slicing via NeoFS API `ObjectService.Put` RPC. Recently, NeoFS protocol was extended with `ObjectService.Replicate` RPC allowing to replicate object from one container node to another. New RPC is more efficient, and now used by Policer+Replicator tandem to replicate objects on shortage. Actually, when `ObjectService.Put` server makes initial object save, it does completely the same. In total, when `Put` server represents storage node from the container, it can use `Replicate` RPC for better performance. An additional advantage is the one-time encoding of the protocol message, which is reused for sending to different nodes. This reduces the memory cost of processing each data stream. Closes #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 5, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 5, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Based on the fact that if the object is fixed, the request remains unchanged. According to this, transport message is encoded once and sent to all nodes. Closes #2317. Refs #2316. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 5, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 5, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Based on the fact that if the object is fixed, the request remains unchanged. According to this, transport message is encoded once and sent to all nodes. Closes #2317. Refs #2316. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 22, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 22, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Based on the fact that if the object is fixed, the request remains unchanged. According to this, transport message is encoded once and sent to all nodes. Closes #2317. Refs #2316. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 28, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Mar 28, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Based on the fact that if the object is fixed, the request remains unchanged. According to this, transport message is encoded once and sent to all nodes. Closes #2317. Refs #2316. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Apr 1, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Apr 1, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Based on the fact that if the object is fixed, the request remains unchanged. According to this, transport message is encoded once and sent to all nodes. Closes #2317. Refs #2316. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Apr 1, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Apr 1, 2024
It's more lightweight and supports binary copying without additional decode-encode round. Based on the fact that if the object is fixed, the request remains unchanged. According to this, transport message is encoded once and sent to all nodes. Closes #2317. Refs #2316. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
cthulhu-rider
added a commit
that referenced
this issue
Apr 3, 2024
NeoFS protocol has been recently extended with new object replication RPC `ObjectService.Replicate` separated from the general-purpose `ObjectService.Put` one. According to API of the new RPC, all physically stored objects are transmitted in one message. Also, replication request and response formats are much simpler than for other operations. Serve new RPC by the storage node app. Requests are served similar to `ObjectService.Put` ones with TTL=1 (local only). Refs #2317. Signed-off-by: Leonard Lyubich <leonard@morphbits.io>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
enhancement
Improving existing functionality
I4
No visible changes
neofs-storage
Storage node application issues
performance
More of something per second
S2
Regular significance
U4
Nothing urgent
Is your feature request related to a problem? Please describe.
I'm always frustrated when... Ah, it's the same frustration as with #2316.
Describe the solution you'd like
But there is one more thing we can do -- try skipping object decoding entirely. Again, maybe not feasible at the moment with APIs we have, but theoretically we may work with the raw encoded object because it's to be serialized in the same way for the PUT operation. This means skipping the decoding stage with all of the associated processing/allocations.
Additional context
#2300, #2178.
The text was updated successfully, but these errors were encountered: