Need help with valkeyrie?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

abronan
145 Stars 38 Forks Apache License 2.0 349 Commits 19 Opened issues

Description

Distributed Key/Value Store Abstraction Library written in Go

Services available

!
?

Need anything else?

Contributors list

No Data

valkeyrie

GoDoc Build Status Coverage Status Go Report Card

valkeyrie
provides a
Go
native library to store metadata using Distributed Key/Value stores (or common databases).

Its goal is to abstract common store operations (Get, Put, List, etc.) for multiple Key/Value store backends.

For example, you can easily implement a generic Leader Election algorithm on top of it (see the docker/leadership repository).

Examples of usage

You can refer to Examples for a basic overview of the library.

Compatibility

A storage backend in

valkeyrie
implements (fully or partially) the Store interface.

| Calls | Consul | Etcd | Zookeeper | Redis | BoltDB | DynamoDB | |-----------------------|:-----------------:|:-------------:|:------------------:|:-----------------:|:---------------:|:-----------------:| | Put | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Get | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Delete | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Exists | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | Watch | ✓ | ✓ | ✓ | ✓ | | | | WatchTree | ✓ | ✓ | ✓ | ✓ | | | | NewLock (Lock/Unlock) | ✓ | ✓ | ✓ | ✓ | | ✓ | | List | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | DeleteTree | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | AtomicPut | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | AtomicDelete | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

Supported versions

  • Consul versions >=
    0.5.1
    because it uses Sessions with
    Delete
    behavior for the use of
    TTLs
    (mimics zookeeper's Ephemeral node support), If you don't plan to use
    TTLs
    : you can use Consul version
    0.4.0+
    .
  • Etcd versions >=
    2.0
    with APIv2 (deprecated) and >=
    3.0
    APIv3 (recommended).
  • Zookeeper versions >=
    3.4.5
    .
  • Redis versions >=
    3.2.6
    . Key space notification needs to be enabled to have access to Watch and Lock methods.
  • Boltdb and DynamoDB shouldn't be subject to any version dependencies.

Limitations

Distributed Key/Value stores often have different concepts for managing and formatting keys and their associated values. Even though

valkeyrie
tries to abstract those stores aiming for some consistency, in some cases it can't be applied easily.

Please refer to the docs/compatibility.md file to see what are the special cases for cross-backend compatibility.

Calls like

WatchTree
may return different events (or number of events) depending on the backend (for now,
Etcd
and
Consul
will likely return more events than
Zookeeper
that you should triage properly).

Security

Only

Consul
and
etcd
have support for secure communication and you should build and provide your own
config.TLS
object to feed the client. Support is planned for
zookeeper
and
redis
.

Contributing

Want to contribute to valkeyrie? Take a look at the Contribution Guidelines.

Maintainers

Copyright and license

Apache License Version 2.0

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.