• Stars
    star
    243
  • Rank 161,217 (Top 4 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 6 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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.

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

More Repositories

1

scalecube-services

Microservices library - 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
Java
597
star
2

socketio

Socket.IO Java Server based on Netty. was created to meet gaming performance requirements. battle tested and in use by Playtech Microservices API Gateway.
Java
184
star
3

scalecube-js

Toolkit for working in microservices/micro-frontends architecture.
TypeScript
67
star
4

gatling-tcp-extensions

Tcp extensions for gatling
Scala
23
star
5

scalecube-gateway

ScaleCube API Gateway is the single entry point for service consumers. handles incoming requests and proxy/route to the appropriate microservice instance.
Java
19
star
6

scalecube-config

ScaleCube Config is a configuration access management library for JVM based distributed applications
Java
16
star
7

aeron-cluster-poc

aeron cluster playground with simple distributed counter example
Java
11
star
8

robokit

JavaScript
10
star
9

socketio-examples

JavaScript
9
star
10

scalecube-security

Authentication and Authorization library for scalecube services.
Java
7
star
11

scalecube-spring-boot-starter

Java
5
star
12

getting-started

hello world examples of using scalecube to get started building high-speed reactive microservices
Java
4
star
13

scalecube-organization-service

Organizations are shared accounts where groups of people can access many applications at once. Owners and administrators can manage member access to the organization's applications with sophisticated security and administrative features.
JavaScript
4
star
14

scalecube-commons

ScaleCube fundamental data models
Java
3
star
15

scalecube-benchmarks

Benchmarks framework
Java
3
star
16

scalecube-test-utils

a test utilities package for maven based projects
Java
3
star
17

scalecube-third-party-benchmarks

Java
2
star
18

trace-reporter

Creates beautiful charts
Java
2
star
19

m2m-vault-poc

POC for M2M authorization driven by Vault Identities Secrets Engine.
Shell
2
star
20

scalecube-travis-ci

this repository contains the scripts for making the
Shell
2
star
21

scalecube-seed

Shell
1
star
22

aeron-examples

aeron-examples
Java
1
star
23

spintest

1
star
24

docs

1
star
25

scalecube-package-utils

ASCII art logo builder
Java
1
star
26

robokit-ui

JavaScript
1
star