Konfiguration von Apache Cassandra Data Consistency

Konfiguration von Apache Cassandra Data Consistency

  • Orchestrierung
6 Minuten Lesezeit Aktualisiert Jan 7, 2019

Auf einen Blick: Die Konfiguration von Apache Cassandra konzentriert sich auf die Verwaltung der Datenkonsistenz durch Replikationseinstellungen und balanciert die Reaktionszeit mit der Genauigkeit aus, was für Anwendungen mit hoher Integrität entscheidend ist.

  • Spätere Konsistenzkonfigurationen verbessern die Schreib- und Leseoperationen.
  • Replikationsstrategien umfassen SimpleStrategy und NetworkTopologyStrategy für effektives Datenmanagement.

Schauen wir uns an, wie Apache Cassandra mit Datenkonsistenz umgeht.

Wenn Sie Daten an n bis 1 Knoten in einem Cluster schreiben und dann liest eine Anwendung sie von Knoten n, könnte Cassandra melden, dass die Daten nicht vorhanden sind, da die Replikation nicht sofort erfolgt. Das könnte ein großes Problem sein oder gar kein Problem. Es hängt von der Anwendung ab. Wenn es eine umsatzgenerierende Anwendung ist, dann ist es ein Problem.

Cassandra erlaubt Administratoren also, Datenreplikation und Konsistenz auf Anwendungsebene zu konfigurieren. Der Kompromiss ist die Antwortzeit im Vergleich zur Datengenauigkeit.

Diese Fähigkeit, dies auf Anwendungsebene zu konfigurieren, nennt man Eventual Consistency. Wie der Name schon sagt, kann man Cassandra sagen, sie solle nach einer Operation warten, um alle Daten in alle Rechenzentren und Racks zu schreiben, oder nach dem ersten Schreiben zur nächsten Operation wechseln, mit dem Verständnis, dass Cassandra schließlich aufholt.

Diese Idee ist dieselbe wie die Feststellung, welche Art von Speicher gemietet oder gekauft werden soll, wenn man eine Anwendung entworfen hat. Anwendungen, die als weniger geschäftskritisch gelten, könnten kostengünstigere Speicher und noch weniger Laufwerke verwenden und weniger oder gar keine Replika herstellen als missionskritische.

Konsistenz kann auf folgenden Ebenen festgelegt werden:

  • Rechenzentrum
  • Cluster
  • I/O-Operationstyp (d. h. lesen oder schreiben)

Schreib- und Lesekonsistenz

Write Consistency bietet viele verschiedene Optionen. Hier sind ein paar.

ALLE

Daten müssen auf jedem Knoten in das Memtable- und Commit-Log geschrieben werden. Die Schritte, die Cassandra beim Schreiben der Daten durchführt, sind:

  • Schreibe Daten in den Memtable (Speicher)
  • schreibe in das Commit-Logbuch
  • Schreibe auf Festplatte
  • Kompakt die Daten
QUORUM Ein Quorum auf Rechenzentrumsebene. Ein Quorum ist ((Anzahl der Repliken)) / 2 + 1 aufgerundet. Das Addieren von 1 macht diese Zahl zur nächsten Ganzzahl, wenn diese Division einen Bruchteil ergibt. Und man kann nicht in einen Bruchteil eines Rechenzentrums schreiben, also fügt man noch einen weiteren hinzu
EINS, ZWEI, DREI 1, 2 oder 3 replizieren, also auf Knotenebene.

Lesen Sie Konsistenz

Je nach Schreibkonsistenzset haben manche Knoten ältere Datenkopien als andere. Es ist also sinnvoll, dass du auch die Lesekonsistenz konfigurieren kannst.

ALLE Wartet, bis alle Repliken geantwortet haben.
... usw.

Replikationsstrategie

Replikation ist ein Faktor für die Konsistenz der Daten. Eine Replik bedeutet eine Kopie der Daten.

um festzustellen, ob ein Schreiben erfolgreich war und ob die Replikation funktioniert, verfügt Cassandra über ein Objekt namens Snitch, das bestimmt, zu welchem Rechenzentrum und Rack-Knoten gehören und welche Netzwerktopologie es gibt.

Es gibt zwei Replikationsstationen:

  1. SimpleStrategy – ein Rechenzentrum und ein Rack.
  2. NetworkTopologyStrategy – mehrere Racks und mehrere Rechenzentren. Dies wird bevorzugt, selbst wenn es nur ein Rechenzentrum gibt.

Hier veranschaulichen wir das mit einem Beispiel.

Befolge zuerst diese Anweisungen , um einen Cluster einzurichten.

Verwenden Sie NodeTool, um den Namen des Rechenzentrums zu bestimmen, wie vom Informanten gemeldet. Hier lautet der Name Datacenter1. Das zeigt, dass es zwei Knoten in diesem Cluster gibt. Natürlich würden Sie das auf jedem Knoten ausführen, um zu sehen, zu welchem Rechenzentrum jeder Knoten gehört.

    nodetool status

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address       Load       Tokens       Owns    Host ID                               Rack
UN  172.31.46.15  532.22 MiB  256          ?       58999e76-cf3e-4791-8072-9257d334d945  rack1
UN  172.31.47.43  532.59 MiB  256          ?       472fd4f0-9bb3-48a3-a933-9c9b07f7a9f6  rack1

Erstellen Sie mit NetworkTopologyStrategy einen Keyspace mit einer Replik zu Datacenter1. Das bedeutet, die Daten in zwei Racks zu schreiben, da es nur ein Rechenzentrum gibt.

    CREATE KEYSPACE Customers
       WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 1};

Erstellen Sie nun eine Tabelle:

    CREATE TABLE  Customers.Customers (      
Name text PRIMARY KEY,  
credit int 
);

Fügen Sie einige Daten hinein:

    insert into Customers.Customers (name, credit) values ('Hardware Store', 1000);

Schalte das Nachzeichnen ein.

    cqlsh> TRACING on;
Now Tracing is enabled

Und ein weiteres Album schreiben:

    insert into Customers.Customers (name, credit) values ('Book Store', 1000);

Cassandra antwortet mit einigen Informationen zur Latenz. Es werden keine Rack-Level-Operationen angezeigt.

    Tracing session: bf8e0a90-0c43-11e9-9628-9d6a90b241c5

Parsing insert into Customers.Customers (name, credit) values ('Book Store', 1000); 

activity| timestamp | source | source_elapsed | client

[Native-Transport-Requests-1] | 2018-12-30 15:01:12.761000 | 172.31.46.15 |  203 | 127.0.0.1

Preparing statement [Native-Transport-Requests-1] | 2018-12-30 15:01:12.762000 | 172.31.46.15 | 359 | 127.0.0.1

Determining replicas for mutation [Native-Transport-Requests-1] | 2018-12-30 15:01:12.762000 | 172.31.46.15 |            662 | 127.0.0.1

Appending to commitlog [Native-Transport-Requests-1] | 2018-12-30 15:01:12.762000 | 172.31.46.15 | 753 | 127.0.0.1

Adding to customers memtable [Native-Transport-Requests-1] | 2018-12-30 15:01:12.762000 | 172.31.46.15 |            827 | 127.0.0.1

Request complete | 2018-12-30 15:01:12.762121 | 172.31.46.15 | 1121 | 127.0.0.1

Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.

Mehr aus Orchestrierung

Interessieren Sie sich für mehr von BMC?

The Brief ist unsere monatliche E-Mail zum Mainframe und zur Enterprise-Orchestrierung: Recherchen, Kundenberichte, Produktnachrichten, Events.

Mit der Registrierung für dieses Angebot bestätigen Sie, dass Sie die Datenschutzrichtlinie von BMC gelesen und zugestimmt haben.

Sie haben The Brief abonniert

Das Briefing umfasst die Mainframe- und Enterprise-Orchestrierung – BMC AMI und Control-M – sowie die Analystenforschung, Kundeneinsätze und Events in beiden Bereichen.