GithubHelp home page GithubHelp logo

shresth72 / distributed_systems_jepsen Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 28.78 MB

Distributed Systems Architecture and Testing based on Jepsen | State Machines and UDP Store | RPC Servers

Rust 75.87% Go 24.13%
payload-generation stdio-stream testing distributed-systems nodes rust state-machine udp-server rpc go

distributed_systems_jepsen's Introduction

Jepsen Based Distributed Systems Implementation

This is a Node implementation for a Distributed System based on Jepsen, along with testing for each part.

About

An implementation of challenges on the fly.io, which is built on Jepsen. Nodes for Distributed Systems are built in Rust binaries, that accepts failures and verification requests from the Maelstrom tester.

Prerequisites

Currently, the testing is entirely handeled by the Maelstrom platform written in Clojure, so install the prerequisites required for using it. (Working on building the testing platform for the same)

Install OpenJDK

Ubuntu: 20.04, 22.04

sudo apt-get install openjdk-17-jdk

Arch

sudo pacman -sS java | grep jre

Or Install with Brew along with Graphviz and Gnuplot
brew install openjdk graphviz gnuplot
Download and unpack the Maelstrom tarball file
wget https://github.com/jepsen-io/maelstrom/releases/download/v0.2.3/maelstrom.tar.bz2

tar -xvjf maelstrom.tar.bz2

๐Ÿ”ง Running the tests

There are 6 challenges that can be tested with the Maelstrom tester.

Echo Test

~/maelstrom/maelstrom test -w echo --bin target/debug/echo --node-count 1 --time-limit 10

Unique ID Generation Test

~/maelstrom/maelstrom test -w unique-ids --bin target/debug/unique-ids --time-limit 30 --rate 1000 --node-count 3 --availability total --nemesis partition

Node Broadcast Test

Increase the node count for Multi Node Broadcast testing.

~/maelstrom/maelstrom test -w broadcast --bin target/debug/broadcast --node-count 1 --time-limit 20 --rate 10

Grow Only Counter Test

The Grow Counter is available globally using either the Maelstrom Api or the Udp Server implemented in a binary file. Maelstrom Api one is available in Go, so use the implementation.

cargo run --bin gcounter_server

~/maelstrom/maelstrom test -w g-counter --bin target/debug/grow_counter --node-count 3 --rate 100 --time-limit 20 --nemesis partition

Node Logs Test

The Logger is also available with the Maelstrom Api in Go. Increase the Node count for Multi Node Log Testing.

cargo run --bin log_server

~/maelstrom/maelstrom test -w kafka --bin target/debug/logs_global --node-count 1 --concurrency 2n --time-limit 20 --rate 1000

โ›๏ธ Built Using

Acknowledgements

Go follow him now, the best rust guy

distributed_systems_jepsen's People

Contributors

shresth72 avatar

Watchers

 avatar  avatar

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.