Aracılığıyla paylaş


Apache Cassandra için Apache Cassandra ve Azure Cosmos DB tutarlılık düzeyleri

ŞUNLAR IÇIN GEÇERLIDIR: Cassandra

Azure Cosmos DB'nin aksine Apache Cassandra, tam olarak tanımlanmış tutarlılık garantilerini yerel olarak sağlamaz. Bunun yerine Apache Cassandra, yüksek kullanılabilirlik, tutarlılık ve gecikme süresi dengelemelerini sağlamak için bir yazma tutarlılığı düzeyi ve okuma tutarlılığı düzeyi sağlar. Cassandra için Azure Cosmos DB kullanırken:

  • Apache Cassandra'nın yazma tutarlılık düzeyi, Azure Cosmos DB hesabınızda yapılandırılan varsayılan tutarlılık düzeyine eşlenir. Yazma işlemi (CL) için tutarlılık, istek başına temelinde değiştirilemez.
  • Azure Cosmos DB, Cassandra istemci sürücüsü tarafından belirtilen okuma tutarlılığı düzeyini dinamik olarak eşler. Tutarlılık düzeyi, okuma isteğinde dinamik olarak yapılandırılan Azure Cosmos DB tutarlılık düzeylerinden biriyle eşlenir.

Çok bölgeli yazma işlemleri ile tek bölgeli yazma işlemleri karşılaştırması

Apache Cassandra veritabanı varsayılan olarak çoklu ana sistemdir ve okumalar için çok bölgeli çoğaltma ile tek bölgeli yazma işlemleri için hazır seçenek sağlamaz. Ancak Azure Cosmos DB, tek bölgeye veya çok bölgeli yazma yapılandırmalarına sahip olmak için anahtar teslimi özellik sağlar. Birden çok bölgede tek bir bölge yazma yapılandırması seçebilmenin avantajlarından biri bölgeler arası çakışma senaryolarından kaçınma ve birden çok bölgede güçlü tutarlılık sağlama seçeneğidir.

Tek bölgeli yazma işlemleriyle güçlü tutarlılığı korurken, hizmet tarafından yönetilen yük devretme ile bölgeler arasında yüksek kullanılabilirlik düzeyini korumaya devam edebilirsiniz. Bu yapılandırmada, istek başına nihai tutarlılığa düşürerek okuma gecikmesini azaltmak için veri yerelliğinden yararlanmaya devam edebilirsiniz. Bu özelliklere ek olarak, Azure Cosmos DB platformu bir bölge seçerken alanlar arası yedeklilik seçeneği de sunar. Bu nedenle, yerel Apache Cassandra'nın aksine Azure Cosmos DB, CAP Teoremi denge spektrumunu daha ayrıntılı bir şekilde gezinmenizi sağlar.

Tutarlılık düzeylerini eşleme

Azure Cosmos DB platformu, çoğaltmayla ilgili olarak iyi tanımlanmış, iş kullanımına yönelik beş tutarlılık ayarı sunar. Bu tutarlılık ayarlarına yönelik dengeler CAP ve PACLC teoremleri tarafından tanımlanır. Bu yaklaşım Apache Cassandra'dan önemli ölçüde farklı olduğundan, Azure Cosmos DB tutarlılığını gözden geçirmek ve anlamak için zaman ayırmanızı öneririz. Alternatif olarak, Azure Cosmos DB platformunda tutarlılık ayarlarını anlamak için bu kısa video kılavuzunu gözden geçirebilirsiniz. Aşağıdaki tabloda, Cassandra için API kullanılırken Apache Cassandra ile Azure Cosmos DB tutarlılık düzeyleri arasındaki olası eşlemeler gösterilmektedir. Bu tabloda tek bölge için yapılandırmalar, tek bölgeli yazmalarla çok bölgeli okumalar ve çok bölgeli yazma işlemleri gösterilmektedir.

Eşlemeler

Not

Bunlar tam eşleme değildir. Bunun yerine Apache Cassandra'ya en yakın analogları sağladık ve en sağdaki sütundaki nitel farkları kesinleştirmeyi sağladık. Yukarıda belirtildiği gibi Azure Cosmos DB'nin tutarlılık ayarlarını gözden geçirmenizi öneririz.

ALL, EACH_QUOROM, QUOROM, LOCAL_QUORUMveya THREE Apache Cassandra'da yazma tutarlılığı

Apache okuma tutarlılığı Okuma: Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Strong
QUOROM Yerel bölge Strong
LOCAL_QUORUM Yerel bölge Strong
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Strong
THREE Yerel bölge Strong

Apache ve DSE Cassandra'dan farklı olarak Azure Cosmos DB varsayılan olarak bir çekirdek yazma işlemi yürütmektedir. Dört (3/4) düğümden en az üçünde diske yazma işlemi yapılır ve yalnızca bellek içi işleme günlüğü OLMAZ.

ONE, LOCAL_ONEveya ANY Apache Cassandra'da yazma tutarlılığı

Apache okuma tutarlılığı Okuma: Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Eventual
QUOROM Yerel bölge Eventual
LOCAL_QUORUM Yerel bölge Eventual
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Eventual
THREE Yerel bölge Eventual

Cassandra için Azure Cosmos DB API'sinde her zaman varsayılan olarak sabit bir çekirdek yazma işlemi yapılır, bu nedenle tüm okuma tutarlılıkları kullanılabilir.

TWO Apache Cassandra'da yazma tutarlılığı

Apache okuma tutarlılığı Okuma: Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Strong
QUOROM Yerel bölge Strong
LOCAL_QUORUM Yerel bölge Strong
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Eventual
THREE Yerel bölge Strong

Azure Cosmos DB'de yalnızca iki düğümde yazma tutarlılığı yoktur, bu nedenle çoğu durumda bu tutarlılığı çekirdekle benzer şekilde ele alırız. Okuma tutarlılığı TWOiçin, bu tutarlılık ile yazma ve okuma ONEile QUOROM eşdeğerdir.

Serialveya Local_Serial Apache Cassandra'da tutarlılık yazma

Apache okuma tutarlılığı Okuma: Apache Cassandra okuma/yazma ayarlarına en yakın Azure Cosmos DB tutarlılık düzeyi
ALL Yerel bölge Strong
EACH_QUOROM Yerel bölge Strong
QUOROM Yerel bölge Strong
LOCAL_QUORUM Yerel bölge Strong
LOCAL_ONE Yerel bölge Eventual
ONE Yerel bölge Eventual
TWO Yerel bölge Strong
THREE Yerel bölge Strong

Seri yalnızca basit işlemler için geçerlidir. Azure Cosmos DB varsayılan olarak sabit bir şekilde işlenen algoritmayı izler ve bu nedenle Serial tutarlılık çekirdekle benzerdir.

Tek bölgeli yazma için diğer bölgeler

Azure Cosmos DB, tek bölgeli yazma işlemlerinin yapılandırıldığı birden çok bölgede güçlü olmak üzere beş tutarlılık ayarı sağlar. Bölgeler birbirine 3000 km mesafede olduğu sürece bu kolaylaştırma gerçekleşir.

Tüm düğümler/bölgeler yazma işlemi olduğundan ve tüm bölgelerde güçlü bir tutarlılık garantisi mümkün olmadığından Azure Cosmos DB'nin Apache Cassandra'ya uygun bir eşlemesi yoktur.

Çok bölgeli yazma için diğer bölgeler

Azure Cosmos DB yalnızca dört tutarlılık ayarı sağlar; eventual, consistent prefix, sessionve bounded staleness çok bölgeli yazmanın yapılandırıldığı birden çok bölgede.

Apache Cassandra, ayarlardan bağımsız olarak diğer bölgelerdeki okumalar için yalnızca nihai tutarlılık sağlar.

Desteklenen dinamik geçersiz kılmalar

Azure Cosmos DB hesap ayarı İstemci isteğindeki değeri geçersiz kıl Geçersiz kılma efekti
Strong All Hiçbir etkisi yoktur (olarak strongkalır)
Strong Quorum Hiçbir etkisi yoktur (olarak strongkalır)
Strong LocalQuorum Hiçbir etkisi yoktur (olarak strongkalır)
Strong Two Hiçbir etkisi yoktur (olarak strongkalır)
Strong Three Hiçbir etkisi yoktur (olarak strongkalır)
Strong Serial Hiçbir etkisi yoktur (olarak strongkalır)
Strong LocalSerial Hiçbir etkisi yoktur (olarak strongkalır)
Strong One Tutarlılık değişiklikleri Eventual
Strong LocalOne Tutarlılık değişiklikleri Eventual
Strong Any İzin verilmiyor (hata)
Strong EachQuorum İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix All İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix Quorum İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix LocalQuorum İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix Two İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix Three İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix Serial İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix LocalSerial İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix One Tutarlılık değişiklikleri Eventual
Bounded staleness, session veya consistent prefix LocalOne Tutarlılık değişiklikleri Eventual
Bounded staleness, session veya consistent prefix Any İzin verilmiyor (hata)
Bounded staleness, session veya consistent prefix EachQuorum İzin verilmiyor (hata)

Ölçümler

Azure Cosmos DB hesabınız güçlü tutarlılık dışında bir tutarlılık düzeyiyle yapılandırılmışsa Olasılıksal Sınırlanmış Eskime (PBS) ölçümünü gözden geçirin. Ölçüm, istemcilerinizin iş yükleriniz için güçlü ve tutarlı okumalar alma olasılığını yakalar. Bu ölçüm Azure portalında kullanıma sunulur. PBS ölçümü hakkında daha fazla bilgi edinmek için bkz . Olasılıksal Sınırlanmış Eskime (PBS) ölçümünü izleme.

Olasılıksal olarak sınırlanmış eskime durumu nihai tutarlılığınızın ne kadar nihai olduğunu gösterir. Bu ölçüm, Azure Cosmos DB hesabınızda yapılandırdığınız tutarlılık düzeyinden ne sıklıkta daha güçlü bir tutarlılık elde ettiğinize ilişkin bir içgörü sağlar. Başka bir deyişle, yazma ve okuma bölgelerinin birleşimi için tutarlı okumalar alma olasılığını (milisaniye cinsinden ölçülür) görebilirsiniz.

Apache Cassandra'da yazma istekleri için genel güçlü tutarlılık

Apache Cassandra, veya QUORUM ayarı EACH_QUORUM güçlü bir tutarlılık sağlar. Bir bölgeye yazma isteği gönderildiğinde, EACH_QUORUM verileri her veri merkezindeki düğümlerin çekirdek sayısı içinde kalıcı hale döndürür. Bu kalıcılık, yazma işleminin başarılı olması için her veri merkezinin kullanılabilir olmasını gerektirir. QUORUM biraz daha az kısıtlayıcıdır ve QUORUM yazma işleminin başarılı olması için verileri kalıcı hale getirmek için gereken tüm veri merkezlerinde bir dizi düğüm bulunur.

Aşağıdaki grafikte Apache Cassandra'da iki bölge 1 ile 2 arasında genel olarak güçlü bir tutarlılık ayarı gösterilmektedir. Veriler bölge 1'e yazıldıktan sonra, uygulama tarafından bir onay alınmadan önce yazma işleminin hem bölge 1'deki hem de bölge 2'deki düğümlerin çekirdek sayısında kalıcı olması gerekir.

Apache Cassandra'da genel yazma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de yazma istekleri için genel güçlü tutarlılık

Azure Cosmos DB tutarlılığı hesap düzeyinde ayarlanır. Strong Cassandra için Azure Cosmos DB'de tutarlılık sayesinde veriler hesabın okuma bölgelerine zaman uyumlu olarak çoğaltılır. Azure Cosmos DB hesabının bölgeleri ne kadar ayrı olursa tutarlı yazma işlemlerinin gecikme süresi de o kadar yüksek olur.

Apache Cassandra için Azure Cosmos DB'de genel yazma tutarlılığı diyagramı.

Bölge sayısı okuma veya yazma isteğinizi nasıl etkiler:

  • İki bölge: Güçlü tutarlılık ile çekirdek (N/2 + 1) = 2. Bu nedenle, okuma bölgesi kapanırsa, yazma işleminin çoğaltılması için çekirdek sayısı kullanılamadığından, hesap artık güçlü tutarlılıkta yazmaları kabul edemez.
  • Üç veya daha fazla bölge: için N = 3, quorum = 2. Okuma bölgelerinden biri çalışmıyorsa, yazma bölgesi yine de yazma işlemini çekirdek gereksinimini karşılayan toplam iki bölgeye çoğaltabilir. Benzer şekilde, dört bölgeyle, quorum = 4/2 + 1 = 3. Tek bir okuma bölgesi kapatılırken bile çekirdek karşılanabilir.

Not

Tüm yazma işlemleri için küresel olarak güçlü bir tutarlılık gerekiyorsa Cassandra hesabı için Azure Cosmos DB tutarlılığı Güçlü olarak ayarlanmalıdır. Yazma işlemlerinin tutarlılık düzeyi, Azure Cosmos DB'de istek başına daha düşük bir tutarlılık düzeyine geçersiz kılınamaz.

Apache Cassandra'da yazma istekleri için daha zayıf tutarlılık

, , ONE, TWO, THREE, LOCAL_QUORUMSerial veya Local_Serial? tutarlılık düzeyi ANY altı düğümlü bir veri merkezinde ile 4 ile LOCAL_QUORUM RF bir yazma isteği düşünün. Quorum = 4/2 + 1 = 3.

Apache Cassandra'da genel olmayan yazma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de yazma istekleri için daha zayıf tutarlılık

Tutarlılık düzeylerinden herhangi biri değerinden Strongdaha düşük olan bir yazma isteği gönderildiğinde, yerel bölge dört çoğaltmadan en az üçindeki yazma işlemine devam eder etmez bir başarı yanıtı döndürülür.

Apache Cassandra için Azure Cosmos DB'de genel olmayan yazma tutarlılığı diyagramı.

Apache Cassandra'da okuma istekleri için genel güçlü tutarlılık

tutarlılığı ile EACH_QUORUMApache Cassandra'da tutarlı bir okuma elde edilebilir. içinde, her bölgede çekirdek düğüm sayısı karşılanmazsa için çok bölgeli bir kurulum EACH_QUORUM , okuma başarısız olur.

Apache Cassandra'da genel okuma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de okuma istekleri için genel güçlü tutarlılık

Okuma isteği, belirtilen bölgedeki iki çoğaltmadan sunulur. Yazma işlemi zaten bir bölge çekirdek sayısında (ve her bölge kullanılabilir durumdaysa tüm bölgelerde) kalıcı hale geldikten sonra, belirtilen bölgedeki iki çoğaltmadan okuma güçlü tutarlılık sağlar. Bu güçlü tutarlılık, Cosmos DB hesabı için bir bölgede okuma yapılırken sürücüde belirtilmesi ve hesap için varsayılan tutarlılık düzeyi olarak Güçlü Tutarlılık'ın belirtilmesi gerekir EACH_QUORUM .

Apache Cassandra için Azure Cosmos DB'de genel okuma tutarlılığı diyagramı.

Apache Cassandra'da yerel güçlü tutarlılık

tutarlılık düzeyi TWO, THREEveya LOCAL_QUORUM olan bir okuma isteği, yerel bölgeden güçlü tutarlılık okuması sağlamamızı sağlayacaktır. tutarlılık düzeyiyle LOCAL_QUORUM, başarılı bir okuma için belirtilen veri merkezinde iki düğümden yanıt almanız gerekir.

Apache Cassandra'da yerel güçlü okuma tutarlılığı diyagramı.

Apache Cassandra için Azure Cosmos DB'de yerel güçlü tutarlılık

Cassandra için Azure Cosmos DB'de tutarlılık düzeyine TWOTHREE sahip olmak veya LOCAL_QUORUM okuma isteği için yerel güçlü tutarlılık sağlar. Yazma yolu dört çoğaltmadan en az üçüne çoğaltmayı garanti ettiğinden, belirtilen bölgedeki iki çoğaltmadan okuma işlemi, o bölgedeki verilerin çekirdek okumasını garanti eder.

Apache Cassandra için Azure Cosmos DB'de yerel güçlü okuma tutarlılığı diyagramı.

Apache Cassandra'da nihai tutarlılık

tutarlılık düzeyi LOCAL_ONEOne ve ANY with LOCAL_ONE nihai tutarlılığa neden olur. Bu tutarlılık, odağın gecikme süresinde olduğu durumlarda kullanılır.

Apache Cassandra'da nihai okuma tutarlılığının diyagramı.

Apache Cassandra için Azure Cosmos DB'de nihai tutarlılık mı?

tutarlılık düzeyi LOCAL_ONEONE veya Any size nihai tutarlılık verir. Nihai tutarlılık ile, belirtilen bölgedeki çoğaltmalardan yalnızca birinden bir okuma sunulur.

Apache Cassandra için Azure Cosmos DB'de nihai okuma tutarlılığı diyagramı.

Cassandra için Azure Cosmos DB'de okuma işlemleri için tutarlılık düzeyini geçersiz kılma

Daha önce, okuma isteklerinin tutarlılık düzeyi yalnızca hesapta varsayılan olarak ayarlanandan daha düşük bir tutarlılık için geçersiz kılınabiliyordu. Örneğin, Varsayılan Güçlü tutarlılığıyla okuma istekleri varsayılan olarak Güçlü ile birlikte ve istek başına (gerekirse) Güçlü'den daha zayıf bir tutarlılık düzeyine geçersiz kılınabilir. Ancak, okuma istekleri hesabın varsayılan değerinden daha yüksek geçersiz kılınmış tutarlılık düzeyiyle verilemiyordu. Nihai tutarlılığa sahip bir hesap, Nihai'den daha yüksek bir tutarlılık düzeyine sahip okuma isteklerini alamadı (Apache Cassandra sürücülerinde , THREELOCAL_QUORUM veya QUORUMöğesine çevrilirTWO).

Cassandra için Azure Cosmos DB artık okuma isteklerindeki tutarlılığı hesabın varsayılan tutarlılığından daha yüksek bir değere geçersiz kılmayı kolaylaştırıyor. Örneğin, Cosmos DB hesabındaki varsayılan tutarlılık Nihai (Apache Cassandra eşdeğeri One veya ANY) olarak ayarlandığında, okuma istekleri istek başına olarak LOCAL_QUORUMolarak geçersiz kılınabilir. Bu geçersiz kılma, tarafından gerektiği LOCAL_QUORUMgibi sonuç kümesini döndürmeden önce belirtilen bölgedeki çoğaltmaların çekirdek sayısına başvurulmasını sağlar.

Bu seçenek, yalnızca okuma istekleri için gerekli olduğunda değerinden Eventualdaha yüksek bir varsayılan tutarlılık ayarlama gereksinimini de önler.

Sonraki adımlar

Azure Cosmos DB için genel dağıtım ve tutarlılık düzeyleri hakkında daha fazla bilgi edinin: