maelstrom
nosqlbench
maelstrom | nosqlbench | |
---|---|---|
14 | 4 | |
2,792 | 159 | |
2.0% | -0.6% | |
5.1 | 9.9 | |
24 days ago | 6 days ago | |
Clojure | Java | |
Eclipse Public License 1.0 | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
maelstrom
- Maelstrom: A workbench for learning distributed systems
-
The Raft Consensus Algorithm
Maelstrom [1], a workbench for learning distributed systems from the creator of Jepsen, includes a simple (model-checked) implementation of Raft and an excellent tutorial on implementing it.
Raft is a simple algorithm, but as others have noted, the original paper includes many correctness details often brushed over in toy implementations. Furthermore, the fallibility of real-world hardware (handling memory/disk corruption and grey failures), the requirements of real-world systems with tight latency SLAs, and a need for things like flexible quorum/dynamic cluster membership make implementing it for production a long and daunting task. The commit history of etcd and hashicorp/raft, likely the two most battle-tested open source implementations of raft that still surface correctness bugs on the regular tell you all you need to know.
The tigerbeetle team talks in detail about the real-world aspects of distributed systems on imperfect hardware/non-abstracted system models, and why they chose viewstamp replication, which predates Paxos but looks more like Raft.
[1]: https://github.com/jepsen-io/maelstrom/
[2]: https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/DE...
-
zio-maelstrom
I've tried to run the echo example and I'me getting some problems. I assume it works as the same example in the maelstrom's getting started ready (https://github.com/jepsen-io/maelstrom/blob/main/doc/01-getting-ready/index.md).
- Ask HN: Projects to do to get better at distributed systems
- Resources about distributed systems in go
- FLiPN-FLaNK Stack for March 6, 2023
-
Gossip Glomers: Fly.io Distributed Systems Challenges
Love it. Thanks for putting this together! The actual challenges here [0].
Though I'm curious: are these different from the chapters in the Maelstrom documentation [1]? There seems to be a bit of overlap anyway.
[0] https://fly.io/dist-sys/
[1] https://github.com/jepsen-io/maelstrom#documentation
nosqlbench
-
How a Single Line of Code Made a 24-Core Server Slower Than a Laptop
Not directly related, but https://github.com/nosqlbench/nosqlbench is very flexible benchmark tool for Cassandra and other distributed systems
-
Ten-year experience in DBMS testing
For performance testing, we also run common benchmarks: the popular YCSB (Yahoo! Cloud Serving Benchmark), NoSQLBench, LinkBench, SysBench, TPC-H, and TPC-C. We also run C Bench, our own Tarantool API benchmark. Its primitive operations are written in C, and scripts are described in Lua.
-
Requirements for running K8ssandra for development
We used NoSQLBench to perform moderate load benchmarks. It comes with a convenient Docker image that we could use straight away to run stress jobs in our k8s cluster.
-
Apache Cassandra 4.0: Taming Tail Latencies with Java 16 ZGC
Jonathan Shook created NoSQLBench to be a cross-platform performance testing tool that is easier to use than cassandra-stress and (much) more powerful than YCSB; in fact, its scripting layer is powerful enough to support things that no other testing tool can enable, with particular emphasis on modeling complex workloads with fidelity, as well as simulating realistic scenarios such as load spikes. As its name suggests, NoSQLBench is not Cassandra-specific and encourages participation from all who want to contribute; today there are clients for Cassandra, CockroachDB, JDBC, and MongoDB, as well as non-database products Kafka and Pulsar. If you’re serious about performance testing in 2021, you should check out NoSQLBench. You can get started at GitHub. Other useful links: releases, discord, docs.
What are some alternatives?
kaocha - Full featured next gen Clojure test runner
YCSB - Yahoo! Cloud Serving Benchmark
titanoboa - Titanoboa makes complex workflows easy. It is a low-code workflow orchestration platform for JVM - distributed, highly scalable and fault tolerant.
cassandra-medusa - Apache Cassandra Backup and Restore Tool
bond - spying for tests
tarantool - Get your data in RAM. Get compute close to data. Enjoy the performance.
openai-python - The official Python library for the OpenAI API
MicroRaft - Feature-complete implementation of the Raft consensus algorithm in Java
unilm - Large-scale Self-supervised Pre-training Across Tasks, Languages, and Modalities
Javet - Javet is Java + V8 (JAVa + V + EighT). It is an awesome way of embedding Node.js and V8 in Java.
talent-plan - open source training courses about distributed database and distributed systems
Galen - Layout and functional testing framework for websites