I protocolli senza stato sono considerati migliori da utilizzare rispetto ai protocolli con stato?

StackOverflow https://stackoverflow.com/questions/626914

  •  06-07-2019
  •  | 
  •  

Domanda

Riesco a vedere che i protocolli con stato portano a un "stato emulato" meno complicato come i cookie.

ma i test diventano molto più difficili per garantire che l'implementazione sia corretta e si ricolleghi e che le continuazioni delle sessioni possano essere molto difficili da gestire.

È considerata una buona pratica usare sempre protocolli stateless o è davvero specifico per il dominio?

Penso che l'autenticazione diventa più semplice quando si ha a che fare con protocolli con stato, ma ci sono altri motivi per cui si dovrebbe usare un protocollo con stato?

È stato utile?

Soluzione

Quanto è importante lo stato per la tua applicazione? Hai bisogno di un flusso costante di dati tra macchine diverse o è più utile avere esplosioni? Se stai scrivendo un'applicazione di tipo Telefonia IP, probabilmente vorrai qualcosa di abbastanza statale, se riesci a cavartela con gli apolidi è probabilmente più economico e più facile farlo in quel modo. Fare le cose in modo statale è necessariamente più fragile perché se una delle estremità della connessione viene interrotta o la connessione stessa si interrompe, si corre un rischio maggiore di perdita di dati, mentre con una connessione senza stato è più probabile che sia necessario attendere un po 'e provare ancora una volta.

Sono davvero strumenti diversi per diversi lavori, ma data la facilità e l'ubiquità delle tecnologie online senza stato è logico guardare in quella direzione quando ne hai la possibilità.

Altri suggerimenti

Vantaggi degli apolidi:

  1. Alta scalabilità (puoi inviare richieste a qualsiasi nodo, puoi aggiungere nodi in qualsiasi momento)
  2. Alta disponibilità (se un nodo fallisce, non c'è stato perso, basta inviare nuovamente la richiesta a un altro nodo)
  3. Alta velocità (in assenza di stato, i risultati sono memorizzabili nella cache)

Lo considererei specifico per il dominio. Se stai scrivendo l'equivalente morale del ping, un protocollo senza stato è la scelta giusta. D'altra parte, se stai scrivendo un VNC, stateful è sicuramente la strada da percorrere.

Per quanto riguarda quando scegliere quale, ci sono due punti da tenere a mente. Innanzitutto, mentre le scelte di implementazione sono / o, lo spazio problematico è un continuum. Tutti i compiti del mondo reale hanno almeno un piccolo stato, la domanda è quanto ed è il sovraccarico di passarlo in giro vale la seccatura di rintracciarlo ad entrambe le estremità. E in secondo luogo, generalmente si ha a che fare con uno stack di protocollo, non con un singolo protocollo; assicurarsi che tutto viva al giusto livello può semplificare enormemente le cose.

Un protocollo senza stato è più facile da raggruppare poiché lo stato non deve mai essere trasferito da 1 server a un altro su richieste successive.

Non conosco personalmente tutti i problemi di progettazione tra stateful contro stateless, ma so che NFSv4 è stateful dopo 15 anni di precedenti versioni di NFS stateless, quindi apparentemente l'apolidia è diventata una limitazione significativa per Designer NFS.

Pochi minuti 'Googling rivela diversi articoli e blog che parlano della statualità di NFSv4; questa dovrebbe essere una lettura interessante per alcuni dei problemi di progettazione coinvolti.

Un'altra cosa interessante con i protocolli senza stato è che è più facile gestire situazioni di failover del server e / o clustering / situazioni di bilanciamento del carico.

Stateful è meglio. Quindi non è necessario inviare lo stato continuamente. Il protocollo diventa quindi più semplice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top