coolbeans

command module
v0.1.6 Latest Latest
Warning

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

Go to latest
Published: May 25, 2020 License: AGPL-3.0-only Imports: 6 Imported by: 0

README

ci-build ci-release

Coolbeans

Coolbeans is a distributed replicated work queue service that implements the beanstalkd protocol.

Unlike a message queue, beanstalkd is a work queue that provides primitive operations to work with jobs.

Coolbeans primarily differs from beanstalkd in that it allows the work queue to be replicated across multiple machines. It uses the RAFT consensus algorithm to replicate the job state consistently across machines.

Motivation

Beanstalkd is a feature-rich and easy to use queue. Beanstalkd, however has a few drawbacks that include: (i) A lack of replication or high availability in terms of machine failures. (ii) There is no native sharding, (iii) No native support for encryption & authentication between the service & the client.

Given the initial setup of beanstalkd is simple, having a HA or sharded production setup is non-trivial. Our premise with Coolbeans is to provide a replicated beanstalkd queue followed by addressing the other issues incrementally. Read about our design approach here.

Key features

  • A fully replicated work queue built using Hashicorp's Raft library.
  • Strong consistency of all queue operations.
  • Compatible with existing beanstalkd clients.
  • Easy installation, available as a static binary or as a Linux docker image.
  • Monitor metrics using Prometheus and visualize them via Grafana.

Releases

  • Static binary can be downloaded from the release pages
  • Docker image can be pulled from here

Getting Started

Refer the Getting started guide

If you prefer to try to run coolbeans on Kubernetes, refer here.

How to contribute

Coolbeans is currently at alpha release quality. It is all about improving the quality of this by testing, testing & more testing.

Here are a few ways you can contribute:


icon by Llisole from the Noun Project

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
v1
beanstalkd
cmd
cluster
cmd
server/serverfakes
Code generated by counterfeiter.
Code generated by counterfeiter.
* Package state provides an interface for a beanstalkd job, state for * job, tube and a connected client.
* Package state provides an interface for a beanstalkd job, state for * job, tube and a connected client.
* Package store provides an implementation for a accessing a Raft * backed job state machine store
* Package store provides an implementation for a accessing a Raft * backed job state machine store

Jump to

Keyboard shortcuts

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