parrot

module
v0.0.0-...-0828f7b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 2, 2020 License: MIT

README

Parrot

Distributed key-value store based on Dynamo using Golang

Building

Build using Bazel. This builds all source files, mocks, tests and generates Protocol Buffers/gRPC files:

  $ bazelisk build --stamp --workspace_status_command=./version/version.sh ...
  (or bazelisk build //pkg/raft:go_default_library)

Note bazelisk is used to ensure the correct version of Bazel is always used, installed from Bazelisk.

--workspace_status_command is required for the GIT commit to be included.

Use Gazelle to generate all Bazel build files: Generate BUILD.bazel files when a dependency is added or file layout modified using Gazelle:

  $ bazelisk run //:gazelle

Run unit tests:

  $ bazelisk test ...

Components

  • Done - Requires optimization and extension Storage engine with gRPC transport layer
  • In Progress Replication to preference list (hard code the preference list for now) ** Forward to each replica (which is hard coded), no repair or conflict resolution yet (just use LWW)
  • TODO Cluster Membership and Failure Detection
  • TODO Partitioning
  • TODO Syncronization using Merkle Trees / Anti-Entropy / Repair
  • TODO Hinted Handoff
  • TODO Versioning & Conflict Resolution

Replication

On PUT and DELETE requests to a node (is a background routine), it will forward this request to all other nodes (without waiting for a response - can later add quorum support). This will not retry etc but leaves it up to anti-entropy to repair any differences between nodes. Note this doesnt yet have any partitioning so each node handles any request.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL