delicate
A lightweight and distributed task scheduling platform written in rust.:
Friendly UI: [Front-end] Convenient management of tasks & executors, monitoring their status and supporting manual maintenance etc.
Flexible Operations: Flexible task operations, support for limiting the maximum number of parallelism in a single node, time zone settings corresponding to cron expressions, scheduling modes (single, fixed number, constantly repeating), the ability to manually trigger tasks at any time, manually terminate task instances, and view task logs online.
High Availability: Delicate supports unlimited horizontal expansion. It's easy to achieve high availability and performance by deploying as many Delicate servers and executors.
High Performance: Lightweight and essential features speed up the performance, The basic resource overhead for delicate
is roughly (less than 0.1% cpu usage, with about 10m of memory.)
Observability: There are many meaningful statistics periodically in a readable way.
Upgrade: Dynamic upgrade of the system (upgrade is done by obtaining the latest source code and performing database migration.
Reusability: Excutor provides restful-api
that allows user applications to maintain custom tasks.
Permission Management: Permission management function based on casbin implementation, continuously optimize the experience.
The architecture of delicate:
Task take about 6,424 ns (+/- 52) per scheduling on CentOS Linux release 7.6.1810 (Core) (varies by OS/hardware).
System: CentOS Linux release 7.6.1810 (Core) - 4cores/8G.
Single node: delicate-executor
Task creation, peak cpu consumption 3%, qps: 17000+
Task cancellation, peak cpu consumption 3%, qps: 18000+
Task manual scheduling, peak cpu consumption 3.5%, qps: 14000+
Task removal, peak cpu consumption 3%, qps: 14000+
health_check, peak cpu consumption 4%, qps: 2600+
The peak memory consumption is all within 60M (varies by OS/hardware).
The rest of the overall indicators await bench.
The basic common usage of delicate is to quickly set up for the backend servers and executors. We split it into multiple simple steps to illustrate the delicate concepts and operations.
The source code installation requires:
rustc
is 1.54.)install the rust suite: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
or curl --tlsv1.2 -sSf https://sh.rustup.rs | sh
or curl https://sh.rustup.rs -sSf | sh
. (It is possible to encounter a curl error and need to retry several times, These problems are usually due to the fact that the curl version is too low, or the network is unstable.)
initialize cargo in the current shell, source $HOME/.cargo/env
.
Get the delicate source code and compile it ( this is an example, please get the corresponding Tag version according to your needs ) : git clone https://github.com/BinChengZhao/delicate.git
.
cd delicate/
.
cargo check
, check for environment dependencies etc.
when error: linker cc
not found: solution : yum -y install gcc
.
when --- stderr thread 'main' panicked at 'Without
* set in .env: NotPresent'
then you need to set the environment variable, using the project's template.env ` .
cp template.env .env
and start modifying the configuration.
Compile the executable with cargo build --release
after passing it.
Start delicate-scheduler: nohup target/release/delicate-scheduler >> scheduler.log 2>&1 &
on the machine where the server is deployed .
start delicate-executor: nohup target/release/delicate-executor >> executor.log 2>&1 &
on the machine performing the task .
Please refer to delicate-web/README.md
for the deployment of front-end resources.
delicate-scheduler
& delicate-web
need to be under the same domain (such as api.delicate.com
& web.delicate.com
), so as to avoid cross-domain issues, Both delicate-scheduler
& delicate-web
can be deployed in clustered versions, accessible via reverse proxy.
See reference for more information.
scheduler & executor
communication using RPC, but currently there are problems with dependencies (RPC framework (tonic | tarpc
) both depend on tokio 1,current actix-web stable version 3, does not support integration with tokio 1 ).See delicate Roadmap for details.
Thanks for your help improving the project! We are so happy to have you! We have a contributing guide to help you get involved in the Delicate project.
Sincere thanks to my friend Walker-os
who helped me solve a lot of front-end resource problems and speed up the release of delicate and Liping Wang
help me beautify the logo.
Licensed under either of
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型