Spring Cloud

-

Désendettement

Spring cloud - Désendettement

Rappel

The old big picture

Spring cloud - Désendettement

Cible

The big picture

Tous les flux possibles ne sont pas représentés pour maintenir la lisibilité

Spring cloud - Désendettement

Roadmap Spring :

Spring Cloud 3.0.0 prévu pour le dernier trimestre 2020 avec retrait au plus tard dans la version 3.1.0 d'éléments initialement reversés par Netflix OSS et désormais en mode maintenance :

 

-

 

-

 

 

-

 

Spring cloud - Désendettement

Recommandations (Spring) :

current replacement
Hystrix resilience4j
Hystrix dashboard micrometer + monitoring system
Ribbon Spring Cloud Loadbalancer
Zuul Spring Cloud Gateway

Spring cloud - Désendettement

Passage de Ribbon à Spring Cloud LoadBalancer

Il faut exclure les dépendances Ribbon directes ou transitives, notamment lorsqu'elles sont ramenées par les dépendances Eureka.

 

A noter que la dépendance

 

spring-cloud-starter-loadbalancer

 

est incluse dans les starters Eureka, il n'est donc pas nécessaire de la déclarer explicitement (cf. le starter eureka server par exemple).

Spring cloud - Désendettement

Passage de Ribbon à Spring Cloud LoadBalancer

Exemple pour le serveur Eureka :

<dependency>

    <groupId>org.springframework.cloud</groupId>

    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>

    <exclusions>

        <exclusion>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>

        </exclusion>

        <exclusion>

            <groupId>com.netflix.ribbon</groupId>

            <artifactId>ribbon-eureka</artifactId>

        </exclusion>

        <exclusion>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-netflix-ribbon</artifactId>

        </exclusion>

        <exclusion>

            <groupId>org.springframework.cloud</groupId>

            <artifactId>spring-cloud-netflix-hystrix</artifactId>

        </exclusion>

    </exclusions>

</dependency>

Spring cloud - Désendettement

Passage de Ribbon à Spring Cloud LoadBalancer

Spring Cloud LoadBalancer dispense d'utiliser un loadbalancer côté client.

 

Les interrogations peuvent être effectuées à partir de :

- Spring RestTemplate,

- Spring WebClient, et

- Spring WebFlux WebClient. 

Spring cloud - Désendettement

Passage de Zuul à Spring Cloud Gateway

Suppression de la dépendance :

 

spring-cloud-starter-netflix-zuul

 

Suppression dans la classe de boostrap de l'application de l'annotation :

 

@EnableZuulProxy

 

 

Spring cloud - Désendettement

Passage de Zuul à Spring Cloud Gateway

Modification du routage :

 

Version Zuul (rappel) :

zuul:
  ignoredServices: '*'
  routes:
    countries: 
      path: /api/v1/countries/**
      serviceId: MS-Countries
      strip-prefix: false

 

Par le format Spring Cloud Gateway de manière manuelle ou par l'utilisation d'Eureka avec l'annotation @EnableDiscoveryClient

Spring cloud - Désendettement

Passage de Zuul à Spring Cloud Gateway

Exemple :

 

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          lower-case-service-id: true

 

Nécessite l'utilisation de Eureka (Client) !

Spring cloud - Désendettement

Passage de Zuul à Spring Cloud Gateway

Exemple (suite) de route auto-découverte :

    {
        "predicate": "Paths: [/geolocation/**], match trailing slash: true",
        "metadata": {
            "management.port": "10501"
        },
        "route_id": "ReactiveCompositeDiscoveryClient_GEOLOCATION",
        "filters": [
            "[[RewritePath /geolocation/(?<remaining>.*) = '/${remaining}'], order = 1]"
        ],
        "uri": "lb://GEOLOCATION",
        "order": 0
    }

Spring Cloud - Désendettement

By Didier Vanderstoken

Spring Cloud - Désendettement

  • 318