Giter Club home page Giter Club logo

cpp_raft_impl's Introduction

Hi there πŸ‘‹

Lang stats

cpp_raft_impl's People

Contributors

pagwin-fedora avatar

Watchers

 avatar

cpp_raft_impl's Issues

Stabilize API for IO

Figure out the shape of the public API of the raft algorithm implementation so it can be implemented confidently alongside the IO

Leader: Demote to follower

If a leader gets a message from a leader or candidate with a higher term number it needs to demote to follower

Pick and implement underlying state machine

In all likelihood this'll just be a vector which is appended to which maps relatively easily to what Raft is supposed to do, specifics could allow for removal and adding of elements to it but at minimum just having a growing list will be sufficient

Candidate: Check majority

When a candidate is seeking majority there are situations involving it's current log state where it shouldn't continue as a candidate. Namely it may not have committed log entries in it's log in which case it should not consider itself as having achieved majority

Leader: Log replication and committal

In raft the leader is considered the source of all changes, and the source of truth is the list of committed logs which the leader decides on when it's communicated the logs entry to at least half of instances

Follower: Delete logs as needed

Sometimes logs will be stale due to the election of a new leader who will send message(s) indicating as much #5 in these circumstances logs need to be deleted

Leader: Manage follower logs

When a leader is given a new log entry it needs to send it to followers and delete logs that shouldn't be present

Network IO

The intended design of this project is to have all functionality of Raft be pure taking arguments as input and returning values as outputs without doing any network IO within the logic this is to allow that functionality to be handled elsewhere allowing for easier testing and swapping between different models of concurrency and IO as desired

Candidate: Request votes

When a node is a candidate it should go to all other known nodes and request votes trying to achieve majority

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.