fast-family / spring-cloud-ribbon-extensions

Ribbon Extensions - Smart Routing

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

โ—Must Haveโ— Enhance your micro-service testing, maintenance & overall development productivity.

Spring Cloud Ribbon Extensions is a set of load balancing rules that chooses which server to target. It comes with handy features for easy integration, configuration and customization.

Build Status Codecov Coverage Codacy

SonarCloud Reliability SonarCloud Security SonarCloud Squale SonarCloud Coverage SonarCloud Duplication

CoL Maven Central Javadocs

GitHub license GitHub issues GitHub network/members

Requirements

  • java 8
  • spring boot 1.5.x or newer
  • spring cloud ribbon.
  • spring cloud Daslton-SR3 or newer.

Compatibility

  • spring cloud eureka.
  • spring cloud feign.
  • spring cloud zuul.
  • spring cloud hystrix.
  • spring and java executors.
  • spring stomp.
  • jms.

Features

Routing Rules.

Zone Affinity

@EnableRibbonZoneAffinity: Enables routing to the same zone: see the tests for concrete usage and configurations.

Designed mainly for micro-services that should calls others in the same zone.

Favorite Zone ๐Ÿ’Ž

@EnableRibbonFavoriteZone: Enables routing to a favorite zone: see the tests for concrete usage and configurations.

Designed mainly for testing a micro-service among an existing micro-service architecture without disruption. This is the feature that triggered this project.

Strict Metadata Matcher

@EnableRibbonStrictMetadataMatcher: Enables routing to servers that have a set of metadata: see the tests for concrete usage and configurations.

Designed to target a specific micro-service that holds a point to point connection with an external system (like FIX,...)

Requires Eureka.

Dynamic Metadata Matcher ๐Ÿ’Ž

@EnableRibbonDynamicMetadataMatcher: Enables routing against a dynamic key: see the tests for concrete usage and configurations.

Designed to target a specific micro-services that holds multiple point to point connections with many external systems (like FIX,...)

Requires Eureka.

Context Propagation ๐Ÿ’Ž

@EnableContextPropagation: Enables sharing the execution context through all the micro-services: see the tests for concrete usage and configurations.

Designed to propagate the execution context across the micro-services architecture.

What does it support:

  • Transport: http, jms, stomp.
  • Async: java, spring, Hystrix.
  • Zuul

โš ๏ธYou should use only lower case key names (http header limitation).

Eureka:exclamation: Let's enter a world of easy development and testing with micro-service architecture.

  • Developers are able to deploy & debug their own micro-service and get back any request they have initiated disregarding the entry point and without being annoyed by the requests they have not initiated.
  • Deploying in multi region-and let our clients (that have no knowledge of eureka, ribbon, zuul) choose the zone they prefer to target.
  • And other things that I have not thought about...

Illustration

Setup

maven

<dependency>
  <groupId>com.github.enadim</groupId>
  <artifactId>spring-cloud-ribbon-extensions</artifactId>
  <version>1.4.5</version>
</dependency>

gradle

dependencies {
    compile 'com.github.enadim:spring-cloud-ribbon-extensions:1.4.5'
}

Contribution

Any help is welcome. ๐Ÿ‘Œ

About

Ribbon Extensions - Smart Routing

License:Apache License 2.0


Languages

Language:Java 100.0%