burst is a distributed job scheduling prototype for short-lived process workloads.
- Control plane: one controller process exposes gRPC APIs for submit, status, worker registration, polling, and result reporting.
- Data plane: workers execute jobs locally, maintain local leased queues, and report terminal results.
- Worker-to-worker balancing: idle workers can steal queued jobs from peer workers over gRPC.
- Scheduling: pluggable router strategies selected by
controller.routerin config. - State model: controller holds in-memory scheduling and job lifecycle state.
- Submit and track process, Python, and Docker job specs through
burst-cli. - Lease jobs to workers using router strategies (
roundrobin,power2,biased). - Queue-capacity-aware leasing: workers register slots and queue capacity; controller schedules based on available queue room.
- Peer work stealing for imbalance recovery (
StealJobsRPC). - Local output capture per job (
<job_id>.stdout,<job_id>.stderr). - Docker Compose workflow for controller and multi-worker clusters.
burst-controller: scheduling, leasing, status transitions, worker registry.burst-worker: polling loop, local queue execution, peer steal server/client.burst-cli: submit and status client.burst-core: shared config model, protobuf contracts, generated gRPC types.scripts/test_work_stealing.py: local batch submit utility for steal-heavy experiments.
- Client submits
JobSpec. - Controller enqueues and leases jobs to workers according to router strategy.
- Worker polls, enqueues locally, executes up to slot limit, and reports result.
- Idle workers may steal queued jobs from peers.
- Controller updates terminal state (
succeededorfailed).
ControllerRpc(control plane):SubmitJobGetJobStatusRegisterWorkerPollJobReportJobResultHeartbeat
WorkerPeerRpc(peer balancing):StealJobs
Proto references:
burst-core/proto/burst/v1/control.protoburst-core/proto/burst/v1/job.protoburst-core/proto/burst/v1/worker.protoburst-core/proto/burst/v1/peer.proto
Build images:
make buildStart controller and workers:
make upTail logs from all running project containers:
make logsStop cluster:
make downRun Rust tests:
cargo test -p burst-controller -p burst-workerGenerate Rust and proto docs:
make docs- Single active controller architecture; no multi-controller coordination.
- In-memory controller state; no durable job state store.
- No tenant quotas, admission control, or rate limiting.
- No authn/authz between services.
- Lease semantics are minimal and optimized for prototype speed.