Consistentieniveaus van Apache Cassandra en Azure Cosmos DB voor Apache Cassandra

VAN TOEPASSING OP: Cassandra

In tegenstelling tot Azure Cosmos DB biedt Apache Cassandra niet systeemeigen nauwkeurig gedefinieerde consistentiegaranties. In plaats daarvan biedt Apache Cassandra een consistentieniveau voor schrijven en een consistentieniveau voor lezen, om de afwegingen tussen hoge beschikbaarheid, consistentie en latentie mogelijk te maken. Wanneer u Azure Cosmos DB voor Cassandra gebruikt:

  • Het consistentieniveau voor schrijven van Apache Cassandra is toegewezen aan het standaardconsistentieniveau dat is geconfigureerd voor uw Azure Cosmos DB-account. De consistentie voor een schrijfbewerking (CL) kan niet per aanvraag worden gewijzigd.
  • Azure Cosmos DB wijst dynamisch het consistentieniveau lezen 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

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

Met schrijfbewerkingen met één regio kunt u sterke consistentie behouden, terwijl u toch een niveau van hoge beschikbaarheid in verschillende regio's behoudt met failover die door de service wordt beheerd. In deze configuratie kunt u nog steeds gebruikmaken van de gegevenslocatie om de leeslatentie te verminderen door per aanvraag te downgraden naar uiteindelijke consistentie. 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 dus met meer granulariteit navigeren in het CAP-stellingspectrum .

Consistentieniveaus toewijzen

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

Toewijzingen

Notitie

Dit zijn geen exacte toewijzingen. In plaats daarvan hebben we de analogen die het dichtst bij Apache Cassandra liggen, 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

Apache-leesconsistentie Lezen van Het consistentieniveau van Azure Cosmos DB het dichtst bij de 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 standaard een quorumschrijfbewerking door. Ten minste drie van de vier (3/4) knooppunten voeren de schrijfbewerking door naar de schijf, en NIET alleen een doorvoerlogboek in het geheugen.

ONE, LOCAL_ONEof ANY schrijfconsistentie in Apache Cassandra

Apache-leesconsistentie Lezen van Het consistentieniveau van Azure Cosmos DB het dichtst bij de 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

De Azure Cosmos DB-API voor Cassandra voert altijd standaard een quorum-schrijfbewerking door. Daarom kunnen alle leesopgaven worden gebruikt.

TWO schrijfconsistentie in Apache Cassandra

Apache-leesconsistentie Lezen van Het consistentieniveau van Azure Cosmos DB het dichtst bij de 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 notie van schrijfconsistentie naar slechts twee knooppunten. Daarom behandelen we deze consistentie in de meeste gevallen als quorum. Voor leesconsistentie TWOis deze consistentie gelijk aan schrijven met QUOROM en lezen van ONE.

Serialof Local_Serial schrijfconsistentie in Apache Cassandra

Apache-leesconsistentie Lezen van Het consistentieniveau van Azure Cosmos DB het dichtst bij de 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 met één regio

Azure Cosmos DB faciliteert vijf consistentie-instellingen, waaronder sterk, in meerdere regio's waar schrijfbewerkingen van één regio zijn geconfigureerd. Deze versoepeling 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 voor alle regio's.

Andere regio's voor schrijven in meerdere regio's

Azure Cosmos DB faciliteert slechts vier consistentie-instellingen; eventual, consistent prefix, sessionen 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.

Dynamische onderdrukkingen worden ondersteund

Azure Cosmos DB-accountinstelling Waarde in clientaanvraag overschrijven Onderdrukkingseffect
Strong All Geen effect (blijf als strong)
Strong Quorum Geen effect (blijf als strong)
Strong LocalQuorum Geen effect (blijf als strong)
Strong Two Geen effect (blijf als strong)
Strong Three Geen effect (blijf als strong)
Strong Serial Geen effect (blijf als strong)
Strong LocalSerial Geen effect (blijf als strong)
Strong One Consistentie verandert in Eventual
Strong LocalOne Consistentie verandert 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 Consistentie verandert in Eventual
Bounded staleness, session of consistent prefix LocalOne Consistentie verandert in Eventual
Bounded staleness, session of consistent prefix Any Niet toegestaan (fout)
Bounded staleness, session of consistent prefix EachQuorum Niet toegestaan (fout)

Metrische gegevens

Als uw Azure Cosmos DB-account is geconfigureerd met een ander consistentieniveau dan de sterke consistentie, raadpleegt u de metrische gegevens probabilistically Bounded Staleness (PBS). De metrische waarde legt de kans vast dat uw clients sterke en consistente leesbewerkingen voor uw workloads kunnen krijgen. Deze metrische gegevens worden weergegeven in de Azure Portal. Zie Metrische gegevens van Probabilistically Bounded Staleness (PBS) bewaken voor meer informatie over de pbs-metrische gegevens.

Probabilistisch gebonden veroudering laat zien hoe uiteindelijk uw uiteindelijke consistentie is. Deze metrische gegevens bieden inzicht in hoe vaak u een sterkere consistentie kunt krijgen dan het consistentieniveau dat u momenteel hebt geconfigureerd voor 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 bewaard in een quorumaantal knooppunten in elk datacenter. Deze persistentie vereist dat elk datacenter beschikbaar is om de schrijfbewerking te laten slagen. QUORUM is iets minder beperkend, met een QUORUM aantal knooppunten in alle datacenters die nodig zijn om de gegevens te behouden voordat wordt erkend dat de schrijfbewerking is geslaagd.

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

Diagram van algemene schrijfconsistentie in Apache Cassandra.

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

In Azure Cosmos DB wordt consistentie 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 uit elkaar liggen, hoe hoger de latentie van de consistente schrijfbewerkingen.

Diagram van algemene 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. Als de leesregio uitvalt, kan het account schrijfbewerkingen met sterke consistentie dus niet meer accepteren, omdat er geen quorumaantal regio's beschikbaar is om de schrijfbewerking naar te repliceren.
  • Drie of meer regio's: voor N = 3, quorum = 2. Als een van de leesregio's offline 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 niet beschikbaar is, 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 per aanvraag worden overschreven naar een lager consistentieniveau in Azure Cosmos DB.

Zwakkere consistentie voor schrijfaanvragen in Apache Cassandra

Een consistentieniveau van ANY, ONE, TWO, THREE, LOCAL_QUORUM, of Local_SerialSerial ? Overweeg een schrijfaanvraag met LOCAL_QUORUM met 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 een geslaagd antwoord geretourneerd zodra de lokale regio de schrijfbewerking in ten minste drie van de vier replica's heeft bewaard.

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

Globale sterke consistentie voor leesaanvragen in Apache Cassandra

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

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 het schrijven al heeft gezorgd voor het behouden van een quorumaantal regio's (en alle regio's als elke regio beschikbaar was), biedt het eenvoudigweg lezen van twee replica's in de opgegeven regio de consistentie Sterk. 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 algemene leesconsistentie in Azure Cosmos DB voor Apache Cassandra.

Lokale sterke consistentie in Apache Cassandra

Een leesaanvraag met het consistentieniveau TWO, THREEof LOCAL_QUORUM geeft ons sterke consistentieleesbewerkingen uit de lokale regio. Met een consistentieniveau van LOCAL_QUORUMhebt u 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 geeft een consistentieniveau van TWO, THREE of 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_ONE, One en ANY with LOCAL_ONE resulteert in uiteindelijke consistentie. Deze consistentie wordt gebruikt in gevallen waarin de focus ligt op latentie.

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 vanuit slechts één 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 Sterk kunnen leesaanvragen bijvoorbeeld standaard worden uitgegeven met Sterk en worden overschreven per aanvraag (indien nodig) tot 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 ontvangen met een consistentieniveau hoger dan Eventual (wat in de Apache Cassandra-stuurprogramma's worden omgezet in TWO, THREEof LOCAL_QUORUMQUORUM).

Azure Cosmos DB voor Cassandra faciliteert nu het overschrijven van de consistentie bij leesaanvragen naar een waarde die hoger is dan de standaardconsistentie van het account. Als de standaardconsistentie voor het Cosmos DB-account bijvoorbeeld is ingesteld op Uiteindelijk (Apache Cassandra-equivalent van One of ANY), kunnen leesaanvragen per aanvraag worden overschreven naar LOCAL_QUORUM. Deze overschrijving 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 hoeft in te stellen die hoger is dan Eventual, wanneer deze alleen nodig is voor leesaanvragen.

Volgende stappen

Meer informatie over wereldwijde distributie- en consistentieniveaus voor Azure Cosmos DB: