2009-03-09 1 views
11

Ich kann sehen, dass Stateful Protokolle zu weniger verpfuscht zusammen "emulierten Zustand" wie Cookies führen.Sind staatenlose Protokolle besser für die Verwendung von Stateful-Protokollen geeignet?

, aber das Testen wird sehr viel schwieriger, um sicherzustellen, dass Ihre Implementierung korrekt ist und sich wieder verbindet, und Sitzungsfortsetzungen können sehr schwierig zu handhaben sein.

Wird es als bessere Praxis angesehen, immer statusfreie Protokolle zu verwenden, oder ist es wirklich domänenspezifisch?

Ich denke, dass die Authentifizierung beim Umgang mit Stateful-Protokollen einfacher wird, aber gibt es andere Gründe, warum Sie ein Stateful-Protokoll verwenden sollten?

Antwort

8

Wie wichtig ist der Status Ihrer Anwendung? Brauchen Sie einen konstanten Datenfluss zwischen verschiedenen Maschinen oder ist es sinnvoller, Bursts zu haben? Wenn Sie eine IP-Telefonie-Anwendung schreiben, dann werden Sie wahrscheinlich etwas ziemlich Stateful wollen, wenn Sie mit Staatenlos durchkommen können, ist es wahrscheinlich billiger und einfacher, es so zu machen. Staatlich zu tun ist notwendigerweise fragiler, denn wenn ein Ende der Verbindung unterbrochen wird oder die Verbindung selbst ausfällt, riskieren Sie einen Datenverlust, während Sie bei einer zustandslosen Verbindung eher eine Weile warten müssen nochmal.

Sie sind wirklich verschiedene Werkzeuge für verschiedene Jobs, aber angesichts der Leichtigkeit und Allgegenwart von Staatenlosen Technologien online ist es logisch, in diese Richtung zu schauen, wenn Sie die Option haben.

2

Eine weitere nette Sache mit Stateless-Protokollen ist, dass es einfacher ist, Server-Failover-Situationen und/oder Clustering/Load-Balancing-Situationen zu behandeln.

3

Ein zustandsloses Protokoll ist einfacher zu clustern, da der Zustand bei nachfolgenden Anforderungen nie von einem Server auf einen anderen übertragen werden muss.

13

Vorteile von stateless:

  1. Hohe Skalierbarkeit(Sie Anforderung an jeden Knoten senden können, können Sie Knoten jederzeit hinzufügen)
  2. Hohe Verfügbarkeit(wenn ein Knoten fehlschlägt, gibt es keinen Zustand, der verloren ist, senden Sie die Anforderung einfach an einen anderen Knoten)
  3. Hohe Geschwindigkeit(da kein Status vorliegt, können die Ergebnisse zwischengespeichert werden)
+0

toller Punkt über das Caching. –

+1

yeah, viele ppl betrachten es als Sweeties-Punkt von REST – vartec

9

Ich würde es Domain-spezifische betrachten. Wenn Sie das moralische Äquivalent von Ping schreiben, ist ein staatenloses Protokoll die richtige Wahl. Auf der anderen Seite, wenn Sie eine VNC schreiben, ist Stateful sicherlich der Weg zu gehen.

Für wann zu wählen, was, es gibt zwei Punkte zu beachten. Erstens, während die Implementierungsauswahl entweder/oder ist, ist der Problemraum ein Kontinuum. Alle realen Aufgaben haben zumindest einen kleinen Status, die Frage ist, wie viel und ist der Aufwand, um es herumzugeben, die Mühe wert, es an beiden Enden zu verfolgen. Und zweitens haben Sie es im Allgemeinen mit einem Protokollstack zu tun, nicht mit einem einzelnen Protokoll. sicherzustellen, dass alles auf der richtigen Ebene lebt, kann die Dinge enorm vereinfachen.

1

Stateful ist besser. Dann müssen Sie den Staat nicht ständig senden. Das Protokoll wird dann einfacher.

+2

Es ist unwahrscheinlich, dass das Web hätte skalieren können, wenn HTTP stateful gewesen wäre. –

+0

@Sara: Dieser Punkt steht nur, wenn der Staat Schwergewicht ist. – Brann

+1

Schwer zu sagen. Wir könnten viel bessere Anwendungen gehabt haben, wenn der Zustand auf eine Art und Weise gelöst wurde. Im Moment versuchen alle Framworks da draußen den Staatspass zu verstecken. Ich weiß nicht, ob es jemandem gelungen ist. Aber es dauerte mindestens 10 Jahre. :) – Flinkman

3

Ich bin nicht persönlich mit allen Designfragen von Stateful versus Stateless vertraut, aber ich weiß, dass NFSv4 nach 15 Jahren State of State NFS statusfrei Stateful ist, so dass scheinbar Staatenlosigkeit wurde zu einer erheblichen Einschränkung für die NFS-Designer.

Ein paar Minuten 'Googling enthüllt mehrere Artikel und Blogs über NFSv4 Sturheit; Dies sollte für einige der Designprobleme interessant sein.

Verwandte Themen