authors | state | discussion |
---|---|---|
rui@joyent.com,rob.johnston@joyent.com |
draft |
This RFD describes the Manta Picker component.
In mantav1, the "picker" is part of the manta-muskie
(webapi) component. It is responsible for selecting the list of destination storage nodes for new objects on a PUT request. It functions by querying the manta_storage
bucket on shard 1 at a default interval of 30s. Recently, we have found that picker can
overload the shard 1 Moray instance MANTA-4091.
The new Rebalancer project introduces yet another consumer of the data in the manta_storage
bucket. For mantav2, in order to avoid hot-shard issues that would be caused by all of the rebalancer and muskie service instances hitting shard 1 to get storage utilization data, the picker functionality has been split out into a separate service (manta-picker). This new service provides an interface for retrieving a cached view of the contents of the manta_storage bucket via the /poll REST endpoint. The Rebalancer will be designed to leverage the manta-picker and the mantav2 equivalent of muskie (buckets-api) will be modified to use the manta-picker service MANTA-4821.
- Picker instances should report their availability to DNS via registrar.
- Multiple picker zones can be deployed for scalability.
- Picker tunables should be added to SAPI, and controlled there.
Returns a list of storage nodes found in the manta_storage
bucket, sorted by the manta_storage_id
field. Because the list of makos can be quite large, this endpoint enforces pagination to limit the response size.
poll
will implement a cursor-based pagination scheme using the mako's manta_storage_id
as the cursor value.`
Field | Type | Description |
---|---|---|
after_id | String | return results for mako with a storage id greater than "after_id" (default="0") |
only_id | String | return result for only the mako specified by the storage id "only_id" |
limit | Number | max number of results to return (default/max = 500) |
Get up to the first 100 results:
/poll?limit=100
Get up to the next 100 results:
/poll?limit=100&after_id=<last_id>
Forces the picker's cached view of the manta_storage bucket to be immediately invalidated and refreshed. The only intended consumer of this API is the Rebalancer, which will call this API after marking a storage node as read-only, prior to evacuating the objects on it.
This interfaces takes no input parameters.
- A given Manta deployment requires significantly less than M picker components where M is the total number of muskie processes (M = Muskie zones * Muskie SMF instances).
- The Picker's intermittent updates will provide a sufficiently current view for use with the Rebalancer's selection of a destination storage node.