apecloud / kubeblocks

KubeBlocks is an open-source control plane software that runs and manages databases, message queues and other stateful applications on K8s.
https://kubeblocks.io
GNU Affero General Public License v3.0
2.13k stars 176 forks source link

[Improvement] Optimize the scaling and upgrading operations of the InstanceSet to be performed in parallel #7472

Open YTGhost opened 5 months ago

YTGhost commented 5 months ago

Is your improvement request related to a problem? Please describe. When the InstanceSet is scaling or upgrading, if multiple InstanceTemplates are involved, the scaling or upgrading operations for these multiple InstanceTemplates will be performed sequentially. Is it possible to optimize this process to be performed in parallel?

If this is a new function, please describe the motivation and goals. Parallel execution can help us improve the efficiency of maintenance operations.

Describe the solution you'd like For an InstanceSet, if multiple InstanceSetTemplates are involved in scaling and upgrading operations simultaneously, the InstanceSet will first perform the scaling operations on multiple InstanceTemplates in parallel, and then perform the upgrade operations on multiple InstanceSetTemplates in parallel.

Additionally, we also need to consider concurrency control issues that arise during the scaling and upgrading process due to parallel. For example, when scaling multiple InstanceTemplates simultaneously, we might need to set an overall concurrency level; Similarly, in upgrade scenarios, it may be necessary to support setting different partition and maxUnavailable for each InstanceTemplate.

Additional context In the scenario of splitting a single InstanceSet for federated distribution, performing operations sequentially will impact maintenance efficiency.

weicao commented 5 months ago

We should add a Rollout API to control the updating sequence of instances. @free6om

github-actions[bot] commented 4 months ago

This issue has been marked as stale because it has been open for 30 days with no activity