Important: This documentation is about an older version. It's relevant only to the release noted, many of the features and functions have been updated or replaced. Please view the current version.
The query-scheduler is a stateless component that retains a queue of queries to execute, and distributes the workload to available queriers.
The query-scheduler is a required component when using the query-frontend.
The following flow describes how a query moves through a Pyroscope cluster:
- The query-frontend receives queries, and then either splits and shards them, or serves them from the cache.
- The query-frontend enqueues the queries into a query-scheduler.
- The query-scheduler stores the queries in an in-memory queue where they wait for a querier to pick them up.
- Queriers pick up the queries, and executes them.
- The querier sends results back to query-frontend, which then forwards the results to the client.
Benefits of using the query-scheduler
Query-scheduler enables the scaling of query-frontends. To learn more, see Mimir Query Frontend documentation.
To use the query-scheduler, query-frontends and queriers need to discover the addresses of query-scheduler instances. To advertise itself, the query-scheduler uses Ring-based service discovery which is configured via the memberlist configuration.
For high-availability, run two query-scheduler replicas.