8 个稳定版本
2.1.3 | 2024年7月9日 |
---|---|
2.0.1 | 2024年7月6日 |
1.1.0 | 2024年7月3日 |
0.1.1 | 2024年6月25日 |
在 数据库接口 中排名 444
每月下载量 55 次
41KB
804 行代码(不包括注释)
分布式调度器
这是一个可以用于在机器集群上调度任务的分布式调度器。调度器用 Rust 实现,并使用 tokio 库进行异步 I/O。调度器设计为容错,可以从调度器自身或集群中机器的故障中恢复。
当前 cronjob 提供商为 job_scheduler,但它不再维护,所以我可能在将来用另一个包替换它。
架构
调度器由多个组件组成,这些组件协同工作以调度任务。主要组件包括
- 定时器:负责在集群上调度任务的主要调度器。它负责维护集群状态并在集群中的机器上调度任务。
- 节点池:节点池负责管理单个机器上的节点。它将检查作业是否应在本地机器上运行。调度算法基于一致性哈希。
- 驱动器:我们提供多个驱动器来运行作业。驱动器负责维护作业状态并同步节点列表。
可用的驱动器
- Redis(键扫描)
- Redis(Z-SET)
- Etcd(租约)
- Consul(键值对)
用法
要使用调度器,您可以在 examples
目录中查看示例包。以下是一个简要示例
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let rdb = redis::Client::open("redis://127.0.0.1:6379").unwrap();
let driver = distributed_schedular::driver::redis::RedisDriver::new(rdb).await?;
let np = distributed_schedular::node_pool::NodePool::new(driver);
let cron = distributed_schedular::cron::Cron::new(np).await?;
cron.add_job("test", "* * * * * *".parse().unwrap(), || {
println!("Hello, I run every seconds");
}).await?;
Ok(())
}
许可
该项目采用 AGPL-3.0 许可证 - 有关详细信息,请参阅 LICENSE 文件。
依赖项
~7–18MB
~233K SLoC