From 6e79b910dab494b4d6985e05831c1f78de9957ae Mon Sep 17 00:00:00 2001 From: Andre Branchizio Date: Tue, 20 Jul 2021 14:12:53 -0600 Subject: [PATCH] Thanos planner component proposal --- .../img/thanos_proposal_planner_component.png | Bin 0 -> 30843 bytes .../202107-planner-component.md | 73 ++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 docs/img/thanos_proposal_planner_component.png create mode 100644 docs/proposals-accepted/202107-planner-component.md diff --git a/docs/img/thanos_proposal_planner_component.png b/docs/img/thanos_proposal_planner_component.png new file mode 100644 index 0000000000000000000000000000000000000000..474fea51157e208cc8955cd1d98ca6ee070b13b0 GIT binary patch literal 30843 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 literal 0 HcmV?d00001 diff --git a/docs/proposals-accepted/202107-planner-component.md b/docs/proposals-accepted/202107-planner-component.md new file mode 100644 index 0000000000..60971b7d88 --- /dev/null +++ b/docs/proposals-accepted/202107-planner-component.md @@ -0,0 +1,73 @@ +## Separate Planner into its own Component + +* **Owners:** + + * [@andrejbranch](https://github.com/andrejbranch) + +* **Related Tickets:** + + * [Compact all available plans for a single group concurrently](https://github.com/thanos-io/thanos/issues/3806) + +## Summary + +Separate compactor's planner into its own component and have compactor workers request available plans from the planner. + +## Why + +Currently, the Thanos compactor handles planning which blocks to compact as well as vertical/horizontal compaction of the groups. This causes issues with the scalability of compaction for a single tenant. The actual compaction process is relatively simple, as all the process needs to know is what blocks to compact. By contrast, the planning logic is relatively complex and currently can't coordinate with other compactors. To get around the coordination issue, currently the compactor can be sharded by tenant. This will not horizontally scale. When a single tenant becomes very large it will need to distribute the workload across many compaction processes across many instances, regardless of how the workload is divided. + +## Goals + +* To separate planner into its own component and have compactors communicate with the planner to get the next available plan. + +## Non-Goals + +* Horizontally scaling compaction for a single tenant will be addressed following the completion of this proposal + +## Proposal +![where](../img/thanos_proposal_planner_component.png) + +### Separate planner into its own component. +For the initial implementation a reasonable amount of the current planner code could be reused. One difference is the new planner will need to run plans for all tenants. The planner should maintain a priority queue of available plans with fair ordering between tenants. The planner should also be aware of which plans are currently running and be able to handle the failure of a compaction plan gracefully. After the completion of this proposal, planner can be updated to improve single tenant compaction performance, following the goals of the [compaction group concurrency pull request](https://github.com/thanos-io/thanos/pull/3807). + +### GRPC pubsub (bidirectional streaming) +The new planner component should expose a bidirectional rpc streaming endpoint where each compactor can initialize a connection and send/receive messages to/from the planner. This connection should stay open indefinitely, only closing when either a compactor or planner is shutdown or on failure. Compared to a simple request/response pattern, this will allow for the planner to easily detect when a connection has been lost and handle failures gracefully. Below is an oversimplified and verbose example of what the protos could look like. + +``` +// Example protos +service Planner { + rpc Connect(stream CompactorMessage) returns (stream PlannerMessage) {} +} + +message CompactionPlan { + string tenant = 1 + repeated string blocks = 2 +} + +// since this is 1 rpc connection we need to distinguish between different messages compactor can send +enum CompactorMessageType { + UNKNOWN = 0 + INIT = 1 // initialize connection + NEXT = 2 // request next plan + COMPLETE = 3 // a plan was completed + .... +} + +message CompactorMessage { + CompactorMessageType type = 1 + CompactionPlan = 2 +} + +message PlannerMessage { + CompactionPlan = 1 +} +``` + +## Action Plan +* Setup and agree on the planner's service and message protos +* Create the planner component and implement the protos +* Implement the planners priority queue +* Move planner code from compactor into the new planner service. +* Update compactor to connect to the new planner service and request plans + +