Redission-Tomcat implementiert schnell die Bereitstellung von einer einzelnen Maschine zur Bereitstellung auf mehreren Maschinen

Redission-Tomcat implementiert schnell die Bereitstellung von einer einzelnen Maschine zur Bereitstellung auf mehreren Maschinen

Vorwort

In den Anfangsphasen einiger Projekte werden Entwicklung und Bereitstellung aus Gründen der Einfachheit und Geschwindigkeit auf einer einzigen Maschine durchgeführt. Mit zunehmender Geschäftsausweitung oder steigenden Anforderungen an die Verfügbarkeit genügt die Umgebung mit einer einzigen Maschine jedoch nicht mehr den Anforderungen. Beim Wechsel von einer Bereitstellung auf einem einzelnen Computer zu einer Bereitstellung auf mehreren Computern kann die Sitzungsfreigabe ein wichtiger Schritt sein (der ignoriert werden kann, wenn von Anfang an eine tokenbasierte Authentifizierung verwendet wird). Dieser Artikel stellt ein auf Redis basierendes Open-Source-Projekt zur Tomcat-Sitzungsverwaltung vor: Redission-Tomcat, mit dem die Sitzungsfreigabe schnell und ohne Codeeingriff implementiert werden kann.

Einführung

Redisson ist ein Redis-Client ähnlich wie Jedis, aber mit umfangreicheren Funktionen als Jedis. redission-tomcat ist ein auf Redis basierendes Tomcat-Sitzungsmanagerprojekt, Projektadresse. Im Vergleich zu anderen Implementierungen ist der Speicher dieses Projekts effizienter und Schreibvorgänge sind optimierter. Jeder Sitzungsparameter wird beim Aufruf von HttpSession.setAttribute in Redis geschrieben, während andere Lösungen im Allgemeinen die gesamte Sitzung serialisieren und jedes Mal schreiben.

verwenden

1. Laden Sie die beiden JAR-Pakete redisson-all-3.11.0.jar und redisson-tomcat-8-3.11.0.jar herunter (für Tomcat8, andere Versionen finden Sie auf der obigen Projektadressenseite) und legen Sie sie im Lib-Verzeichnis von Tomcat ab.

2. Fügen Sie der Datei context.xml im Tomcat-Conf-Verzeichnis die folgende Konfiguration hinzu

<Manager-Klassenname="org.redisson.tomcat.RedissonSessionManager"
configPath="${catalina.base}/conf/redisson.conf" 
readMode="Speicher" updateMode="Nach_Anforderung" broadcastSessionEvents="false"/>

In

  • configPath: verweist auf die Redisson-Konfigurationsdatei im JSON- oder YAML-Format, die in Schritt 3 angegeben wurde.
  • readMode: Der Lesemodus des Sitzungsattributs. Die möglichen Werte sind 1. MEMORY, das Sitzungsattribute sowohl in der lokalen Tomcat-Sitzung als auch in Redis speichert. Nachfolgende Sitzungsaktualisierungen werden über Redis-Ereignisse an die lokale Tomcat-Sitzung weitergegeben. 2. REDIS, das Sitzungsattribute nur in Redis speichert. Der Standardwert ist REDIS.
  • updateMode: Der Aktualisierungsmodus des Sitzungsattributs. Mögliche Werte sind: 1. DEFAULT, Sitzungsattribute werden nur über die Methode setAttribute in Redis gespeichert; 2. AFTER_REQUEST, nach jeder Anforderung werden alle Sitzungsattribute in Redis gespeichert. Der Standardwert ist DEFAULT.
  • broadcastSessionEvents: Wenn auf „true“ gesetzt, werden die Ereignisse „sessionCreated“ und „sessionDestroyed“ an alle Tomcat-Instanzen gesendet und alle registrierten HttpSessionListeners werden ausgelöst. Der Standardwert ist „false“.

3. Fügen Sie im Tomcat-Conf-Verzeichnis eine neue Konfigurationsdatei redisson.conf hinzu. Der Inhalt lautet wie folgt

{
"singleServerConfig":{
"idleConnectionTimeout":10000,
"Verbindungstimeout":10000,
"Zeitüberschreitung": 3000,
"Wiederholungsversuche":3,
"Wiederholungsintervall": 1500,
"Passwort":"123456",
"Abonnements pro Verbindung": 5,
"Clientname":null,
"Adresse": "redis://127.0.0.1:6379",
"minimale Leerlaufgröße der Abonnementverbindung": 1,
"Abonnement-Verbindungspoolgröße": 50,
"VerbindungsminimumLeerlaufgröße":24,
"Verbindungspoolgröße": 64,
"Datenbank": 0,
"dnsMonitoringInterval":5000
},
"Gewinde": 16,
"nettyThreads":32,
"Codec": {
"Klasse": "org.redisson.codec.FstCodec"
},
"Transportmodus": "NIO"
}

Oben sehen Sie die Redis-Umgebungskonfiguration für den Standalone-Modus, in der Kennwort und Adresse auf Ihre eigenen Werte geändert werden. Im Cluster-Modus lautet die Konfigurationsdatei

{
"sentinelServersConfig": {
"idleConnectionTimeout":10000,
"Verbindungstimeout":10000,
"Zeitüberschreitung": 3000,
"Wiederholungsversuche":3,
"Wiederholungsintervall": 1500,
"failedSlaveReconnectionInterval":3000,
"failedSlaveCheckInterval":60000,
"Passwort":null,
"Abonnements pro Verbindung": 5,
"Clientname":null,
"loadBalancer": {
"Klasse": "org.redisson.connection.balancer.RoundRobinLoadBalancer"
},
"minimale Leerlaufgröße der Abonnementverbindung": 1,
"Abonnement-Verbindungspoolgröße": 50,
"SlaveConnectionMinimumIdleSize": 24,
"SlaveConnectionPoolSize": 64,
"masterConnectionMinimumIdleSize":24,
"MasterConnectionPoolSize": 64,
"Lesemodus": "SLAVE",
"Abonnementmodus": "SLAVE",
"sentinelAdressen":[
"redis://127.0.0.1:26379",
"redis://127.0.0.1:26389"
],
"masterName":"meinmaster",
"Datenbank":0
},
"Gewinde": 16,
"nettyThreads":32,
"Codec": {
"Klasse": "org.redisson.codec.FstCodec"
},
"Transportmodus": "NIO"
}

Wir können nginx verwenden, um den Lastenausgleich zu erreichen, siehe die Konfiguration

Upstream-cnserver {
Server 127.0.0.1:8080 Gewicht=2 Fehler-Timeout=10 s, max. Fehler=1;
Server 127.0.0.1:8081 Gewicht=2 Fehler-Timeout=10 s, max. Fehler=1;
}
Server {
hören Sie 80;
Servername localhost;
Index Index.html Index.htm;
Standort /rest/ {
Index Index.html;
Proxy-Passwort http://cnserver/rest/;
}
}

Oben sind alle Konfigurationen für die Verwendung von Redisson-Tomcat aufgeführt, um die Bereitstellung von Einzel- bis Mehrfachmaschinen zu implementieren.

Zusammenfassen

Die technische Architektur entwickelt sich zusammen mit der Geschäftsentwicklung weiter. In den frühen Phasen der Geschäftsentwicklung sind die Anzahl der Benutzer und die Geschäftskomplexität relativ gering. Um eine schnelle Online-Verifizierung zu erreichen, wird häufig eine einfache und einheitliche Architektur verwendet. Viele Projekte scheitern möglicherweise, bevor sie Zeit haben, sich weiterzuentwickeln und ihre Architektur zu verbessern. Projekte, die jedoch das Glück haben, weiter zu wachsen, werden im Zuge der Expansion ihres Geschäfts zwangsläufig kontinuierlich optimiert und verbessert.

Der in diesem Artikel vorgestellte Redisson-Tomcat kann Einzelmaschinenprojekten dabei helfen, schnell auf Mehrmaschinenunterstützung umzustellen, natürlich nur über die Verknüpfung zur Sitzungsverwaltung. Kommen weitere verteilte Unterstützungen wie Dateiupload, zeitgesteuerte Aufgaben etc. zum Einsatz, müssen entsprechende Anpassungen vorgenommen werden.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • So implementieren Sie verteilte Sperren basierend auf Redis in Java-Annotationen
  • Redistributionsverteilte Sperre verhindert wiederholte Initialisierungsprobleme

<<:  Detaillierte Erklärung des JS-Browser-Ereignismodells

>>:  Analyse des MySQL-Sperrmechanismus und der Verwendung

Artikel empfehlen

20 hervorragende Beispiele für die Farbabstimmung auf ausländischen Webseiten

In diesem Artikel werden 20 hervorragende Beispiel...

Einführung und Verwendung der Angular-Pipeline PIPE

Vorwort PIPE, übersetzt als Pipeline. Angular Pip...

Probleme mit Vue, das die Homepage von Bibibili imitiert

Technische Struktur Das Projekt ist in zwei Teile...

So stellen Sie Redis schnell als Docker-Container bereit

Inhaltsverzeichnis Erste Schritte Datenspeicherun...

Lösung zur Installation von OpenCV 3.2.0 in Ubuntu 18.04

Laden Sie opencv.zip herunter Installieren Sie di...

So führen Sie Linux-Befehle im Hintergrund aus

Wenn Sie einen Befehl im Terminal ausführen, müss...

CentOS 7 - Lösungsprozessdiagramm für vergessene Passwörter

brauchen Unabhängig davon, ob es sich um ein Wind...

Beispiel zum Anzeigen und Ändern der MySQL-Transaktionsisolationsebene

Überprüfen Sie die Transaktionsisolationsebene In...

So erstellen Sie einen vollständigen Samba-Server unter Linux (CentOS-Version)

Vorwort smb ist der Name eines Protokolls, das fü...

Vue verwendet Regeln zur Implementierung der Formularfeldvalidierung

Es gibt viele Möglichkeiten, Formularfelder in Vu...

So ändern Sie die Master-Slave-Replikationsoptionen in MySQL online

Vorwort: Die am häufigsten verwendete Architektur...