Skip to content

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

Notifications You must be signed in to change notification settings

Shresth72/distributed_systems_jepsen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published