Skip to content
Nadim Benabdenbi edited this page May 22, 2018 · 2 revisions
  1. What is Ribbon Extensions?
  2. What is Ribbon Extensions For?
  3. What Problem Does Ribbon Extensions Solve?
  4. How Does Ribbon Extensions Accomplish Its Goals?

What is Ribbon Extensions?

Ribbon Extensions was designed primary to solve testing new features without any disruption on existing micro-services environments.

Ribbon Extensions is a set of load balancing rules that can be used programmatically. As it was not enough, Ribbon Extension is able to preserve the chosen load balancing strategy at downstream services. As Ribbon is used usually in conjunction with Hystrix, Zuul, Feign and Eureka, Ribbon Extensions fully supports this stack.

What is Ribbon Extensions For?

Simply, ease your life when dealing with micro-Services architecture.

What Problem Does Ribbon Extensions Solve?

When dealing with micro-Services architecture, fault-tolerance is inevitable, however we may face point-to-point connectivity with external services such as FIX that is not compatible with this architecture, therefore we have to smart route our request to the right micro-service holding the active connection. How can we achieve that? Ribbon Extensions comes with a smart answer to this problem without any programmatic effort.

When dealing with micro-Services architecture, developers struggles to test a new feature or a bug fix because they can't achieve necessary integration tests (as they are unable to run & debug the overall architecture): they fallback to excessive unit testing without any guarantee. So much effort is lost, productivity decreases and frustration evolves due to integration failure (mainly for stupid reasons). Every one of them continue to asks the same question, How can I test my micro-service using an existing environment without any disruption for other users?. Ribbon Extensions solves this recurrent problem with 0 effort.

How Does Ribbon Extensions Accomplish Its Goals?

Ribbon Extensions comes with basic load balancing predicates that can be plugged to load balancing rules with simple annotations:

  • Use @EnableRibbonFavoriteZone at @EnableRibbonClients configuration to start routing requests to the desired zone.
  • Use @EnableRibbonDynamicMatcher at @EnableRibbonClients configuration to start targeting specific services holding multiple point-to-point connections.
  • Use @EnableRibbonStrictMetadataMatcher at @EnableRibbonClients configuration to start targeting specific services holding desired set of metadata.
  • Use @EnableRibbonZoneAffinity at @EnableRibbonClients configuration to start targeting only the services in the same zone. ...

Ribbon Extensions guarantees the sharing of the execution context with a set of default strategies that deals with http requests, asynchronous execution (java, spring,hystrix), jms and stomp messaging, Feign clients, Zuul request front door and Hystrix resiliency.

  • Use @EnableContextPropagation at the SpringBootApplication.