Programmation réactive avec Spring 5

15/03/2018

query

GET

scalabilité

verticale

scalabilité

horizontale

Existe-t-il d'autre moyens de scaler ?

on a remarqué qu'on perd des ressources lors des i/o

i/o c'est où ?

  • lorsqu'on lit/écrit la req/res HTTP
  • lorsqu'on execute/recoit la req/res BDD
  • Au sein de la BDD, lorsqu'on lit les fichiers de données

Programmation seq

aggrégateur de résultats de recherche: 

1. exécute les recherches auprès des systèmes externes les uns à la suite des autres

2. puis aggrège les résultats

 

coller diagramme sequence

Programmation parallèle

aggrégateur de résultats de recherche: 

1. exécute les recherches auprès des systèmes externes en parallèle

2. puis aggrège les résultats

 

coller diagramme de séquence

Programmation asynchrone

document.getElementById("button").addEventListener("click", function(){
    fetch('https://github.com/api/repositories')
        .then(function(response) {
            // use response
            document.getElementById("demo").innerHTML = response.data;
        })
});

exemples vertx et node

  • le principe de vertx et node c'est que c'est de la prog non bloquante

ajouter diagramme de séquence ou illustratif

en java il existe quoi ?

  • api nio
  • netty
  • servlet 3.0 async

3 frameworks

exemple reactor

  • exemple de recherche gh gl dumb en spring reactor CLI

operateurs reactifs

map, flatmap, ...

Contretement ?

exemple appels successifs de xxx requests

exemple webflux

  • webflux en mode @Controller

on request plusieurs api
on retourne direct les premiers results meme si la seconde api met du temps

 

merge

la version "router"

  • même chose avec router

Attention à être reactif de bout en bout

  • exemple si on l'est pas : RestTemplate + Flux.just(...)

back pressure

  • Bullet One
  • Bullet Two
  • Bullet Three
Made with Slides.com