Megosztás a következőn keresztül:


Apache Cassandra és Azure Cosmos DB az Apache Cassandra konzisztenciaszintjeihez

A KÖVETKEZŐKRE VONATKOZIK: Cassandra

Az Azure Cosmos DB-től eltérően az Apache Cassandra nem nyújt natív módon pontos konzisztenciagaranciát. Ehelyett az Apache Cassandra írási konzisztenciaszintet és olvasási konzisztenciaszintet biztosít a magas rendelkezésre állás, a konzisztencia és a késés kompromisszumoinek lehetővé tételéhez. Az Azure Cosmos DB cassandra-hoz való használatakor:

  • Az Apache Cassandra írási konzisztenciaszintje az Azure Cosmos DB-fiókban konfigurált alapértelmezett konzisztenciaszintre van leképezve. Az írási művelet (CL) konzisztenciája kérésenként nem módosítható.
  • Az Azure Cosmos DB dinamikusan leképzi a Cassandra-ügyfélillesztő által megadott olvasási konzisztenciaszintet. A konzisztenciaszint az olvasási kérelemben dinamikusan konfigurált Azure Cosmos DB-konzisztenciaszintek egyikére lesz leképezve.

Többrégiós írások és egyrégiós írások

Az Apache Cassandra-adatbázis alapértelmezés szerint egy több főkiszolgálós rendszer, és nem biztosít beépített beállítást az olvasásokhoz többrégiós replikációval rendelkező egyrégiós írásokhoz. Az Azure Cosmos DB azonban kulcsrakész képességet biztosít egyetlen vagy többrégiós írási konfigurációkhoz. Az egyetlen régió írási konfigurációjának több régióban való kiválasztásának egyik előnye a régiók közötti ütközési forgatókönyvek elkerülése, valamint az erős konzisztencia fenntartása több régióban.

Az egyrégiós írásokkal megőrizheti az erős konzisztenciát, miközben továbbra is magas rendelkezésre állást tart fenn a szolgáltatások által felügyelt feladatátvétellel rendelkező régiók között. Ebben a konfigurációban továbbra is kihasználhatja az adat honosságát az olvasási késés csökkentése érdekében, ha kérésenként a végleges konzisztenciára vált. Ezen képességek mellett az Azure Cosmos DB-platform zónaredundanciát is kínál egy régió kiválasztásakor. Így a natív Apache Cassandra-val ellentétben az Azure Cosmos DB lehetővé teszi, hogy részletesebben navigáljon a CAP Theorem kompromisszumos spektrumában .

Konzisztenciaszintek leképezése

Az Azure Cosmos DB platform öt jól definiált, üzleti használatra vonatkozó konzisztenciabeállítást biztosít a replikáció tekintetében. A konzisztenciabeállítások kompromisszumoit a CAP és a PACLC-tétel határozza meg. Mivel ez a megközelítés jelentősen eltér az Apache Cassandra-tól, javasoljuk, hogy szánjon időt az Azure Cosmos DB konzisztenciájának áttekintésére és megértésére. Másik lehetőségként tekintse át ezt a rövid videós útmutatót az Azure Cosmos DB platform konzisztenciabeállításainak megértéséhez. Az alábbi táblázat az Apache Cassandra és az Azure Cosmos DB konzisztenciaszintjei közötti lehetséges leképezéseket mutatja be a Cassandra API használatakor. Ez a táblázat az egyrégiós konfigurációkat, a többrégiós olvasásokat egyrégiós írásokkal és a többrégiós írásokat mutatja be.

Leképezések

Feljegyzés

Ezek nem pontos leképezések. Ehelyett az Apache Cassandra legközelebbi analógjait biztosítottuk, és egyértelműsítettük a jobb szélső oszlop minőségi különbségeit. Ahogy fentebb említettük, javasoljuk, hogy tekintse át az Azure Cosmos DB konzisztenciabeállításait.

ALL, EACH_QUOROM, QUOROM, LOCAL_QUORUMvagy THREE írási konzisztencia az Apache Cassandra-ban

Apache olvasási konzisztencia Olvasás innen: Az Azure Cosmos DB konzisztenciaszintje az Apache Cassandra olvasási/írási beállításaihoz legközelebbi
ALL Helyi régió Strong
EACH_QUOROM Helyi régió Strong
QUOROM Helyi régió Strong
LOCAL_QUORUM Helyi régió Strong
LOCAL_ONE Helyi régió Eventual
ONE Helyi régió Eventual
TWO Helyi régió Strong
THREE Helyi régió Strong

Az Apache-tól és a DSE Cassandra-tól eltérően az Azure Cosmos DB alapértelmezés szerint véglegesít egy kvórumírást. Négy (3/4) csomópontból legalább három véglegesíti az írást a lemezre, és NEM csak egy memórián belüli véglegesítési naplót.

ONE, vagy LOCAL_ONEANY írási konzisztencia az Apache Cassandra-ban

Apache olvasási konzisztencia Olvasás innen: Az Azure Cosmos DB konzisztenciaszintje az Apache Cassandra olvasási/írási beállításaihoz legközelebbi
ALL Helyi régió Strong
EACH_QUOROM Helyi régió Eventual
QUOROM Helyi régió Eventual
LOCAL_QUORUM Helyi régió Eventual
LOCAL_ONE Helyi régió Eventual
ONE Helyi régió Eventual
TWO Helyi régió Eventual
THREE Helyi régió Eventual

A Cassandra-hoz készült Azure Cosmos DB API mindig tartósan véglegesíti a kvórum írását alapértelmezés szerint, ezért minden olvasási konzisztencia használható.

TWO írási konzisztencia az Apache Cassandra-ban

Apache olvasási konzisztencia Olvasás innen: Az Azure Cosmos DB konzisztenciaszintje az Apache Cassandra olvasási/írási beállításaihoz legközelebbi
ALL Helyi régió Strong
EACH_QUOROM Helyi régió Strong
QUOROM Helyi régió Strong
LOCAL_QUORUM Helyi régió Strong
LOCAL_ONE Helyi régió Eventual
ONE Helyi régió Eventual
TWO Helyi régió Eventual
THREE Helyi régió Strong

Az Azure Cosmos DB nem rendelkezik azzal a fogalmaval, hogy csak két csomóponton legyen írási konzisztencia, ezért ezt a konzisztenciát a legtöbb esetben a kvórumhoz hasonlóan kezeljük. Az olvasási konzisztencia TWOesetében ez a konzisztencia egyenértékű az írással és a forrásból való olvasással QUOROMONE.

Serial, vagy Local_Serial írási konzisztencia az Apache Cassandra-ban

Apache olvasási konzisztencia Olvasás innen: Az Azure Cosmos DB konzisztenciaszintje az Apache Cassandra olvasási/írási beállításaihoz legközelebbi
ALL Helyi régió Strong
EACH_QUOROM Helyi régió Strong
QUOROM Helyi régió Strong
LOCAL_QUORUM Helyi régió Strong
LOCAL_ONE Helyi régió Eventual
ONE Helyi régió Eventual
TWO Helyi régió Strong
THREE Helyi régió Strong

A sorozatszám csak az egyszerűsített tranzakciókra vonatkozik. Az Azure Cosmos DB alapértelmezés szerint egy tartósan lekötött algoritmust követ, ezért Serial a konzisztencia a kvórumhoz hasonló.

Az egyrégiós írás egyéb régiói

Az Azure Cosmos DB öt konzisztenciabeállítást tesz lehetővé, beleértve az erős beállításokat is, több régióban, ahol az egyrégiós írások konfigurálva vannak. Ez a könnyítés addig történik, amíg a régiók egymástól 2000 mérfölden belül vannak.

Az Azure Cosmos DB nem rendelkezik az Apache Cassandra-ra vonatkozó leképezéssel, mivel minden csomópont/régió írásra szolgál, és az erős konzisztenciagarancia nem minden régióban lehetséges.

Más régiók többrégiós íráshoz

Az Azure Cosmos DB csak négy konzisztenciabeállítást tesz lehetővé; eventual, consistent prefix, sessionés bounded staleness több régióban, ahol többrégiós írás van konfigurálva.

Az Apache Cassandra csak a beállításoktól függetlenül biztosítana végleges konzisztenciát az olvasáshoz más régiókban.

Támogatott dinamikus felülbírálások

Azure Cosmos DB-fiókbeállítás Felülbírálási érték az ügyfélkérésben Felülbírálási effektus
Strong All Nincs hatás (változatlanul strong)
Strong Quorum Nincs hatás (változatlanul strong)
Strong LocalQuorum Nincs hatás (változatlanul strong)
Strong Two Nincs hatás (változatlanul strong)
Strong Three Nincs hatás (változatlanul strong)
Strong Serial Nincs hatás (változatlanul strong)
Strong LocalSerial Nincs hatás (változatlanul strong)
Strong One Konzisztenciaváltozások a Eventual
Strong LocalOne Konzisztenciaváltozások a Eventual
Strong Any Nem engedélyezett (hiba)
Strong EachQuorum Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix All Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix Quorum Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix LocalQuorum Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix Two Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix Three Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix Serial Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix LocalSerial Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix One Konzisztenciaváltozások a Eventual
Bounded staleness, session vagy consistent prefix LocalOne Konzisztenciaváltozások a Eventual
Bounded staleness, session vagy consistent prefix Any Nem engedélyezett (hiba)
Bounded staleness, session vagy consistent prefix EachQuorum Nem engedélyezett (hiba)

Mérőszámok

Ha az Azure Cosmos DB-fiók konzisztenciaszintje nem az erős konzisztenciaszinttel van konfigurálva, tekintse át a probabilitásilag határolt elavultság (PBS) metrikát. A metrika rögzíti annak valószínűségét, hogy az ügyfelek erős és konzisztens olvasást kapnak a számítási feladatokhoz. Ez a metrika az Azure Portalon érhető el. A PBS-metrikával kapcsolatos további információkért lásd : Monitor Probabilistically Bounded Staleness (PBS) metrika.

A valószínűség szerint korlátozott elavultság azt mutatja, hogy milyen végleges a végleges konzisztencia. Ez a metrika bemutatja, hogy milyen gyakran kaphat erősebb konzisztenciát, mint az Azure Cosmos DB-fiókban jelenleg konfigurált konzisztenciaszint. Más szóval látható annak a valószínűsége (ezredmásodpercben mérve), hogy konzisztens olvasást kap az írási és olvasási régiók kombinációjához.

Az Apache Cassandra írási kéréseinek globális erős konzisztenciája

Apache Cassandra, a beállítás, EACH_QUORUM vagy QUORUM ad egy erős konzisztencia. Amikor egy írási kérést küld egy régiónak, EACH_QUORUM az adatokat az egyes adatközpontokban lévő csomópontok kvórumszámában megőrzi. Ehhez az adatmegőrzéshez minden adatközpontnak rendelkezésre kell állnia ahhoz, hogy az írási művelet sikeres legyen. QUORUM kissé kevésbé korlátozó, és QUORUM az összes adatközpontban számos csomópont szükséges az adatok megőrzéséhez az írás sikerességének elismerése előtt.

Az alábbi ábra az Apache Cassandra globális erős konzisztenciabeállítását mutatja be két 1. és 2. régió között. Az adatok 1. régióba történő írása után az írást az 1. és a 2. régió csomópontjainak kvórumszámában kell őrizni, mielőtt az alkalmazás nyugtát kap.

Az Apache Cassandra globális írási konzisztenciájának diagramja.

Az Apache Cassandra-hoz készült Azure Cosmos DB írási kéréseinek globális erős konzisztenciája

Az Azure Cosmos DB-ben a konzisztencia a fiók szintjén van beállítva. Az Azure Cosmos DB for Cassandra konzisztenciájával Strong az adatok szinkron módon replikálódnak a fiók olvasási régióiba. Minél távolabb vannak az Azure Cosmos DB-fiók régiói, annál nagyobb a konzisztens írási műveletek késése.

Az Apache Cassandra-hoz készült Azure Cosmos DB globális írási konzisztenciájának diagramja.

Hogyan befolyásolja a régiók száma az olvasási vagy írási kérést:

  • Két régió: Erős konzisztenciával, kvórum (N/2 + 1) = 2. Ha tehát az olvasási régió leáll, a fiók már nem tud erős konzisztenciával rendelkező írásokat elfogadni, mivel a régiók kvórumszáma nem érhető el az írás replikálásához.
  • Három vagy több régió: a N = 3. quorum = 2 Ha az olvasási régiók egyike le van állítva, az írási régió továbbra is replikálhatja az írásokat összesen két olyan régióba, amelyek megfelelnek a kvórumkövetelménynek. Hasonlóképpen, négy régióval, quorum = 4/2 + 1 = 3. A kvórum akkor is teljesíthető, ha egy olvasási régió le van állítva.

Feljegyzés

Ha minden írási művelethez globálisan erős konzisztencia szükséges, akkor az Azure Cosmos DB for Cassandra-fiók konzisztenciáját erősre kell állítani. Az írási műveletek konzisztenciaszintje nem írható felül kérésenként alacsonyabb konzisztenciaszintre az Azure Cosmos DB-ben.

Az Apache Cassandra írási kérelmeinek gyengébb konzisztenciája

Konzisztenciaszint , ANYONE, TWO, THREE, LOCAL_QUORUMSerial vagy Local_Serial? Fontolja meg egy írási kérést LOCAL_QUORUM egy 4RF hatcsomópontos adatközpontban. Quorum = 4/2 + 1 = 3.

Az Apache Cassandra nem globális írási konzisztenciájának diagramja.

Az Apache Cassandra-hoz készült Azure Cosmos DB írási kérelmeinek gyengébb konzisztenciája

Ha egy írási kérelmet a konzisztenciaszintek bármelyike alacsonyabb Strong, a rendszer azonnal sikeres választ ad vissza, amint a helyi régió négy replikából legalább háromban megőrzi az írást.

Az Apache Cassandra-hoz készült Azure Cosmos DB nem globális írási konzisztenciájának diagramja.

Az Apache Cassandra olvasási kéréseinek globális erős konzisztenciája

Konzisztenciával EACH_QUORUMkonzisztens olvasás érhető el az Apache Cassandra-ban. Ha a csomópontok kvórumszáma nem teljesül minden régióban, EACH_QUORUM akkor az olvasás sikertelen lesz.

Az Apache Cassandra globális olvasási konzisztenciájának diagramja.

Az Olvasási kérelmek globális erős konzisztenciája az Apache Cassandra-hoz készült Azure Cosmos DB-ben

Az olvasási kérést a megadott régió két replikája szolgáltatja. Mivel az írás már gondoskodott a régiók kvórumszámának megőrzéséről (és minden régióról, ha minden régió elérhető volt), a megadott régió két replikájának olvasása erős konzisztenciát biztosít. Ezt az erős konzisztenciát meg kell EACH_QUORUM adni az illesztőprogramban, amikor a Cosmos DB-fiók egy régiója felé adja ki az olvasást, valamint a fiók alapértelmezett konzisztenciaszintjeként az erős konzisztenciaszintet.

Az Apache Cassandra-hoz készült Azure Cosmos DB globális olvasási konzisztenciájának diagramja.

Helyi erős konzisztencia az Apache Cassandra-ban

Az olvasási kérelem konzisztenciájú TWO, THREEvagy LOCAL_QUORUM erős konzisztenciát biztosít a helyi régióból. A konzisztenciaszinttel LOCAL_QUORUMa megadott adatközpont két csomópontjáról kell választ adnia a sikeres olvasáshoz.

Az Apache Cassandra helyi erős olvasási konzisztenciájának diagramja.

Helyi erős konzisztencia az Apache Cassandra-hoz készült Azure Cosmos DB-ben

A Cassandra-hoz készült Azure Cosmos DB-ben konzisztenciaszinttel TWOrendelkezik, THREE vagy LOCAL_QUORUM helyi erős konzisztenciát biztosít egy olvasási kéréshez. Mivel az írási útvonal négy replikából legalább háromra garantálja a replikálást, a megadott régió két replikájából származó olvasás garantálja az adott régióban lévő adatok kvórumolvasását.

Az Apache Cassandra-hoz készült Azure Cosmos DB helyi erős olvasási konzisztenciájának diagramja.

Végleges konzisztencia az Apache Cassandra-ban

A konzisztencia szintje LOCAL_ONE, One és ANY with LOCAL_ONE végső konzisztenciát eredményez. Ezt a konzisztenciát olyan esetekben használják, amikor a fókusz a késésre összpontosít.

Az Apache Cassandra végső olvasási konzisztenciájának diagramja.

Végleges konzisztencia az Apache Cassandra-hoz készült Azure Cosmos DB-ben?

A konzisztencia szintje LOCAL_ONE, ONE vagy Any végleges konzisztenciát ad. A végleges konzisztenciával a rendszer csak a megadott régió egyik replikájából szolgáltat olvasást.

Az Apache Cassandra-hoz készült Azure Cosmos DB végső olvasási konzisztenciájának diagramja.

Az olvasási műveletek konzisztenciaszintje felülbírálása a Cassandra Azure Cosmos DB-ben

Korábban az olvasási kérelmek konzisztenciaszintje csak a fiók alapértelmezett beállításánál alacsonyabb konzisztenciaszintre volt felülírva. Az Erős alapértelmezett konzisztenciájával például az olvasási kérelmeket alapértelmezés szerint erőssel lehet kiadni, és kérésenként felül lehet bírálni (szükség esetén) az Erősnél gyengébb konzisztenciaszintre. Az olvasási kérelmeket azonban nem lehetett a fiók alapértelmezettnél magasabb konzisztenciaszinttel kibocsátani. Az Végleges konzisztenciával rendelkező fiókok nem fogadhatnak olyan olvasási kéréseket, amelyek konzisztenciaszintje magasabb, mint az Eventual (amely az Apache Cassandra illesztőprogramjaiban lefordítva TWOaz , THREELOCAL_QUORUM vagy QUORUM).

Az Azure Cosmos DB for Cassandra mostantól lehetővé teszi a fiók alapértelmezett konzisztenciájánál magasabb értékű olvasási kérelmek konzisztenciájának felülbírálását. Ha például a Cosmos DB-fiók alapértelmezett konzisztenciája Végleges (Az Apache Cassandra megfelelője One vagy ANY), az olvasási kérelmek felülbírálása kérésenként LOCAL_QUORUMtörténik. Ez a felülbírálás biztosítja, hogy a megadott régión belüli replikák kvórumszámával a rendszer az eredményhalmaz visszaadása előtt, a szükséges LOCAL_QUORUMmódon tekintse meg.

Ez a beállítás azt is megakadályozza, hogy olyan alapértelmezett konzisztenciát állítson be, amely magasabb, mint Eventualaz olvasási kérelmek esetében.

Következő lépések

További információ az Azure Cosmos DB globális terjesztési és konzisztenciaszintjeiről: