View on GitHub

ScaleCube Reactive Microservices

The Future is reactive - The Future is right here!

Overview

Develop pure java microservices with scalecube-services, an Un-Opinionated Library. Create distributed applications by breaking your application apart into decoupled services that can be built and scaled separately.

ScaleCube Microservices is a message-driven and asynchronous by default, built to scale due to it's the peer-to-peer nature. powered by scalecube-cluster gossip capabilities to answer the cross-cutting-concerns such as; canary testing, service discovery, location transparency, fault-tolerance and real time failure-detection. ScaleCube Microservices provides fluent java-8 functional APIs and Completable Futures benefits. The ScaleCube Microservices are lightweight and embeddable in-order to reduce restrictions regards service implementation, It only requires a simple declaration of the Service APIs as entry point to the service component. With ScaleCube Microservices its possible to provision services within same process, many process on same hardware or many process on many hardwares this gives enables ease of development and testing of a distributed system. ScaleCube Microservices features:

  • Fully Asynchronous and Reactive using RX and CompleteableFuture
  • Out-of-the-box clustering infrastructure
  • Loose coupling without the cost of JSON parsing.
  • Transparent programming model within and across microservices.
  • Library and not a framework / platforms. your code is java and not a scalecube code.
  • High resiliency, performance and scalability
  • Basic Concepts

    Microservice

    A Lightweight system component running in it's own process. Built around business capabilities and independently deployable by fully automated deployment machinery. Isolated, Distributed and have well bounded context communicates via APIs. member in a microservices cluster, discoverable and aware of faliure

    Service Discovery

    With Scalecube Microservices each Microservice self-register at the cluster and utilizes the cluster gossip-protocol to declare and register so it can transparently communicate with it's peer microservices that share the same cluster group.

    Routing

    Microservice may have more then one instance or version of an instance at the cluster the routing strategy is resposible to select the relevant microservice instance when invoking a service. it can be but not limited to: Round-Rubin, Random Selection, Session based selection ect.

    Service Proxy

    Microservices are message driven and communicate via well defined service interface APIs from the consumer side a proxy is a client to a microservices generated from the Microservice interface.

    Getting Started

    Maven Repository

    The ScaleCube Services is hosted on Maven Central. In order to use it just add dependency on the latest version in your pom.xml file:

    <dependency>
        <groupId>io.scalecube</groupId>
        <artifactId>scalecube-services<artifactId>
        <version>x.y.z<version>
    </dependency>
            
    User Guide
  • Defining Services
  • Implementing services
  • Provisioning Clustered Services
  • Consuming services
  • Implementing Router
  • Using Service Dispatchers