I have a system with the following properties:
There are workers that work on jobs. Workers can be added or removed. Each worker can run multiple jobs concurrently.
There are jobs. These jobs run forever (infinite duration) and are assigned to workers. Jobs can be added or removed.
I am using round robin to assign jobs to workers on start up and this work pretty well.
However, I want to rebalance jobs assigned to workers when workers are added and removed and when jobs are added and removed.
While it is possible to reassign everything using the round robin algorithm when any of the above changes happen, it would be making more changes than required.
In other words, are there any round robin rebalancing algorithms out there that will result in minimal amount of diffs/changes to the assignments?