This is a Node implementation for a Distributed System based on Jepsen, along with testing for each part.
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.
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)
sudo apt-get install openjdk-17-jdk
sudo pacman -sS java | grep jre
brew install openjdk graphviz gnuplot
wget https://github.com/jepsen-io/maelstrom/releases/download/v0.2.3/maelstrom.tar.bz2
tar -xvjf maelstrom.tar.bz2
There are 6 challenges that can be tested with the Maelstrom tester.
~/maelstrom/maelstrom test -w echo --bin target/debug/echo --node-count 1 --time-limit 10
~/maelstrom/maelstrom test -w unique-ids --bin target/debug/unique-ids --time-limit 30 --rate 1000 --node-count 3 --availability total --nemesis partition
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
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
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
Go follow him now, the best rust guy
-
John Gjenset - Johnhoo