All Projects → smallrye → smallrye-stork

smallrye / smallrye-stork

Licence: Apache-2.0 License
SmallRye Stork is a service discovery and client side-load balancing framework.

Programming Languages

java
68154 projects - #9 most used programming language
shell
77523 projects

SmallRye Stork

Maven javadoc License badge Quality Gate Status

SmallRye Stork, Stork, in short, is a Service Discovery and Client-Side Load Balancer framework.

Main features

  • Extensible service discovery mechanisms

  • Built-in support for Consul and Kubernetes

  • Customizable client load-balancing strategy

  • API and managed approaches

  • Quarkus integration, but can be used in any environment

  • Imperative and Reactive

Example

Let’s imagine you use Consul. Consul stores the list of service instances you have and lets you locate them.

Stork bridges your application and Consul and lets you retrieve the services stored in Consul and select the most appropriate one:

Stork.initialize();                                                 // (1)
Stork stork = Stork.getInstance();                                  // (2)
Service service = stork.getService("my-service");                   // (3)
ServiceInstance instance = service.selectServiceInstance()          // (4)
    .await().atMost(Duration.ofSeconds(1));
String url = "http://" + instance.getHost() + instance.getPort();   // (5)
  1. Initializes Stork - you need to do that only once.

  2. Gets the Stork instance.

  3. Gets the Service object for my-service.

  4. Retrieves the service instance for my-service. This performs a lookup in Consul and a selection using a load-balancer.

  5. Builds your URL.

That example uses the programmatic API. When integrated into the framework, all these steps can be omitted, and you only need to configure the application:

stork.my-service.service-discovery=consul            # (1)
stork.my-service.load-balancer=least-response-time   # (2)

hello/mp-rest/url=stork://my-service/hello           # (3)
  1. Configures that the my-service service uses Consul as service discovery backend

  2. Configures the load balancer for my-service

  3. Uses the stork scheme and indicates which service is targeted. When accessed, it will select the service instance using Stork.

Contributing

Check the contribution guide to get build and contribution instructions.

Sponsors

Stork is part of the SmallRye project. Red Hat sponsors the development of this project.

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