Make pool choose the node according to container/object storage policy #117

Open
opened 2025-12-28 18:07:05 +00:00 by sami · 3 comments
Owner

Originally created by @realloc on GitHub (Jul 18, 2022).

When a protocol gate tries to PUT or GET an object, it uses the client pool connections to a technically random storage node. If it could use the node from the set of container nodes (if there is any of them in current connection pool), it could improve performance. If there are no nodes from the container set, everything would work as it is now.

The cost of modification:

  • Adding Network Map operation to API and having netmap sync logic in the client
  • Adding code to sync netmap version (epoch field observed from messages, WS subscriptions, etc)
  • Need to get policy from container structure
  • Additional calculation (CPU is usually not a bottleneck in our case)

Protocol gateways have a container cache on their side, hence it may be better to accept the storage policy as an argument.

Originally created by @realloc on GitHub (Jul 18, 2022). When a protocol gate tries to PUT or GET an object, it uses the client pool connections to a technically random storage node. If it could use the node from the set of container nodes (if there is any of them in current connection pool), it could improve performance. If there are no nodes from the container set, everything would work as it is now. The cost of modification: - Adding Network Map operation to API and having netmap sync logic in the client - Adding code to sync netmap version (epoch field observed from messages, WS subscriptions, etc) - Need to get policy from container structure - Additional calculation (CPU is usually not a bottleneck in our case) Protocol gateways have a container cache on their side, hence it may be better to accept the storage policy as an argument.
Author
Owner

@alexvanin commented on GitHub (Jul 21, 2022):

Blocked by API changes (method to fetch network map)

@alexvanin commented on GitHub (Jul 21, 2022): Blocked by API changes (method to fetch network map)
Author
Owner

@alexvanin commented on GitHub (Oct 6, 2022):

API now returns netmap in netmap service: nspcc-dev/neofs-api@c03a53813a

Now need to discuss implementation details in pool.
Also it might be blocked until neofs-api-go will support new API.

@alexvanin commented on GitHub (Oct 6, 2022): API now returns netmap in netmap service: https://github.com/nspcc-dev/neofs-api/commit/c03a53813a53c9283060e76a67d110c1c528a326 Now need to discuss implementation details in pool. Also it might be blocked until neofs-api-go will support new API.
Author
Owner

@fyrchik commented on GitHub (Oct 6, 2022):

See also #341

@fyrchik commented on GitHub (Oct 6, 2022): See also #341
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
nspcc-dev/neofs-sdk-go#117
No description provided.