Orchestra is a powerful distributed task orchestration system built in Go, designed to efficiently manage and execute containerized tasks across a cluster of worker nodes. It provides a robust platform for scheduling, monitoring, and controlling distributed workloads.
- Efficiently distribute tasks across multiple worker nodes
- Docker Integration: Native support for containerized workloads
- RESTful API: Simple HTTP API for task management and monitoring
- Real-time Monitoring: Track task states and resource usage
- Flexible Scheduling: Smart task scheduling based on node resources
- State Management: Reliable task state tracking and persistence
- Resource Management: CPU, Memory, and Disk usage monitoring
Orchestra follows a manager-worker architecture:
- Manager: Coordinates task distribution and maintains system state
- Workers: Execute tasks in Docker containers and report status
- API Layer: RESTful endpoints for system interaction
- Store: Flexible storage interface for task and event data
- Go 1.23.3 or higher
- Docker
- Git
# Clone the repository
git clone https://github.com/utkarsh5026/Orchestra.git
# Navigate to the project directory
cd Orchestra
# Install dependencies
go mod download
# Build the project
go build -o orchestra src/main.goThe main components are organized as follows:
cmd/: Command-line interface definitionsmanager/: Manager node implementationworker/: Worker node implementationtask/: Task definitions and Docker integrationstore/: Storage implementationsnode/: Node management and statisticshandler/: HTTP request handlers