Giter Site home page Giter Site logo

veloting / valkeyrie Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kvtools/valkeyrie

0.0 0.0 0.0 517 KB

Distributed Key/Value Store Abstraction Library written in Go.

Home Page: https://pkg.go.dev/github.com/kvtools/valkeyrie

License: Apache License 2.0

Go 99.59% Makefile 0.41%

valkeyrie's Introduction

Valkeyrie

GoDoc Build 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.

The Maintainers.

Copyright and License

Apache License Version 2.0

valkeyrie's People

Contributors

abronan avatar aluzzardi avatar ldez avatar vieux avatar chenchun avatar mthenw avatar mavenugo avatar tommoulard avatar kevinpollet avatar thajeztah avatar gaboose avatar veloting avatar nmengin avatar mrjana avatar ahmetb avatar aboch avatar convergentio avatar dudesons avatar tengattack avatar steakyan avatar wrotki avatar panli889 avatar kevinlynx avatar hsinhoyeh avatar allencloud avatar william-leez avatar vikstrous avatar kimtaehee avatar stweil avatar springi99 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.