The project is developed by Golang with etcd and MongoDB.
The entire project structure is as the figure below:
Used etcd to sychronize all tasks from the schedule to all Worker nodes. Each worker schedules full tasks independently, without directly generating rpc with the Master nodes, and each Worker node uses distributed lock preemption to solve the problem of concurrent scheduling of the same task.