Is it possible to have more than 1 master available for writes in a raft system?

This page summarizes the projects mentioned and recommended in the original post on /r/golang

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • dragonboat

    A feature complete and high performance multi-group Raft library in Go.

  • This is the best open source implementation I've seen that does what you're asking about: https://github.com/lni/dragonboat

  • memberlist

    Golang package for gossip based membership and failure detection

  • I use lightweight https://github.com/hashicorp/memberlist to build initial cluster skeleton (find out what are nodes constituting it)

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • hashring

    Consistent hashing "hashring" implementation in golang (using the same algorithm as libketama) (by serialx)

  • What is commited to config group log is then base to spin out multi-group raft; I'm using consistent hashing currently because of API: https://github.com/serialx/hashring but soon I plan to migrate to rendezvous hashing either by finding out similar library or by rewriting API hashring to rendezvous (algorithm is quite trivial so it isn't big deal)

  • dragonboat-example

    Examples for Dragonboat

  • Yes, "joint consensus" took me a while to comprehend. If you check dragonboat examples there is one ( https://github.com/lni/dragonboat-example/tree/master/ondisk ) which shows how to perform migrations between nodes simply by copying snapshots. There are few open questions (eg. how does it scale up? does it always need to copy everything to target node first or could it be reimplemented with option for streaming?) but it looks quite promising.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Pebble - as a key/value db

    2 projects | /r/golang | 11 Dec 2022
  • Show HN: Achieving Consensus with Go – A Raft Implementation

    1 project | news.ycombinator.com | 22 Feb 2024
  • A distributed systems reading list

    1 project | news.ycombinator.com | 8 Feb 2024
  • Show HN: Acheiving Consensus with Go – A Raft Implementation

    1 project | news.ycombinator.com | 7 Feb 2024
  • Instant Messaging: Protocols Are "Commons", Let's Take Them Seriously

    1 project | news.ycombinator.com | 31 Dec 2023