Giter Site home page Giter Site logo

chord.lib's People

Contributors

bonifatius94 avatar dependabot[bot] avatar

Stargazers

 avatar

Watchers

 avatar

chord.lib's Issues

Add Exception Handling (Timeouts, ...)

Issue:

  • the current implementation has no try/catch blocks -> crash on timeout, etc.
  • concurrent operations open a whole new field of error cases to be dealt with

Suggested Solution:

  • figure out common error cases and handle them properly (e.g. surround each request with try/catch) -> harden the service
  • think of all kinds of concurrency issues like raise conditions, etc. and address them properly
  • apply common sense networking techniques like exponential backoff to reduce latency and maximize throughput
  • add unit tests / component tests simulating each of those error cases (or at least the most important ones)

Fix Initialization Process

Issue

  • nodes seem to challenge each other during network simulation tests
  • possible reason: there's no jitter, exponential backoff mechanism, etc.

Solution

  • try adding jitter and exponential backoff to decouple concurrent initialization procedures
  • extend the tests to figure out what the cause of the issue is

Add Unit / Component / System Tests

Tasks:

  • unit tests: back up all critical Chord.Lib API functionality
  • component tests: make sure all Chord node endpoints work properly
  • system tests: launch a little docker-compose deployment simulating real network communication between Chord nodes

Design Chord Network Protocol

Tasks:

  • define message datagrams for:
    • key lookup
    • node join (initiate / finalize phases)
    • node leave (initiate / finalize phases)
    • node health-check
  • define node health statuses as:
    • starting
    • idle
    • stopping
    • questionable
    • dead
  • make sure that the 4 elementary operations suffice

Add GitHub CI/CD Workflows

Tasks:

  • CI:
    • add a Chord.Lib build pipeline
    • run all Chord.Lib unit tests
    • deploy the Chord.Lib to a dockerized Chord node image
    • run all component and system tests
  • CD:
    • release the Chord.Lib as DLL
    • release the Chord.Lib as Docker image (optional)

Implement Chord Core API

Tasks:

  • create a node class exposing all Chord functionality
    • node join
    • node leave
    • node health-check
    • key lookup
    • update successor
  • implement the message exchange using callback functions such that the actual networking layer is abstracted from the logical Chord functionality layer

Implement Chord Network Endpoint

Tasks:

  • create an ASP.NET controller serving requests:
    • process requests from other nodes by handing them over to the logical Chord API
    • send messages to other Chord endpoints
    • think of using the same message format for all requests
  • handle Chord network initialization:
    • provide a reasonable bootstrapping function to enter the network (e.g. node with smallest IP address, having a dockerized VLAN in mind)
    • make the Chord node itself run the Chord join procedure on node startup

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.