Heim >Backend-Entwicklung >PHP-Tutorial >Probleme bei der integrierten Sitzungsfreigabe

Probleme bei der integrierten Sitzungsfreigabe

小云云
小云云Original
2017-11-09 13:27:381233Durchsuche

2.1 Client-Cookie-Speicherung

Einführung

wird auf der Client-Seite in einer Cookie-verschlüsselten Weise gespeichert. Der Vorteil besteht darin, den Druck auf der Serverseite zu reduzieren auf der Clientseite geschrieben und dann über den Browser erneut an den Server gesendet. Selbst wenn zwei Anfragen auf zwei Servern im Cluster abgeschlossen werden, kann die Sitzungsfreigabe erreicht werden.

Der Vorteil dieser Lösung besteht darin, dass Sitzungsinformationen nicht auf der Serverseite gespeichert werden müssen, was den Druck auf den Server erheblich verringert. Ein weiterer Vorteil besteht darin, dass zwei oder mehr Anfragen in einer Sitzung auf mehreren Servern in einem Cluster ausgeführt werden können, wodurch Single Points of Failure vermieden werden. Derzeit übernimmt Taobao diese Lösung.

Erstens gibt es bei der Weitergabe von Cookies die Möglichkeit, nur einen Teil der Benutzerinformationen im Cookie zu speichern. Drittens ist zusätzlicher Aufwand erforderlich Wenn diese Methode angewendet wird, werden bei jedem Zugriff auf den Domänennamen der zweiten Ebene der Website die in Form von Cookies gespeicherten Sitzungsinformationen in den HTTP-Informationsheader aufgenommen, der letztendlich eine bestimmte Bandbreite belegt. Da es sich bei dieser Methode um die Verarbeitung von Informationen im Client-Speicher handelt, ist es nicht sehr zuverlässig, dass Benutzer Cookies vollständig deaktivieren oder löschen.

2.2 Sitzungssynchronisation zwischen Servern

Einführung

Wenn sich der Benutzer über ein Skript oder einen Daemon-Prozess unter Verwendung der Master-Slave-Serverarchitektur am Master-Server anmeldet, Pass Senden Sie die Sitzungsinformationen an jeden Slave-Server, sodass die Sitzungsinformationen gelesen werden können, wenn der Benutzer auf andere Slave-Server zugreift.

Nachteile: wie langsame Geschwindigkeit, Instabilität usw. Darüber hinaus bestehen einige Risiken, wenn die Übertragung der Sitzungsinformationen nur in eine Richtung erfolgt. Wenn beispielsweise der Hauptserver ausfällt, Andere Server können keine Sitzungsinformationen abrufen

2.3 Verwenden Sie einen Cluster, um Sitzungen einheitlich zu verwalten

Einführung

Stellen Sie einen Cluster bereit, um gemeinsam genutzte Sitzungsinformationen zu speichern ihre Sitzungsinformationen in der Sitzungscluster-Servergruppe. Wenn das Anwendungssystem Sitzungsinformationen benötigt, liest es diese direkt vom Sitzungsclusterserver. Derzeit verwenden die meisten von ihnen Memcache zum Speichern von Sitzungen.

Es gibt derzeit zwei beliebte Implementierungslösungen für die Verwendung von Memcache zur Implementierung der Sitzungsfreigabe. Diese beiden Lösungen werden im Folgenden hauptsächlich vorgestellt.

2.3.1 Verwenden Sie die Filtermethode

Diese Methode verwendet die Filtermethode, um das httpRequest-Objekt neu zu packen und den zwischengespeicherten Client hinzuzufügen. Die Vorteile dieser Methode sind: Sie ist einfach zu verwenden und zu filtern Konfigurieren Sie es einfach auf dem Server. Darüber hinaus ist es flexibler, da es auf dem Client implementiert ist, die Konfiguration flexibler ist und serverunabhängig ist. Sie können es auf jedem Container bereitstellen, der Servlets unterstützt.

2.3.2 Memcached-Session-Manager (MSM)

Memcached-Session-Manager, allgemein bekannt als MSM, ist eine Open-Source-Lösung zur Lösung des Problems der Sitzungsfreigabe in einer verteilten Umgebung Tomcat-Umgebung. Das Implementierungsprinzip besteht darin, es als Tomcat-Plug-In auf dem Server bereitzustellen, den sitzungsbezogenen Code im Servlet-Containercode zu ändern, ihn mit Memcached zu verbinden und die Sitzung in Memcached zu erstellen und zu aktualisieren. MSM verfügt über die folgenden Funktionen:

Unterstützt Tomcat6, Tomcat7

Unterstützt Sticky- und Non-Sticky-Sitzungen

Kein Single Point of Failure

Kann Tomcat-Failover verarbeiten

Kann Memcached-Failover verarbeiten

Plug-in-Sitzungsserialisierung

Ermöglicht das asynchrone Speichern von Sitzungen, um die Antwortgeschwindigkeit zu verbessern

Nur ​​wenn die Sitzung geändert wird, Erst dann wird die Sitzung in Memcached zurückgeschrieben

JMX Management & Monitoring

MSM (Memcached-Session-Manager) unterstützt Tomcat6 und Tomcat7 und verwendet Value (Tomcat-Ventil), um Anfragen zu verfolgen. Wenn die Anforderungsanforderung eintrifft, wird die Sitzung aus dem Memcached geladen. Wenn die Anforderungsanforderung endet, wird die Tomcat-Sitzung auf den Memcached-Modus aktualisiert, um den Zweck der Sitzungsfreigabe zu erreichen.

Vorteile: Entwickler müssen nicht mehr über die gemeinsame Nutzung von Sitzungen nachdenken. Sie können sich auf die Programmentwicklung konzentrieren und diese einfach wie eine normale Sitzung verwenden. Es ist nicht erforderlich, Code explizit zu schreiben, Sie müssen lediglich den Server für die Verwendung konfigurieren.

Nachteile: Wenn Sie die Sitzungsrichtlinie ändern möchten, müssen Sie den Servlet-Container jedes Servers erneut bereitstellen.

Einzelheiten finden Sie unter: http://code.google.com/p/memcached-session-manager/

2.4 Persistierende Sitzung zur Datenbank

Einführung

Diese Methode der Sitzungsfreigabe speichert die Sitzungsinformationen in der Datenbank, und andere Anwendungen können die Sitzungsinformationen aus der Datenbank überprüfen. Die derzeit bei Verwendung dieser Lösung verwendete Datenbank ist im Allgemeinen MySQL.

Die Lösung, die Datenbank zum Teilen der Sitzung zu verwenden, ist zwar praktisch, weist jedoch auch die folgenden Mängel auf: Erstens wird das gleichzeitige Lesen und Schreiben der Sitzung in der Datenbank abgeschlossen, was eine hohe Leistung von MySQL erfordert ; Zweitens müssen wir die Sitzung zusätzlich implementieren. Eliminieren Sie den Logikcode, dh aktualisieren und löschen Sie regelmäßig Sitzungsinformationen aus der Datenbanktabelle, was den Arbeitsaufwand erhöht


2.5 Konfigurieren Der Lastausgleichsserver ermöglicht es, die Sitzung eines Benutzers auf einem Server abzuschließen. Sichern Sie die Sitzungsinformationen regelmäßig auf dem Salve. Nach dem Ausfall eines Servers wird die Anforderung des Benutzers transparent über den Ausgleichsserver an andere Server im Cluster weitergeleitet Gleichzeitig müssen die gesicherten Sitzungsinformationen aus der Salbe ausgelesen werden.


Das obige ist der detaillierte Inhalt vonProbleme bei der integrierten Sitzungsfreigabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn