[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