Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
[not actively maintained] Vines implements the gossip protocol as well as quorum-based voting machinery to facilitate cooperative decision making in distributed systems.
JavaScript
Tree: b3ce53c29f

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
common
extras/wss
test
.gitignore
README.md
Vine.js
package.json

README.md

A distributed system has many discrete processes that run on a multitude of arbitrary devices and networks yet to the user it appears to be a single, coherent program. Distributed systems can provide availability and fault tolerance.

Distribution requires data replication but fault-tolerance and exact consistency are simply not incompatable.

Eventual consistency allows peers who wish to replicate an opportunity to update regardless of the state of synchronization.

This implementation is limited to the distribution of peer information and data structures in order to support heterogeneous infrastructure.

What is the Gossip Protocol

The gossip protocol helps to manage inconsistencies due to partition loss and process failure in a distributed system.

Charactarizations

  • Periodic, binary interactions
  • Low frequency of interactions
  • Randomization of interactions
  • Agents adapt state on interaction
  • Size-Bound data exchanges
  • Reliability is UDP-ish

Assumptions

  • Each peer has membership. In this protocol, the knowledge of membership is distributed to each member at a regular interval.

Considerations

Convergence Rate

Convergence rate is the randomization algorithm combind with the frequency at which it is applied. Gossip protocols can be adapted to tolerate process crashes by adjusting the convergence rate.

What is the Quorum Consensus Protocol

TODO

Charactarizations

TODO

Assumptions

TODO

Considerations

TODO

Research Papers

TODO

How robust are gossip-based communication protocols?

An Efficient Implementation of the Quorum Consensus Protocol

Distributed systems principles and paradigms 2nd edition

Architectural Design

TODO

Usage

TODO

A computer at 192.168.0.2

  var vine = Vine()

  vine
    .listen(8000)
    .set('foo', 'hello, world')

A computer at 192.168.0.3

  var vine = Vine()

  vine
    .listen(8000)
    .join(8000, '192.168.0.2')
    .on('data', 'foo')
Something went wrong with that request. Please try again.