A simulated distributed task-scheduling system written in Java.
- Adding/deleting tasks
- Disabling/enabling worker nodes temporarily
- Load balancing between workers
- Distributing tasks to other workers when one worker loses connection
- Simultaneous control from multiple clients
Each instance has a role: server, client, or worker. The server is the master node which connects all other nodes and handles communication between them. Before launching any other node, only one instance of the server must be launched. Workers are the nodes that receive the tasks and clients are interfacs to control and monitor tasks and workers.
create task --name=<task_name> [--node=<worker_name>]to create a new task (use--nodeto manually suggest a worker node, otherwise it will be automatically selected)delete task --name=<task_name>to delete a taskget tasksto get a list of all tasks and their statusget nodesto get a list of all nodes and their statuscordon node <worker_name>to disable a worker node temporarilyuncordon node <worker_name>to re-enable a worker node
