github.com/kaisenlinux/docker.io@v0.0.0-20230510090727-ea55db55fac7/swarmkit/manager/allocator/doc.go (about) 1 // Package allocator aims to manage allocation of different 2 // cluster-wide resources on behalf of the manager. In particular, it 3 // manages a set of independent allocator processes which can mostly 4 // execute concurrently with only a minimal need for coordination. 5 // 6 // One of the instances where it needs coordination is when deciding to 7 // move a task to the PENDING state. Since a task can move to the 8 // PENDING state only when all the task allocators have completed, 9 // they must cooperate. The way `allocator` achieves this is by creating 10 // a `taskBallot` to which all task allocators register themselves as 11 // mandatory voters. For each task that needs allocation, each allocator 12 // independently votes to indicate the completion of their allocation. 13 // Once all registered voters have voted then the task is moved to the 14 // PENDING state. 15 // 16 // Other than the coordination needed for task PENDING state, all 17 // the allocators function fairly independently. 18 package allocator