All Projects → elixir-toniq → schism

elixir-toniq / schism

Licence: MIT License
Partition testing tool for elixir

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to schism

Knowledge-Discovery-Agents
A Goal-Oriented Approach to Knowledge Discovery in Multi-Agent Systems
Stars: ✭ 38 (-34.48%)
Mutual labels:  distributed-systems
Kites
🪁 A consistency, partition tolerance completed distributed KV store, implementation of the Raft distributed consensus protocol and Kotlin.
Stars: ✭ 41 (-29.31%)
Mutual labels:  distributed-systems
kraker-info
Microservices based project to extract the information from the user data from different sources.
Stars: ✭ 17 (-70.69%)
Mutual labels:  distributed-systems
reactive-pipes
A thin library around Reactive Extensions to simplify writing evented applications in C#.
Stars: ✭ 12 (-79.31%)
Mutual labels:  distributed-systems
core
Microservice abstract class
Stars: ✭ 37 (-36.21%)
Mutual labels:  distributed-systems
campaign
Comic Relief Campaign Distribution in Drupal 8
Stars: ✭ 22 (-62.07%)
Mutual labels:  distributed-systems
open-box
Generalized and Efficient Blackbox Optimization System [SIGKDD'21].
Stars: ✭ 174 (+200%)
Mutual labels:  distributed-systems
humainary-signals-services-java
Observability Signaling for Distributed Computation
Stars: ✭ 23 (-60.34%)
Mutual labels:  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 (-5.17%)
Mutual labels:  distributed-systems
arakat
ARAKAT - Big Data Analysis and Business Intelligence Application Development Platform
Stars: ✭ 23 (-60.34%)
Mutual labels:  distributed-systems
elixir cluster
Distributed Elixir Cluster on Render with libcluster and Mix Releases
Stars: ✭ 15 (-74.14%)
Mutual labels:  distributed-systems
Saga
Saga pattern implementation in Kotlin build in top of Kotlin's Coroutines.
Stars: ✭ 24 (-58.62%)
Mutual labels:  distributed-systems
mesomatic
A simple and idiomatic Clojure facade around the Mesos JAVA API
Stars: ✭ 68 (+17.24%)
Mutual labels:  distributed-systems
XLearning-GPU
qihoo360 xlearning with GPU support; AI on Hadoop
Stars: ✭ 22 (-62.07%)
Mutual labels:  distributed-systems
ReactiveMachine
Author microservices without thinking about faults or servers. Then compile and deploy anywhere.
Stars: ✭ 43 (-25.86%)
Mutual labels:  distributed-systems
DTC
DTC is a high performance Distributed Table Cache system designed by JD.com that offering hotspot data cache for databases in order to reduce pressure of database and improve QPS.
Stars: ✭ 21 (-63.79%)
Mutual labels:  distributed-systems
CrashTuner
CrashTuner(SOSP2019)
Stars: ✭ 26 (-55.17%)
Mutual labels:  distributed-systems
Hetu
A high-performance distributed deep learning system targeting large-scale and automated distributed training.
Stars: ✭ 78 (+34.48%)
Mutual labels:  distributed-systems
Naos
A mildly opiniated modern cloud service architecture blueprint + reference implementation
Stars: ✭ 19 (-67.24%)
Mutual labels:  distributed-systems
retry-go
Retrying made simple and easy for golang 🔁
Stars: ✭ 43 (-25.86%)
Mutual labels:  distributed-systems

Schism

CircleCIDocumentation

Schism provides a simple api for testing partitions between BEAM nodes.

Documentation: https://hexdocs.pm/schism.

Installation

If available in Hex, the package can be installed by adding schism to your list of dependencies in mix.exs:

def deps do
  [
    {:schism, "~> 1.0", only: [:dev, :test]}
  ]
end

Usage

Let's say that we have 5 nodes and we want to test what happens when they disconnect from each other. We can use schism like so:

test "netsplits" do
  [n1, n2, n3, n4, n5] = nodes

  # Partition our nodes
  Schism.partition([n1, n3])
  Schism.partition([n4])
  Schism.partition([n2, n5])

  # Test some stuff...

  # Heal our partitions
  Schism.heal([n1, n3])
  Schism.heal([n2, n4, n5])
end

This api is useful for testing and development in conjunction with tools like local cluster and propcheck.

It is not recommended that you use this in production.

Things Schism doesn't do

Schism's reason for existing is to quickly and easily test netsplits between BEAMS and it uses a rudimentary trick with cookies to achieve this goal. This is great for quickly testing your system against faults.

But because of Schism's simple nature it should not be considered a replacement for a more robust suite of tests. It does not test failed TCP connections, interleaving of messages, race-conditions, clock skew, corruption, or any of the other issues you will see in a distributed system.

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].