Giter Club home page Giter Club logo

rumour's Introduction

rumour

Project status: experimental.

Implemented:

  • Node failure detection
  • Peer exchange
  • Commandline that prints out node join and failure events

goal

The primary goal is for me to learn a bit of Rust, and familiarize myself with Tokio, futures, and the other important parts of Rust's networking story.

An implementation of the SWIM Protocol in safe, asyncronous rust.

The implementation is based on HashiCorp's Serf.

Constraints:

  • should be easily embeddable as a library in C applications
  • should not require additional runtime - does not start threads or require a garbage collector
  • should use 100% safe Rust code
  • events issued through callbacks to application code

Stretch goals:

  • custom event propogation beyond cluster membership
  • bring-your-own async event loop, so that the library doesn't need to take ownership of a thread
  • Serf-style commnandline application to allow users to interact with the cluster without using the library

development instructions

Run

cargo run -- --port 2073 --peeraddress 127.0.0.1:2074 &
cargo run -- --port 2074 --peeraddress 127.0.0.1:2073 &

Runs two instances of the commandline utility that will form a cluster. Each node will print messages when the other node joins or leaves the cluster.

Code structure

  • src/node/mod.rs contains code for initializing and running a rumour server It knows about creating a Tokio reactor and wiring together components.
  • src/node/mill.rs contains the core logic. Tests in here stub out the Tokio reactor, but should otherwise be a good high-level description of rumour's behaviour.

Tests in other modules are at unit-level, rather than module-level.

rumour's People

Contributors

jelford avatar

Stargazers

Daniel Hix avatar Luis Eduardo Gutiérrez avatar Tommy van der Vorst avatar Arto Bendiken avatar Jerome Gravel-Niquet avatar Omer Katz avatar

Watchers

 avatar James Cloos avatar  avatar

Forkers

triphop

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.