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
}