8 releases

0.3.0 Apr 9, 2019
0.2.0 Apr 8, 2019
0.1.5 Apr 8, 2019

#7 in #reliability


Used in yocto_client

MIT license

21KB
487 lines

yocto

Build Status

Yocto is a minimalistic key-value store built for fast and reliable state exchange between applications. It's written with an emphasis on reliability, speed and ease-to-use.

Features

  • Uses a concurrent hash map as main data structure to allow multiple threads. Blocks only if the same bucket is accessed by at least one write operation.
  • Allows get, insert, remove and clear operations. More to come.
  • Can be deployed seamlessly with Docker.

Usage

You can use yocto either via Docker, by building it from source or programmatically via a crate.

Docker

In the below snipped, replace <host_port> with the port you want yocto to bind to:

docker run -p <host_port>:7001 alebeck/yocto

Following environment variables can be passed:

  • YOCTO_THREADS: Number of threads, defaults to 4
  • YOCTO_BIND: IP address and port to bind to inside the docker image, defaults to 0.0.0.0:7001
  • YOCTO_VERBOSE: Show debug logs, default false

Example usage:

docker run -p 7001:7001 --env YOCTO_THREADS=2 alebeck/yocto 

Build from source

Pull the repository and execute

cargo test -- --test-threads=1
cargo build --release
cargo install

Via crates.io

Add yocto to your dependencies and use it like that:

use yocto::args::Config;

let config = Config {
    threads: 1,
    iface: "127.0.0.1:7001".to_string(),
    log_level: log::LogLevelFilter::Error // requires log = "0.3.0"
};

yocto::run(config);

Dependencies

~2.5MB
~36K SLoC