[pugMI] Affidabilita' servizi REST/HTTP

Davide Marrone davide a skebby.com
Lun 15 Set 2014 10:30:50 PDT


>  > @onebip: voi avete qualcosa del genere sulle API che date i clienti
> che possono billare un numero? Come fa il client a sapere se la sua
> richiesta e' stata processata, la connessione potrebbe saltare prima che
> ricevere il 200 o il messaggio di risposta.
>
> Torna tutto:
> - se salta prima di iniziare, il client ripete la richiesta con lo
> stesso id senza problemi

si, ok

> - se salta dopo che lo stato é cambiato, il client ripete la richiesta
> identica ma riceve 409 Conflict anziché 200 e smette di riprovare

ok, e' quello che dicevo sopra, il client deve essere a conoscenza che 
puo' riprovare e che puo' ricevere un errore di richiesta duplicata.
Quindi avete implementato un controllo di richiesta duplicata per dare 
il 409?
Se il client fa una prima richiesta e salta la connessione prima che 
riceve la risposta dal server lui deve riprovare ma deve anche passare 
un identificativo per dire che la seconda richiesta e' quella di prima 
ripetuta altrimenti il server pensera' che e' una nuova, giusto?

> - se il server crasha a metà, il server deve garantire che la richiesta
> é gestita in modo idempotente

ok, pensavo di piu' all'interruzione della connessione rispetto al crash 
del server

>
> Il problema sorge se devi chiamare un'api esterna non idempotente, qui
> sorgono considerazioni di business (meglio at least once o at most once?)
>

stavo ragionando piu' che altro sul fatto che se la connessione viene 
persa prima di ricevere una risposta il client deve riprovare ma deve 
anche essere sicuro di non generare una richiesta duplicata, come 
l'esempio dell'acquisto dei libri nell'articolo. Il client quando 
riprova deve per forza far capire al server che la richiesta non e' 
nuova ma sta riprovando e deve quindi usare un ID.

Non ho mai visto (o non ho mai fatto caso ad) un API che ti chiede di 
passare un identificativo nella richiesta per cui mi chiedevo se 
qualcuno ne avesse mai vista una che funzionasse in questo modo.

ciao
Davide


Maggiori informazioni sulla lista Milano