Delen via


Consistentieniveaus van Apache Cassandra en Azure Cosmos DB voor Apache Cassandra

VAN TOEPASSING OP: Cassandra

In tegenstelling tot Azure Cosmos DB biedt Apache Cassandra geen nauwkeurig gedefinieerde consistentiegaranties. In plaats daarvan biedt Apache Cassandra een schrijfconsistentieniveau en een leesconsistentieniveau om de compromissen voor hoge beschikbaarheid, consistentie en latentie mogelijk te maken. Wanneer u Azure Cosmos DB voor Cassandra gebruikt:

  • Het consistentieniveau voor schrijven van Apache Cassandra wordt toegewezen aan het standaardconsistentieniveau dat is geconfigureerd in uw Azure Cosmos DB-account. Consistentie voor een schrijfbewerking (CL) kan niet per aanvraag worden gewijzigd.
  • Azure Cosmos DB wijst dynamisch het leesconsistentieniveau toe dat is opgegeven door het Cassandra-clientstuurprogramma. Het consistentieniveau wordt toegewezen aan een van de Azure Cosmos DB-consistentieniveaus die dynamisch zijn geconfigureerd voor een leesaanvraag.

Schrijfbewerkingen in meerdere regio's versus schrijfbewerkingen in één regio

Apache Cassandra-database is standaard een systeem met meerdere masters en biedt geen out-of-box-optie voor schrijfbewerkingen in één regio met replicatie voor meerdere regio's voor leesbewerkingen. Azure Cosmos DB biedt echter kant-en-klare mogelijkheid om één regio of schrijfconfiguraties voor meerdere regio's te hebben. Een van de voordelen van het kiezen van een schrijfconfiguratie voor één regio voor meerdere regio's is het vermijden van conflictscenario's tussen regio's en de optie om sterke consistentie tussen meerdere regio's te behouden.

Met schrijfbewerkingen in één regio kunt u sterke consistentie behouden, terwijl u nog steeds een hoge beschikbaarheid in verschillende regio's behoudt met door de service beheerde failover. In deze configuratie kunt u nog steeds gebruikmaken van de locatie van gegevens om de leeslatentie te verminderen door de uiteindelijke consistentie per aanvraag te verlagen. Naast deze mogelijkheden biedt het Azure Cosmos DB-platform ook de optie zoneredundantie bij het selecteren van een regio. In tegenstelling tot systeemeigen Apache Cassandra kunt u met Azure Cosmos DB door het cap-theorema trade-off spectrum navigeren met meer granulariteit.

Consistentieniveaus toewijzen

Het Azure Cosmos DB-platform biedt een set van vijf goed gedefinieerde, bedrijfsgebruiksscenariogeoriënteerde consistentie-instellingen met betrekking tot replicatie. De compromissen voor deze consistentie-instellingen worden gedefinieerd door de CAP- en PACLC-theorems. Omdat deze benadering aanzienlijk verschilt van Apache Cassandra, raden we u aan om de consistentie van Azure Cosmos DB te controleren en te begrijpen. U kunt ook deze korte videohandleiding bekijken voor informatie over consistentie-instellingen in het Azure Cosmos DB-platform. In de volgende tabel ziet u de mogelijke toewijzingen tussen Apache Cassandra- en Azure Cosmos DB-consistentieniveaus bij het gebruik van API voor Cassandra. Deze tabel bevat configuraties voor één regio, leesbewerkingen in meerdere regio's met schrijfbewerkingen in één regio en schrijfbewerkingen in meerdere regio's.

Toewijzingen

Notitie

Dit zijn geen exacte toewijzingen. In plaats daarvan hebben we de dichtstbijzijnde analogen aan Apache Cassandra geleverd en hebben we eventuele kwalitatieve verschillen in de meest rechtse kolom ondubbelzinnig gemaakt. Zoals hierboven vermeld, raden we u aan de consistentie-instellingen van Azure Cosmos DB te controleren.

ALL, EACH_QUOROM, QUOROM, LOCAL_QUORUMof THREE schrijfconsistentie in Apache Cassandra

Consistentie van Apache-leesbewerkingen Lezen uit Het dichtstbijzijnde consistentieniveau van Azure Cosmos DB voor Lees-/schrijfinstellingen van Apache Cassandra
ALL Lokale regio Strong
EACH_QUOROM Lokale regio Strong
QUOROM Lokale regio Strong
LOCAL_QUORUM Lokale regio Strong
LOCAL_ONE Lokale regio Eventual
ONE Lokale regio Eventual
TWO Lokale regio Strong
THREE Lokale regio Strong

In tegenstelling tot Apache en DSE Cassandra voert Azure Cosmos DB een quorumschrijfbewerking standaard door. Ten minste drie van de vier (3/4) knooppunten voeren de schrijfbewerking door naar schijf en niet alleen een doorvoerlogboek in het geheugen.

ONEANY consistentie of LOCAL_ONEschrijfconsistentie in Apache Cassandra

Consistentie van Apache-leesbewerkingen Lezen uit Het dichtstbijzijnde consistentieniveau van Azure Cosmos DB voor Lees-/schrijfinstellingen van Apache Cassandra
ALL Lokale regio Strong
EACH_QUOROM Lokale regio Eventual
QUOROM Lokale regio Eventual
LOCAL_QUORUM Lokale regio Eventual
LOCAL_ONE Lokale regio Eventual
ONE Lokale regio Eventual
TWO Lokale regio Eventual
THREE Lokale regio Eventual

Azure Cosmos DB-API voor Cassandra voert standaard altijd een quorumschrijfbewerking door, waardoor alle leesuitingen kunnen worden gebruikt.

TWO consistentie schrijven in Apache Cassandra

Consistentie van Apache-leesbewerkingen Lezen uit Het dichtstbijzijnde consistentieniveau van Azure Cosmos DB voor Lees-/schrijfinstellingen van Apache Cassandra
ALL Lokale regio Strong
EACH_QUOROM Lokale regio Strong
QUOROM Lokale regio Strong
LOCAL_QUORUM Lokale regio Strong
LOCAL_ONE Lokale regio Eventual
ONE Lokale regio Eventual
TWO Lokale regio Eventual
THREE Lokale regio Strong

Azure Cosmos DB heeft geen idee van schrijfconsistentie tot slechts twee knooppunten. Daarom behandelen we deze consistentie voor de meeste gevallen vergelijkbaar met quorum. Voor leesconsistentie TWOis deze consistentie gelijk aan schrijven met QUOROM en lezen uit ONE.

Serialof Local_Serial schrijfconsistentie in Apache Cassandra

Consistentie van Apache-leesbewerkingen Lezen uit Het dichtstbijzijnde consistentieniveau van Azure Cosmos DB voor Lees-/schrijfinstellingen van Apache Cassandra
ALL Lokale regio Strong
EACH_QUOROM Lokale regio Strong
QUOROM Lokale regio Strong
LOCAL_QUORUM Lokale regio Strong
LOCAL_ONE Lokale regio Eventual
ONE Lokale regio Eventual
TWO Lokale regio Strong
THREE Lokale regio Strong

Serieel is alleen van toepassing op lichtgewicht transacties. Azure Cosmos DB volgt standaard een duurzaam doorgevoerd algoritme en daarom Serial is consistentie vergelijkbaar met quorum.

Andere regio's voor schrijven in één regio

Azure Cosmos DB faciliteert vijf consistentie-instellingen, waaronder sterk, in meerdere regio's waar schrijfbewerkingen in één regio zijn geconfigureerd. Deze facilitering vindt plaats zolang regio's zich binnen 2000 mijl van elkaar bevinden.

Azure Cosmos DB heeft geen toepasselijke toewijzing voor Apache Cassandra, omdat alle knooppunten/regio's schrijfbewerkingen zijn en een sterke consistentiegarantie niet mogelijk is in alle regio's.

Andere regio's voor schrijven in meerdere regio's

Azure Cosmos DB faciliteert slechts vier consistentie-instellingen; eventual, , sessionconsistent prefixen bounded staleness in meerdere regio's waar schrijfbewerkingen voor meerdere regio's zijn geconfigureerd.

Apache Cassandra biedt alleen uiteindelijke consistentie voor leesbewerkingen in andere regio's, ongeacht de instellingen.

Ondersteunde dynamische onderdrukkingen

Azure Cosmos DB-accountinstelling Waarde in clientaanvraag overschrijven Onderdrukkingseffect
Strong All Geen effect (blijven als strong)
Strong Quorum Geen effect (blijven als strong)
Strong LocalQuorum Geen effect (blijven als strong)
Strong Two Geen effect (blijven als strong)
Strong Three Geen effect (blijven als strong)
Strong Serial Geen effect (blijven als strong)
Strong LocalSerial Geen effect (blijven als strong)
Strong One Consistentiewijzigingen in Eventual
Strong LocalOne Consistentiewijzigingen in Eventual
Strong Any Niet toegestaan (fout)
Strong EachQuorum Niet toegestaan (fout)
Bounded staleness, session of consistent prefix All Niet toegestaan (fout)
Bounded staleness, session of consistent prefix Quorum Niet toegestaan (fout)
Bounded staleness, session of consistent prefix LocalQuorum Niet toegestaan (fout)
Bounded staleness, session of consistent prefix Two Niet toegestaan (fout)
Bounded staleness, session of consistent prefix Three Niet toegestaan (fout)
Bounded staleness, session of consistent prefix Serial Niet toegestaan (fout)
Bounded staleness, session of consistent prefix LocalSerial Niet toegestaan (fout)
Bounded staleness, session of consistent prefix One Consistentiewijzigingen in Eventual
Bounded staleness, session of consistent prefix LocalOne Consistentiewijzigingen in Eventual
Bounded staleness, session of consistent prefix Any Niet toegestaan (fout)
Bounded staleness, session of consistent prefix EachQuorum Niet toegestaan (fout)

Metrische gegevens voor

Als uw Azure Cosmos DB-account is geconfigureerd met een ander consistentieniveau dan de sterke consistentie, controleert u de metrische gegevens probabilistisch gebonden veroudering (PBS). De metrische waarde legt de kans vast dat uw clients sterke en consistente leesbewerkingen voor uw workloads kunnen krijgen. Deze metrische waarde wordt weergegeven in Azure Portal. Zie voor meer informatie over de pbs-metrische gegevens monitor probabilistisch gebonden veroudering (PBS).

Probabilistisch gebonden veroudering toont hoe uiteindelijk uw uiteindelijke consistentie is. Deze metrische waarde biedt een inzicht in hoe vaak u een sterkere consistentie kunt krijgen dan het consistentieniveau dat u momenteel hebt geconfigureerd in uw Azure Cosmos DB-account. Met andere woorden, u kunt de waarschijnlijkheid (gemeten in milliseconden) zien van het verkrijgen van consistente leesbewerkingen voor een combinatie van schrijf- en leesregio's.

Wereldwijde sterke consistentie voor schrijfaanvragen in Apache Cassandra

Apache Cassandra, de instelling van EACH_QUORUM of QUORUM geeft een sterke consistentie. Wanneer een schrijfaanvraag naar een regio wordt verzonden, EACH_QUORUM worden de gegevens in een quorumaantal knooppunten in elk datacenter bewaard. Voor deze persistentie moet elk datacenter beschikbaar zijn om de schrijfbewerking te laten slagen. QUORUM is iets minder beperkend, waarbij een QUORUM aantal knooppunten in alle datacenters die nodig zijn om de gegevens te behouden voordat de schrijfbewerking wordt erkend om succesvol te zijn.

In de volgende afbeelding ziet u een globale instelling voor sterke consistentie in Apache Cassandra tussen twee regio's 1 en 2. Nadat gegevens naar regio 1 zijn geschreven, moet de schrijfbewerking worden bewaard in een quorumaantal knooppunten in zowel regio 1 als regio 2 voordat een bevestiging door de toepassing wordt ontvangen.

Diagram van globale schrijfconsistentie in Apache Cassandra.

Wereldwijde sterke consistentie voor schrijfaanvragen in Azure Cosmos DB voor Apache Cassandra

De consistentie van Azure Cosmos DB wordt ingesteld op accountniveau. Met Strong consistentie in Azure Cosmos DB voor Cassandra worden gegevens synchroon gerepliceerd naar de leesregio's voor het account. Hoe verder de regio's voor het Azure Cosmos DB-account zijn, hoe hoger de latentie van de consistente schrijfbewerkingen.

Diagram van globale schrijfconsistentie in Azure Cosmos DB voor Apache Cassandra.

Hoe het aantal regio's van invloed is op uw lees- of schrijfaanvraag:

  • Twee regio's: met sterke consistentie, quorum (N/2 + 1) = 2. Dus als de leesregio uitvalt, kan het account schrijfbewerkingen met sterke consistentie niet meer accepteren, omdat een quorumaantal regio's niet beschikbaar is voor de schrijfbewerking waarnaar moet worden gerepliceerd.
  • Drie of meer regio's: voor N = 3, quorum = 2. Als een van de leesregio's niet beschikbaar is, kan de schrijfregio de schrijfbewerkingen nog steeds repliceren naar een totaal van twee regio's die voldoen aan de quorumvereiste. Op dezelfde manier, met vier regio's, quorum = 4/2 + 1 = 3. Zelfs als er één leesregio uitvalt, kan aan het quorum worden voldaan.

Notitie

Als een wereldwijd sterke consistentie vereist is voor alle schrijfbewerkingen, moet de consistentie voor het Azure Cosmos DB voor Cassandra-account worden ingesteld op Sterk. Het consistentieniveau voor schrijfbewerkingen kan niet worden overschreven naar een lager consistentieniveau per aanvraag in Azure Cosmos DB.

Zwakkere consistentie voor schrijfaanvragen in Apache Cassandra

Een consistentieniveau van ANY, ONE, TWO, , THREEof Serial LOCAL_QUORUMLocal_Serial? Overweeg een schrijfaanvraag met LOCAL_QUORUM een RF van 4 in een datacenter met zes knooppunten. Quorum = 4/2 + 1 = 3.

Diagram van niet-globale schrijfconsistentie in Apache Cassandra.

Zwakkere consistentie voor schrijfaanvragen in Azure Cosmos DB voor Apache Cassandra

Wanneer een schrijfaanvraag wordt verzonden met een van de consistentieniveaus lager dan Strong, wordt er een geslaagde reactie geretourneerd zodra de lokale regio de schrijfbewerking in ten minste drie van de vier replica's persistent maakt.

Diagram van niet-globale schrijfconsistentie in Azure Cosmos DB voor Apache Cassandra.

Wereldwijde sterke consistentie voor leesaanvragen in Apache Cassandra

Met een consistentie van EACH_QUORUM, kan een consistente leesbewerking worden bereikt in Apache Cassandra. In, een installatie met meerdere regio's voor EACH_QUORUM als het quorumaantal knooppunten niet wordt voldaan in elke regio, wordt de leesbewerking mislukt.

Diagram van algemene leesconsistentie in Apache Cassandra.

Wereldwijde sterke consistentie voor leesaanvragen in Azure Cosmos DB voor Apache Cassandra

De leesaanvraag wordt uitgevoerd vanuit twee replica's in de opgegeven regio. Omdat de schrijfbewerking al heeft gezorgd voor een quorumaantal regio's (en alle regio's als elke regio beschikbaar was), biedt het lezen van twee replica's in de opgegeven regio sterke consistentie. Deze sterke consistentie moet EACH_QUORUM worden opgegeven in het stuurprogramma bij het uitgeven van de leesbewerking voor een regio voor het Cosmos DB-account, samen met sterke consistentie als het standaardconsistentieniveau voor het account.

Diagram van globale leesconsistentie in Azure Cosmos DB voor Apache Cassandra.

Lokale sterke consistentie in Apache Cassandra

Een leesaanvraag met een consistentieniveau van TWO, THREEof LOCAL_QUORUM geeft ons een sterke consistentie die wordt gelezen vanuit de lokale regio. Met een consistentieniveau hebt LOCAL_QUORUMu een reactie van twee knooppunten in het opgegeven datacenter nodig voor een geslaagde leesbewerking.

Diagram van lokale sterke leesconsistentie in Apache Cassandra.

Lokale sterke consistentie in Azure Cosmos DB voor Apache Cassandra

In Azure Cosmos DB voor Cassandra, met een consistentieniveau van TWOof THREE LOCAL_QUORUM een lokale sterke consistentie voor een leesaanvraag. Omdat het schrijfpad garandeert dat er minimaal drie van de vier replica's worden gerepliceerd, garandeert een leesbewerking van twee replica's in de opgegeven regio een quorumleesbewerking van de gegevens in die regio.

Diagram van lokale sterke leesconsistentie in Azure Cosmos DB voor Apache Cassandra.

Uiteindelijke consistentie in Apache Cassandra

Een consistentieniveau van LOCAL_ONEen One ANY with LOCAL_ONE resulteert in uiteindelijke consistentie. Deze consistentie wordt gebruikt in gevallen waarin de focus op latentie ligt.

Diagram van uiteindelijke leesconsistentie in Apache Cassandra.

Uiteindelijke consistentie in Azure Cosmos DB voor Apache Cassandra?

Een consistentieniveau van LOCAL_ONE, ONE of Any geeft u uiteindelijke consistentie. Met uiteindelijke consistentie wordt een leesbewerking uitgevoerd vanaf slechts een van de replica's in de opgegeven regio.

Diagram van uiteindelijke leesconsistentie in Azure Cosmos DB voor Apache Cassandra.

Consistentieniveau overschrijven voor leesbewerkingen in Azure Cosmos DB voor Cassandra

Voorheen kon het consistentieniveau voor leesaanvragen alleen worden overschreven naar een lagere consistentie dan de standaardinstelling voor het account. Met de standaardconsistentie van Strong kunnen leesaanvragen bijvoorbeeld standaard worden uitgegeven met Strong en worden overschreven op aanvraagbasis (indien nodig) naar een consistentieniveau dat zwakker is dan Sterk. Leesaanvragen kunnen echter niet worden uitgegeven met een overschreven consistentieniveau dat hoger is dan de standaardinstelling van het account. Een account met uiteindelijke consistentie kan geen leesaanvragen met een consistentieniveau hoger dan Uiteindelijk ontvangen (dat in de Apache Cassandra-stuurprogramma's wordt omgezet in TWO, THREELOCAL_QUORUM of QUORUM).

Azure Cosmos DB voor Cassandra vereenvoudigt nu de consistentie van leesaanvragen naar een hogere waarde dan de standaardconsistentie van het account. Als de standaardconsistentie voor het Cosmos DB-account bijvoorbeeld is ingesteld op Eventual (Apache Cassandra-equivalent van One of ANY), kunnen leesaanvragen per aanvraag worden overschreven naar LOCAL_QUORUM. Deze onderdrukking zorgt ervoor dat een quorumaantal replica's binnen de opgegeven regio wordt geraadpleegd voordat de resultatenset wordt geretourneerd, zoals vereist door LOCAL_QUORUM.

Met deze optie voorkomt u ook dat u een standaardconsistentie moet instellen die hoger is dan Eventual, wanneer deze alleen nodig is voor leesaanvragen.