Unterschied zwischen Sitzungsaffinität und klebriger Sitzung?


126

Was ist der Unterschied zwischen Sitzungsaffinität und Sticky-Sitzung im Zusammenhang mit Lastausgleichsservern?

Antworten:


81

Ich habe gesehen, dass diese Begriffe synonym verwendet werden, aber es gibt verschiedene Möglichkeiten, sie zu implementieren:

  1. Senden Sie bei der ersten Antwort ein Cookie und suchen Sie es bei den folgenden. Das Cookie gibt an, an welchen realen Server gesendet werden soll.
    Schlecht, wenn Sie Browser ohne Cookies unterstützen müssen
  2. Partition basierend auf der IP-Adresse des Anforderers.
    Schlecht, wenn es nicht statisch ist oder wenn viele über denselben Proxy eingehen.
  3. Wenn Sie Benutzer authentifizieren, erfolgt die Partition basierend auf dem Benutzernamen (dies muss ein von HTTP unterstützter Authentifizierungsmodus sein).
  4. Benötigen Sie keinen Staat.
    Lassen Sie Clients einen beliebigen Server treffen (senden Sie den Status an den Client und lassen Sie ihn ihn zurücksenden).
    Dies ist keine klebrige Sitzung, sondern eine Möglichkeit, dies zu vermeiden.

Ich würde vermuten, dass Sticky sich auf die Cookie-Methode bezieht und dass sich Affinität in einigen Kontexten auf # 2 und # 3 bezieht, aber so habe ich es nicht gesehen (oder selbst verwendet).


6
Was passiert, wenn eine Anforderung an einen physischen Server gebunden ist, wenn dieser Server ausfällt? Gibt es eine Strategie, um das Cookie zu verwenden, um einen Failover-Server zu enthalten?
Raffian

2
Wenn der Server ausfällt, schlägt die Anwendung fehl. Möglicherweise müssen Sie sich erneut anmelden. Vielleicht haben Sie Daten verloren. Normalerweise wählt der Load-Balancer einen anderen Server aus und Sie machen weiter, aber ein Teil des Status geht verloren. Wenn dies nicht akzeptabel ist, müssen Sie den Status so schnell wie möglich an die Datenbank oder andere Server senden oder eine zustandslose Strategie verfolgen.
Lou Franco

FWIW Heroku bezeichnet sie als das Gegenteil. Session Afifinity basiert auf Cookies und unterstützt Sticky nicht. devcenter.heroku.com/articles/session-affinity
RandallB

39

Da ich die in einem Lastausgleichsszenario verwendeten Begriffe immer gehört habe, sind sie austauschbar. Beides bedeutet, dass nach dem Start einer Sitzung derselbe Server alle Anforderungen für diese Sitzung bearbeitet.


21

Sticky-Sitzung bedeutet, dass, wenn eine Anforderung von einem Client auf eine Site eingeht, alle weiteren Anforderungen an denselben Server gehen, auf den die erste Client-Anforderung zugegriffen hat. Ich glaube, dass Sitzungsaffinität ein Synonym für Sticky Session ist.


13

Sie sind gleich.

Beides bedeutet, dass die Anfrage beim Eingang des Load Balancers an den Server weitergeleitet wird, der die erste Anfrage bedient hat (und die Sitzung hat).


11

Sticky-Sitzung bedeutet, die Anforderungen einer bestimmten Sitzung an denselben physischen Computer weiterzuleiten, der die erste Anforderung für diese Sitzung bearbeitet hat.


3

Dieser Artikel klärt die Frage für mich und beschreibt andere Arten der Load-Balancer-Persistenz.

Dave's Thoughts: Persistenz des Load Balancers (Sticky Sessions)


6
Scheinbar nicht mehr verfügbar, aber es gibt eine Kopie in der Wayback-Maschine
Martin McNulty

12
Aus diesem Grund veröffentlichen Sie nicht nur Links ohne Erklärung
Juan Mendes

Es wurde festgestellt, dass der Inhalt des obigen Links (jetzt nicht mehr verfügbar) in archive.li/SG4fA verschoben wurde. Grundsätzlich werden die verschiedenen Persistenztypen aufgelistet, die vom F5-Load-Balancer unterstützt werden.
Aveek

0

Sie sind Synonyme. Überhaupt kein Unterschied

Sticky Session / Session Affinity:

Affinität / Klebrigkeit / Kontakt zwischen Benutzersitzung und dem Server, an den die Benutzeranforderung gesendet wird, bleibt erhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.