All Projects → stateright → Stateright

stateright / Stateright

Licence: mit
A model checker for implementing distributed systems.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Stateright

Swim
Distributed software platform for building stateful, massively real-time streaming applications.
Stars: ✭ 368 (+72.77%)
Mutual labels:  actor-model, distributed-systems
Thespian
Python Actor concurrency library
Stars: ✭ 220 (+3.29%)
Mutual labels:  actor-model, distributed-systems
Scalecube Services
ScaleCube Services is a high throughput, low latency reactive microservices library built to scale. it features: API-Gateways, service-discovery, service-load-balancing, the architecture supports plug-and-play service communication modules and features. built to provide performance and low-latency real-time stream-processing. its open and designed to accommodate changes. (no sidecar in a form of broker or any kind)
Stars: ✭ 482 (+126.29%)
Mutual labels:  actor-model, distributed-systems
reacted
Actor based reactive java framework for microservices in local and distributed environment
Stars: ✭ 17 (-92.02%)
Mutual labels:  distributed-systems, actor-model
Gosiris
An actor framework for Go
Stars: ✭ 222 (+4.23%)
Mutual labels:  actor-model, distributed-systems
road-to-orleans
This repository illustrates the road to orleans with practical, real-life examples. From most basic, to more advanced techniques.
Stars: ✭ 55 (-74.18%)
Mutual labels:  distributed-systems, actor-model
Nact
nact ⇒ node.js + actors ⇒ your services have never been so µ
Stars: ✭ 848 (+298.12%)
Mutual labels:  actor-model, distributed-systems
protoactor-go
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
Stars: ✭ 4,138 (+1842.72%)
Mutual labels:  distributed-systems, actor-model
Orbit
Orbit - Virtual actor framework for building distributed systems
Stars: ✭ 1,585 (+644.13%)
Mutual labels:  actor-model, distributed-systems
Tractor
structured concurrent, Python parallelism
Stars: ✭ 88 (-58.69%)
Mutual labels:  actor-model, distributed-systems
transit
Massively real-time city transit streaming application
Stars: ✭ 20 (-90.61%)
Mutual labels:  distributed-systems, actor-model
Dasync
Every developer deserves the right of creating microservices without using any framework 🤍
Stars: ✭ 154 (-27.7%)
Mutual labels:  actor-model, distributed-systems
traffic
Massively real-time traffic streaming application
Stars: ✭ 25 (-88.26%)
Mutual labels:  distributed-systems, actor-model
Cloudi
A Cloud at the lowest level!
Stars: ✭ 352 (+65.26%)
Mutual labels:  actor-model, distributed-systems
gen browser
Transparent bi-directional communication for clients, servers and more
Stars: ✭ 67 (-68.54%)
Mutual labels:  distributed-systems, actor-model
Minecase
Minecraft server based on Orleans
Stars: ✭ 581 (+172.77%)
Mutual labels:  actor-model, distributed-systems
ripple
Simple shared surface streaming application
Stars: ✭ 17 (-92.02%)
Mutual labels:  distributed-systems, actor-model
nact
nact ⇒ node.js + actors ⇒ your services have never been so µ
Stars: ✭ 1,003 (+370.89%)
Mutual labels:  distributed-systems, actor-model
Orleans
Orleans is a cross-platform framework for building distributed applications with .NET
Stars: ✭ 8,131 (+3717.37%)
Mutual labels:  actor-model, distributed-systems
Orleans.clustering.kubernetes
Orleans Membership provider for Kubernetes
Stars: ✭ 140 (-34.27%)
Mutual labels:  actor-model, distributed-systems

chat crates.io docs.rs LICENSE

Correctly implementing distributed algorithms such as the Paxos and Raft consensus protocols is notoriously difficult due inherent nondetermism such as message reordering by network devices. Stateright is a Rust actor library that aims to solve this problem by providing an embedded model checker, a UI for exploring system behavior (demo), and a lightweight actor runtime. It also features a linearizability tester that can be run within the model checker for more exhaustive test coverage than similar solutions such as Jepsen.

Stateright Explorer screenshot

Getting Started

  1. Please see the book, "Building Distributed Systems With Stateright."
  2. A video introduction is also available.
  3. Stateright also has detailed API docs.
  4. Consider also joining the Stateright Discord server for Q&A or other feedback.

Examples

Stateright includes a variety of examples, such as a Single Decree Paxos cluster and an abstract two phase commit model.

Passing a check CLI argument causes each example to validate itself using Stateright's model checker:

# Two phase commit with 3 resource managers.
cargo run --release --example 2pc check 3
# Paxos cluster with 3 clients.
cargo run --release --example paxos check 3
# Single-copy (unreplicated) register with 3 clients.
cargo run --release --example single-copy-register check 3
# Linearizable distributed register (ABD algorithm) with 3 clients.
cargo run --release --example linearizable-register check 3

Passing an explore CLI argument causes each example to spin up the Stateright Explorer web UI locally on port 3000, allowing you to browse system behaviors:

cargo run --release --example 2pc explore
cargo run --release --example paxos explore
cargo run --release --example single-copy-register explore
cargo run --release --example linearizable-register explore

Passing a spawn CLI argument to the examples leveraging the actor functionality will cause each to spawn actors using the included runtime, transmitting JSON messages over UDP:

cargo run --release --example paxos spawn
cargo run --release --example single-copy-register spawn
cargo run --release --example linearizable-register spawn

Features

Stateright contains a general purpose model checker offering:

  • Invariant checks via "always" properties.
  • Nontriviality checks via "sometimes" properties.
  • Liveness checks via "eventually" properties.
  • A web browser UI for interactively exploring state space.
  • Linearizability and sequential consistency testers.

Stateright's actor system features include:

  • An actor runtime that can execute actors outside the model checker in the "real world."
  • A model for lossy/lossless duplicating/non-duplicating networks with the ability to capture actor message history to check an actor system against an expected consistency model.
  • An optional network adapter that provides a lossless non-duplicating ordered virtual channel for messages between a pair of actors.

In contrast with other actor libraries, Stateright enables you to formally verify the correctness of your implementation, and in contrast with model checkers such as TLC for TLA+, systems implemented using Stateright can also be run on a real network without being reimplemented in a different language.

Contribution

Contributions are welcome! Please fork the library, push changes to your fork, and send a pull request. All contributions are shared under an MIT license unless explicitly stated otherwise in the pull request.

License

Stateright is copyright 2018 Jonathan Nadal and other contributors. It is made available under the MIT License.

To avoid the need for a Javascript package manager, the Stateright repository includes code for the following Javascript dependency used by Stateright Explorer:

  • KnockoutJS is copyright 2010 Steven Sanderson, the Knockout.js team, and other contributors. It is made available under the MIT License.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].