Skip to content

cruvie/kk_scheduler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

101 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kk_scheduler

A job scheduling system based on cron and gRPC.

Users register services (gRPC servers), add jobs with cron specs, and the scheduler triggers jobs at scheduled times via gRPC calls.

Ask DeepWiki

Features

  • Cron-based job scheduling with gRPC triggers
  • Web UI for managing services, jobs, tasks, and logs
  • Pluggable storage backend
  • gRPC + HTTP API for programmatic access

Screenshots

service-list job-list
task-list task-log

System Design

graph TB
    U[SDK RPCClient]
    W[Web UI]

    subgraph kk_scheduler
        C[API Handlers]
        G[Global Client]
        F[Cron Scheduler]
        C -- Update Job --> F
    end

    subgraph App
        A[kk_scheduler Client server]
        A2[User Jobs]
        A -- Trigger --> A2
    end

    subgraph Storage Layer
        J[Store Interface]
        I[Default Postgres Store]
    end

    U -- Get/Put/Enable/Trigger Job/Service --> C
    W -- Get/Put/Enable/Trigger Job/Service --> C
    C --> G
    F --> G
    G -- RPC Trigger --> A
    G <-- Get/Put --> J
    J --> I
Loading

Deploy

Docker

docker-compose

docker compose up -d

Visit http://localhost:8668

Usage

1. Install

go get github.com/cruvie/kk_scheduler/go@latest

2. Implement trigger server

Run a gRPC server that implements kk_scheduler.UnimplementedKKScheduleTriggerServer

See client_server_test.go

3. Register service and job

Put a service and job into kk_scheduler, then enable the job.

See readme_test.go

Contribute

Provide more test cases

Any test case PR is welcome.

Support more storage engines

kk_scheduler uses Postgres as default storage engine, but any storage engine that implements StoreDriver can be used.

  1. Create a store_xxxx.go in internal/store_driver/ like postgres.go
  2. Register it in NewStoreDriver() in driver.go
  3. Add config field in config.go and config.toml

Improve readme doc and code comments

Web UI improvements

TODO

  • support authentication
  • record operation for events(update/trigger)

About

A job scheduling system based on cron and grpc

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors