Skip to main content
Version: 0.13

Selector

Introduction​

What is the Selector? As its name suggests, it allows users to select specific items from a given namespace and context. There is a related trait, also named Selector, whose definition can be found below.

There is a specific scenario in Metasrv service. When a request to create a table is sent to the Metasrv service, it creates a routing table (the details of table creation will not be described here). The Metasrv service needs to select the appropriate Datanode list when creating a routing table.

Selector Type​

The Metasrv service currently offers the following types of Selectors:

LeasebasedSelector​

LeasebasedSelector randomly selects from all available (in lease) Datanodes, its characteristic is simplicity and fast.

LoadBasedSelector​

The LoadBasedSelector load value is determined by the number of regions on each Datanode, fewer regions indicate lower load, and LoadBasedSelector prioritizes selecting low-load Datanodes.

RoundRobinSelector [default]​

RoundRobinSelector selects Datanodes in a round-robin fashion. It is recommended and the default option in most cases. If you're unsure which to choose, it's usually the right choice.

Configuration​

You can configure the Selector by its name when starting the Metasrv service.

  • LeasebasedSelector: lease_based or LeaseBased
  • LoadBasedSelector: load_based or LoadBased
  • RoundRobinSelector: round_robin or RoundRobin

For example:

cargo run -- metasrv start --selector round_robin
cargo run -- metasrv start --selector RoundRobin