Verteilung bezieht sich auf die Aufteilung des Geschäftssystems, das heißt, jeder verteilte Knoten implementiert unterschiedliche Funktionen.
Ein Cluster ist eine Gruppe von Serviceeinheiten, die zusammenarbeiten, um eine Serviceplattform bereitzustellen, die skalierbarer und verfügbarer ist als eine einzelne Serviceeinheit. (Empfohlenes Lernen: Redis-Video-Tutorial)
Einfach ausgedrückt verbessert die Verteilung die Effizienz, indem sie die Ausführungszeit einer einzelnen Aufgabe verkürzt, während Clustering die Effizienz verbessert, indem sie die Ausführung verkürzt Zeit einer einzelnen Aufgabe. Die Anzahl der Aufgaben, die pro Zeiteinheit ausgeführt werden, um die Effizienz zu verbessern.
Der Redis-Cluster-Clustermodus weist normalerweise die Merkmale hoher Verfügbarkeit, Skalierbarkeit, Verteilung, Fehlertoleranz usw. auf. Es gibt im Allgemeinen zwei Arten von verteilten Redis-Lösungen:
Client-Partitionierungslösung
Der Client hat bereits entschieden, in welchem Redis-Knoten die Daten gespeichert oder von diesem gelesen werden Daten. Die Hauptidee besteht darin, einen Hash-Algorithmus zu verwenden, um den Schlüssel von Redis-Daten zu hashen. Durch die Hash-Funktion wird ein bestimmter Schlüssel einem bestimmten Redis-Knoten zugeordnet.
Der Vertreter des Client-Partitionierungsschemas ist Redis Sharding. Redis Sharding ist eine Redis-Multiinstanz-Clustermethode, die vor der Veröffentlichung von Redis Cluster häufig in der Branche verwendet wurde. Die Redis-Client-Treiberbibliothek Jedis von Java unterstützt die Redis-Sharding-Funktion, nämlich ShardedJedis und ShardedJedisPool in Kombination mit dem Cache-Pool.
Vorteile
Es wird keine Middleware von Drittanbietern verwendet, die Partitionierungslogik ist steuerbar, die Konfiguration ist einfach, es gibt keine Korrelation zwischen Knoten, einfache lineare Erweiterung usw starke Flexibilität.
Nachteile
Der Client kann keine Serviceknoten dynamisch hinzufügen oder löschen. Der Client muss die Verteilungslogik selbst verwalten. Es gibt keine gemeinsame Nutzung der Verbindung zwischen Clients führen zu einer Verschwendung von Verbindungen.
Proxy-Partitionierungsschema
Der Client sendet eine Anfrage an eine Proxy-Komponente, der Proxy analysiert die Daten des Clients, leitet die Anfrage an den richtigen Knoten weiter und antwortet schließlich Ergebnis an den Kunden.
Vorteile: Vereinfachte verteilte Client-Logik, transparenter Client-Zugriff, niedrige Wechselkosten und Trennung von Proxy-Weiterleitung und -Speicherung. Nachteile: Es gibt eine zusätzliche Proxy-Schicht, was die Komplexität der Architekturbereitstellung und den Leistungsverlust erhöht.
Zu den gängigen Implementierungslösungen für die Proxy-Partitionierung gehören Twemproxy und Codis.
Twemproxy
Twemproxy, auch Nutcraker genannt, ist ein Open-Source-Intermediate-Proxy-Server-Programm für Redis und Memcache von Twitter. Als Proxy kann Twemproxy den Zugriff mehrerer Programme akzeptieren, ihn gemäß Routing-Regeln im Hintergrund an verschiedene Redis-Server weiterleiten und dann zur ursprünglichen Route zurückkehren. Twemproxy hat ein Single-Point-of-Failure-Problem und muss mit Lvs und Keepalived kombiniert werden, um eine Hochverfügbarkeitslösung zu schaffen.
Vorteile: breiter Anwendungsbereich, hohe Stabilität und hohe Verfügbarkeit der Zwischen-Proxy-Schicht. Nachteile: Keine reibungslose horizontale Erweiterung/Verkleinerung möglich, keine visuelle Verwaltungsoberfläche, unfreundliche Bedienung und Wartung, keine automatische Übertragung.
Codis
Codis ist eine verteilte Redis-Lösung. Für Anwendungen der oberen Ebene gibt es keinen Unterschied zwischen der Verbindung mit Codis-Proxy und der direkten Verbindung mit dem nativen Redis-. Server. Die unterste Ebene von Codis übernimmt die Weiterleitung von Anfragen und führt die Datenmigration und andere Aufgaben ohne Ausfallzeiten durch. Codis verwendet eine zustandslose Proxy-Schicht und alles ist für den Client transparent.
Vorteile
Erzielen Sie hohe Verfügbarkeit, Daten-Sharding und automatischen Ausgleich des oberen Proxys und des zugrunde liegenden Redis, stellen Sie eine Befehlszeilenschnittstelle und eine RESTful-API bereit und stellen Sie eine Überwachungs- und Verwaltungsschnittstelle bereit , Redis-Knoten können dynamisch hinzugefügt und gelöscht werden.
Nachteile
Die Bereitstellungsarchitektur und -konfiguration ist komplex, es werden keine maschinenübergreifenden Räume und Mehrmandanten unterstützt und es wird kein Authentifizierungsmanagement unterstützt.
Weitere technische Artikel zum Thema Redis finden Sie in der Spalte Einführung in das Redis-Datenbanknutzungs-Tutorial, um mehr zu erfahren!
Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Redis-Cluster und Distributed. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!