All Projects → scalecube → Scalecube Cluster

scalecube / Scalecube Cluster

Licence: apache-2.0
ScaleCube Cluster is a lightweight Java VM implementation of SWIM: Scalable Weakly-consistent Infection-style Process Group Membership Protocol. features cluster membership, failure detection, and gossip protocol library.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to Scalecube Cluster

Platon Go
Golang implementation of the PlatON protocol
Stars: ✭ 331 (+178.15%)
Mutual labels:  distributed-systems, distributed-computing
Reactivemanifesto
The Reactive Manifesto
Stars: ✭ 542 (+355.46%)
Mutual labels:  reactive-programming, distributed-systems
Diplomat
A HTTP Ruby API for Consul
Stars: ✭ 358 (+200.84%)
Mutual labels:  distributed-systems, distributed-computing
Gleam
Fast, efficient, and scalable distributed map/reduce system, DAG execution, in memory or on disk, written in pure Go, runs standalone or distributedly.
Stars: ✭ 2,949 (+2378.15%)
Mutual labels:  distributed-systems, distributed-computing
Protoactor Dotnet
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
Stars: ✭ 1,070 (+799.16%)
Mutual labels:  distributed-systems, distributed-computing
Awesome Distributed Deep Learning
A curated list of awesome Distributed Deep Learning resources.
Stars: ✭ 277 (+132.77%)
Mutual labels:  distributed-systems, distributed-computing
Awesome Distributed Systems
Awesome list of distributed systems resources
Stars: ✭ 512 (+330.25%)
Mutual labels:  distributed-systems, distributed-computing
reacted
Actor based reactive java framework for microservices in local and distributed environment
Stars: ✭ 17 (-85.71%)
Mutual labels:  distributed-systems, reactive-programming
Construct
JavaScript Digital Organisms simulator
Stars: ✭ 17 (-85.71%)
Mutual labels:  distributed-systems, distributed-computing
Distributed Consensus Reading List
A long list of academic papers on the topic of distributed consensus
Stars: ✭ 803 (+574.79%)
Mutual labels:  distributed-systems, distributed-computing
reactive-pipes
A thin library around Reactive Extensions to simplify writing evented applications in C#.
Stars: ✭ 12 (-89.92%)
Mutual labels:  distributed-systems, reactive-programming
Distributedsystems
My Distributed Systems references
Stars: ✭ 67 (-43.7%)
Mutual labels:  distributed-systems, distributed-computing
realtimemap-dotnet
A showcase for Proto.Actor - an ultra-fast distributed actors solution for Go, C#, and Java/Kotlin.
Stars: ✭ 47 (-60.5%)
Mutual labels:  distributed-systems, distributed-computing
Sleuth
A Go library for master-less peer-to-peer autodiscovery and RPC between HTTP services
Stars: ✭ 331 (+178.15%)
Mutual labels:  distributed-systems, distributed-computing
Distributed-System-Algorithms-Implementation
Algorithms for implementation of Clock Synchronization, Consistency, Mutual Exclusion, Leader Election
Stars: ✭ 39 (-67.23%)
Mutual labels:  distributed-systems, distributed-computing
Hazelcast
Open-source distributed computation and storage platform
Stars: ✭ 4,662 (+3817.65%)
Mutual labels:  distributed-systems, distributed-computing
protoactor-go
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
Stars: ✭ 4,138 (+3377.31%)
Mutual labels:  distributed-systems, distributed-computing
IoTPy
Python for streams
Stars: ✭ 24 (-79.83%)
Mutual labels:  distributed-systems, distributed-computing
Lizardfs
LizardFS is an Open Source Distributed File System licensed under GPLv3.
Stars: ✭ 793 (+566.39%)
Mutual labels:  distributed-systems, distributed-computing
Distributedsystem Series
📚 深入浅出分布式基础架构,Linux 与操作系统篇 | 分布式系统篇 | 分布式计算篇 | 数据库篇 | 网络篇 | 虚拟化与编排篇 | 大数据与云计算篇
Stars: ✭ 1,092 (+817.65%)
Mutual labels:  distributed-systems, distributed-computing

ScaleCube - Cluster

ScaleCube Cluster is a lightweight decentralized cluster membership, failure detection, and gossip protocol library. It provides an implementation of SWIM cluster membership protocol for Java VM.

It is an efficient and scalable weakly-consistent distributed group membership protocol based on gossip-style communication between the nodes in the cluster. Read blog post with distilled notes on the SWIM paper for more details.

It is using a random-probing failure detection algorithm which provides a uniform expected network load at all members. The worst-case network load is linear O(n) for overall network produced by running algorithm on all nodes and constant network load at one particular member independent from the size of the cluster.

ScaleCube Cluster implements all improvements described at original SWIM algorithm paper, such as gossip-style dissemination, suspicion mechanism and time-bounded strong completeness of failure detector algorithm. In addition to that we have introduced support of additional SYNC mechanism in order to improve recovery of the cluster from network partitioning events.

Using ScaleCube Cluster as simple as few lines of code:

// Start cluster node Alice as a seed node of the cluster, listen and print all incoming messages
Cluster alice = Cluster.joinAwait();
alice.listen().subscribe(msg -> System.out.println("Alice received: " + msg.data()));

// Join cluster node Bob to cluster with Alice, listen and print all incoming messages
Cluster bob = Cluster.joinAwait(alice.address());
bob.listen().subscribe(msg -> System.out.println("Bob received: " + msg.data()));

// Join cluster node Carol to cluster with Alice (and Bob which is resolved via Alice)
Cluster carol = Cluster.joinAwait(alice.address());

// Send from Carol greeting message to all other cluster members (which is Alice and Bob)
carol.otherMembers().forEach(member -> carol.send(member, Message.fromData("Greetings from Carol")));

You are welcome to explore javadoc documentation on cluster API and examples module for more advanced use cases.

Support

For improvement requests, bugs and discussions please use the GitHub Issues or chat with us to get support on Gitter.

You are more then welcome to join us or just show your support by granting us a small star :)

Maven

Binaries and dependency information for Maven can be found at http://search.maven.org.

To add a dependency on ScaleCube Cluster using Maven, use the following:

<dependency>
  <groupId>io.scalecube</groupId>
  <artifactId>scalecube-cluster</artifactId>
  <version>x.y.z</version>
</dependency>

To add a dependency on ScaleCube Transport using Maven, use the following:

<dependency>
  <groupId>io.scalecube</groupId>
  <artifactId>scalecube-transport</artifactId>
  <version>x.y.z</version>
</dependency>

Contributing

  • Follow/Star us on github.
  • Fork (and then git clone https://github.com/--your-username-here--/scalecube.git).
  • Create a branch (git checkout -b branch_name).
  • Commit your changes (git commit -am "Description of contribution").
  • Push the branch (git push origin branch_name).
  • Open a Pull Request.
  • Thank you for your contribution! Wait for a response...

References

License

Apache License, Version 2.0

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