Home

Awesome

Delicate

Build License

English | 简体中文

What is delicate

<a href=""> <img src="./doc/src/delicate_logo.png" alt="delicate logo" title="delicate" height="125" width="125" align="right"/> </a>

delicate A lightweight and distributed task scheduling platform written in rust.:

features

The architecture of delicate:

architecture topology

Project rendering

<details> <summary>Click me</summary>

</details>

Benchmark

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.

Get Started

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:

Setting up delicate

<!-- We can download the binary from [release page](https://github.com/BinChengZhao/delicate/releases). --> <!-- For example we use linux version: ```bash $ mkdir delicate $ wget https://github.com/BinChengZhao/delicate/releases/download/v1.0.0/delicate-v1.0.0-linux-amd64.tar.gz $ tar zxvf delicate-v1.0.0-linux-amd64.tar.gz -C delicate && cd delicate -->
  1. 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.)

  2. initialize cargo in the current shell, source $HOME/.cargo/env .

  3. 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 .

  4. cd delicate/ .

  5. cargo check , check for environment dependencies etc.

  6. when error: linker cc not found: solution : yum -y install gcc .

  7. 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 ` .

  8. cp template.env .env and start modifying the configuration.

  9. Compile the executable with cargo build --release after passing it.

  10. Start delicate-scheduler: nohup target/release/delicate-scheduler >> scheduler.log 2>&1 & on the machine where the server is deployed .

  11. start delicate-executor: nohup target/release/delicate-executor >> executor.log 2>&1 & on the machine performing the task .

  12. Please refer to delicate-web/README.md for the deployment of front-end resources.

  13. 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.

Quick start

Quick-start

Documentation

See reference for more information.

To Do List

Roadmap

See delicate Roadmap for details.

Contributing

:balloon: 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.

Rust-guide Js-guide

Thanks

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.

Stargazers over time

Stargazers over time

License

Licensed under either of

Contribution

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.