Azure Cosmos DB ile küresel veri dağıtımı - arka planda

ŞUNLAR IÇIN GEÇERLIDIR: Nosql MongoDB Cassandra Gremlin Tablo

Azure Cosmos DB, Azure'da temel bir hizmet olduğundan genel, bağımsız, Savunma Bakanlığı (DoD) ve kamu bulutları dahil olmak üzere dünya genelindeki tüm Azure bölgelerine dağıtılır.

Yüksek düzeyde, Azure Cosmos DB kapsayıcı verileri her bölgede yazmaları çoğaltan birçok çoğaltma kümesine yatay olarak bölümlenmiştir . Çoğaltma kümeleri, yazmaları çoğunluk çekirdeği kullanarak sabit bir şekilde işler.

Her bölge bir Azure Cosmos DB kapsayıcısının tüm veri bölümlerini içerir ve çok bölgeli yazmalar etkinleştirildiğinde okuma ve yazma işlemleri yapabilir. Azure Cosmos DB hesabınız N Azure bölgeleri arasında dağıtılmışsa tüm verilerinizin en az N x 4 kopyası olur.

Bir veri merkezinde Azure Cosmos DB'yi her biri ayrılmış yerel depolama alanına sahip çok büyük makine damgalarına dağıtır ve yönetiriz. Bir veri merkezinde Azure Cosmos DB birçok kümeye dağıtılır ve her biri birden çok nesil donanım çalıştırır. Bir küme içindeki makineler genellikle bir bölgede yüksek kullanılabilirlik için 10-20 hata etki alanına yayılır. Aşağıdaki görüntüde Azure Cosmos DB genel dağıtım sistemi topolojisi gösterilmektedir:

Sistem Topolojisi

Azure Cosmos DB'de genel dağıtım anahtar teslimidir: İstediğiniz zaman, birkaç tıklamayla veya tek bir API çağrısıyla program aracılığıyla Azure Cosmos DB veritabanınızla ilişkili coğrafi bölgeleri ekleyebilir veya kaldırabilirsiniz. Azure Cosmos DB veritabanı da bir dizi Azure Cosmos DB kapsayıcıdan oluşur. Azure Cosmos DB'de kapsayıcılar, mantıksal dağıtım ve ölçeklenebilirlik birimleri görevi görür. Oluşturduğunuz koleksiyonlar, tablolar ve grafikler yalnızca Azure Cosmos DB kapsayıcılarıdır (dahili olarak). Kapsayıcılar tamamen şemadan bağımsızdır ve sorgu için bir kapsam sağlar. Azure Cosmos DB kapsayıcısı içindeki veriler, veri alımı sırasında otomatik olarak dizine eklenir. Otomatik dizin oluşturma, özellikle genel olarak dağıtılmış bir kurulumda kullanıcıların şema veya dizin yönetimi zahmetine girmeden verileri sorgulamasına olanak tanır.

  • Belirli bir bölgede kapsayıcı içindeki veriler, sağladığınız bölüm anahtarı kullanılarak dağıtılır ve temel alınan fiziksel bölümler (yerel dağıtım) tarafından saydam bir şekilde yönetilir.

  • Her fiziksel bölüm coğrafi bölgeler arasında da çoğaltılır (genel dağıtım).

Azure Cosmos DB kullanan bir uygulama bir Azure Cosmos DB kapsayıcısı üzerinde aktarım hızını esnek bir şekilde ölçeklendirdiğinde veya daha fazla depolama alanı tükettiğinde, Azure Cosmos DB tüm bölgelerde bölüm yönetimi işlemlerini (bölme, kopyalama, silme) saydam bir şekilde işler. Ölçek, dağıtım veya hatalardan bağımsız olarak Azure Cosmos DB, kapsayıcılardaki verilerin herhangi bir sayıda bölgeye genel olarak dağıtılan tek bir sistem görüntüsünü sağlamaya devam eder.

Aşağıdaki görüntüde gösterildiği gibi, kapsayıcı içindeki veriler iki boyut boyunca (bir bölge içinde ve bölgeler arasında, dünya çapında) dağıtılır:

fiziksel bölümler

Fiziksel bölüm, çoğaltma kümesi olarak adlandırılan bir çoğaltma grubu tarafından uygulanır. Her makine, yukarıdaki görüntüde gösterildiği gibi sabit bir işlem kümesi içinde çeşitli fiziksel bölümlere karşılık gelen yüzlerce çoğaltma barındırıyor. Fiziksel bölümlere karşılık gelen çoğaltmalar, küme içindeki makineler ve bir bölge içindeki veri merkezleri arasında dinamik olarak yerleştirilir ve yük dengelemesi yapılır.

Çoğaltma benzersiz olarak bir Azure Cosmos DB kiracısına aittir. Her çoğaltma, Azure Cosmos DB'nin kaynakları ve ilişkili dizinleri yöneten veritabanı altyapısının bir örneğini barındırmaktadır. Azure Cosmos DB veritabanı altyapısı, atom kayıt sırası (ARS) tabanlı bir tür sisteminde çalışır. Altyapı, şema kavramından bağımsızdır ve kayıtların yapısı ve örnek değerleri arasındaki sınırı bulanıklaştırabilir. Azure Cosmos DB, veri alımı sırasında her şeyi verimli bir şekilde otomatik olarak dizine alarak tam şemadan bağımsızlığa ulaşır ve bu sayede kullanıcılar şema veya dizin yönetimiyle uğraşmak zorunda kalmadan genel olarak dağıtılan verilerini sorgular.

Azure Cosmos DB veritabanı altyapısı, çeşitli koordinasyon temel öğelerinin uygulanması, dil çalışma zamanları, sorgu işlemcisi ve işlemsel depolama ve verilerin dizinlenmesinden sorumlu depolama ve dizin oluşturma alt sistemlerinin uygulanması da dahil olmak üzere bileşenlerden oluşur. Dayanıklılık ve yüksek kullanılabilirlik sağlamak için veritabanı altyapısı, verilerini ve dizinini SSD'lerde kalıcı hale getirmekte ve sırasıyla çoğaltma kümelerindeki veritabanı altyapısı örnekleri arasında çoğaltmaktadır. Daha büyük kiracılar daha yüksek aktarım hızı ve depolama ölçeğine karşılık gelir ve daha büyük veya daha fazla çoğaltmaya ya da her ikisine de sahiptir. Sistemin her bileşeni tamamen zaman uyumsuzdur; hiçbir iş parçacığı bloklamaz ve her iş parçacığı gereksiz iş parçacığı anahtarına neden olmadan kısa süreli işler yapar. Hız sınırlama ve geri basınç, giriş denetiminden tüm G/Ç yollarına kadar tüm yığın boyunca sıhhi olarak kullanılır. Azure Cosmos DB veritabanı altyapısı, ayrıntılı eşzamanlılık özelliğinden yararlanmak ve yüksek aktarım hızı sağlamak için tasarlanmıştır. Bu altyapı, çok sayıda sistem kaynağı içinde çalışır.

Azure Cosmos DB'nin genel dağıtımı iki temel soyutlama kullanır: çoğaltma kümeleri ve bölüm kümeleri. Çoğaltma kümesi, koordinasyon için modüler bir Lego bloğudur ve bölüm kümesi ise coğrafi olarak dağıtılmış bir veya daha fazla fiziksel bölümün dinamik yer paylaşımıdır. Genel dağıtımın nasıl çalıştığını anlamak için bu iki temel soyutlamayı anlamamız gerekir.

Çoğaltma kümeleri

Fiziksel bölüm, çoğaltma kümesi olarak adlandırılan birden çok hata etki alanına yayılmış, kendi kendine yönetilen ve dinamik olarak yük dengeli bir çoğaltma grubu olarak gerçekleştirilir. Bu küme, fiziksel bölümdeki verileri yüksek oranda kullanılabilir, dayanıklı ve tutarlı hale getirmek için çoğaltılmış durum makine protokollerini toplu olarak uygular. Çoğaltma kümesi üyeliği N dinamiktir; hatalara, yönetim işlemlerine ve başarısız çoğaltmaların yeniden oluşturulup kurtarılma süresine bağlı olarak NMin ile NMax arasında dalgalanmaya devam eder. Üyelik değişikliklerine bağlı olarak, çoğaltma protokolü okuma ve yazma çekirdeklerinin boyutunu da yeniden yapılandırmaktadır. Belirli bir fiziksel bölüme atanan aktarım hızını tekdüzen dağıtmak için iki fikir kullanırız:

  • İlk olarak, yazma isteklerini öncüde işlemenin maliyeti, güncelleştirmeleri takip edene uygulama maliyetinden daha yüksektir. Buna karşılık lider, takipçilerden daha fazla sistem kaynağı için bütçeye ayrılmıştır.

  • İkinci olarak, mümkün olduğunca, belirli bir tutarlılık düzeyi için okuma çekirdeği yalnızca takipçi çoğaltmalarından oluşur. Gerekli olmadıkça okumaları sunma konusunda liderle iletişime geçmekten kaçınıyoruz. Azure Cosmos DB'nin desteklediği beş tutarlılık modeli için çekirdek tabanlı sistemlerdeki yük ve kapasite ilişkisiyle ilgili yapılan araştırmalardan bir dizi fikir edindik.

Bölüm kümeleri

Azure Cosmos DB veritabanı bölgeleriyle yapılandırılan her birinden bir grup fiziksel bölüm, yapılandırılan tüm bölgelerde çoğaltılan aynı anahtar kümesini yönetmek için oluşturulur. Bu daha yüksek koordinasyon temeli, belirli bir anahtar kümesini yöneten fiziksel bölümlerin coğrafi olarak dağıtılmış dinamik yer paylaşımı olan bölüm kümesi olarak adlandırılır. Belirli bir fiziksel bölümün (çoğaltma kümesi) kapsamı bir küme içinde olsa da, bölüm kümesi aşağıdaki görüntüde gösterildiği gibi kümelere, veri merkezlerine ve coğrafi bölgelere yayılabilir:

Bölüm Kümeleri

Bölüm kümesini, aynı anahtar kümesine sahip birden çok çoğaltma kümesinden oluşan coğrafi olarak dağınık bir "süper çoğaltma kümesi" olarak düşünebilirsiniz. Çoğaltma kümesine benzer şekilde, bölüm kümesinin üyeliği de dinamiktir; belirli bir bölüm kümesine yeni bölümler eklemek/kaldırmak için örtük fiziksel bölüm yönetimi işlemlerine göre dalgalanır (örneğin, bir kapsayıcıda aktarım hızını genişlettiğinizde, Azure Cosmos DB veritabanınıza bölge eklediğinizde/kaldırdığınızda veya hatalar oluştuğunda). Bölümlerin her birinin (bölüm kümesindeki) bölüm kümesi üyeliğini kendi çoğaltma kümesi içinde yönetmesini sağladığından, üyelik tamamen merkezi olmayan ve yüksek oranda kullanılabilir. Bir bölüm kümesinin yeniden yapılandırılması sırasında, fiziksel bölümler arasındaki katman topolojisi de oluşturulur. Topoloji tutarlılık düzeyi, coğrafi uzaklık ve kaynak ile hedef fiziksel bölümler arasındaki kullanılabilir ağ bant genişliğine göre dinamik olarak seçilir.

Hizmet, Azure Cosmos DB veritabanlarınızı tek bir yazma bölgesi veya birden çok yazma bölgesiyle yapılandırmanıza olanak tanır ve seçime bağlı olarak bölüm kümeleri tam olarak bir veya tüm bölgelerdeki yazmaları kabul etmek üzere yapılandırılır. Sistem iki düzeyli, iç içe konsensüs protokolünü kullanır. Bir düzey, yazmaları kabul eden bir fiziksel bölümün çoğaltma kümesinin çoğaltmaları içinde, diğeri ise bölüm kümesi içindeki tüm kaydedilmiş yazma işlemleri için tam sıralama garantileri sağlamak üzere bölüm kümesi düzeyinde çalışır. Bu çok katmanlı, iç içe konsensüs, yüksek kullanılabilirlik için katı SLA'larımızın uygulanması ve Azure Cosmos DB'nin müşterilerine sunduğu tutarlılık modellerinin uygulanması açısından kritik öneme sahiptir.

Çakışma çözümü

Güncelleştirme yayma, çakışma çözümü ve nedensellik izleme tasarımımız, salgın algoritmaları ve Bayou sistemiyle ilgili önceki çalışmalardan ilham alınarak tasarlanmıştır. Fikirlerin çekirdekleri hayatta kalmış ve Azure Cosmos DB'nin sistem tasarımını iletmek için uygun bir başvuru çerçevesi sağlasa da, bunları Azure Cosmos DB sistemine uyguladığımız için de önemli bir dönüşümden geçmiştir. Bu gerekliydi, çünkü önceki sistemler ne kaynak idaresi ne de Azure Cosmos DB'nin çalışması gereken ölçekle tasarlanmadığından veya özellikleri (örneğin, sınırlanmış eskime tutarlılığı) ve Azure Cosmos DB'nin müşterilerine sunduğu katı ve kapsamlı SLA'ları sağlamak için tasarlanmamıştı.

Bir bölüm kümesinin birden çok bölgeye dağıtıldığını ve verileri belirli bir bölüm kümesini oluşturan fiziksel bölümler arasında çoğaltmak için Azure Cosmos DB (çok bölgeli yazmalar) çoğaltma protokollerini izlediğini hatırlayın. Her fiziksel bölüm (bölüm kümesinin) yazmaları kabul eder ve okumaları genellikle bu bölgede yerel olan istemcilere sunar. Bölge içindeki fiziksel bir bölüm tarafından kabul edilen yazma işlemleri, istemciye kabul edilene kadar sabit bir şekilde işlenir ve fiziksel bölüm içinde yüksek oranda kullanılabilir hale getirilir. Bunlar belirsiz yazma işlemleridir ve bir anti-entropi kanalı kullanılarak bölüm kümesi içindeki diğer fiziksel bölümlere yayılır. İstemciler, istek üst bilgisini geçirerek belirsiz veya kaydedilmiş yazma işlemleri isteyebilir. Anti-entropi yayma (yayma sıklığı dahil), bölüm kümesinin topolojisine, fiziksel bölümlerin bölgesel yakınlığına ve yapılandırılan tutarlılık düzeyine göre dinamiktir. Bölüm kümesinde Azure Cosmos DB, dinamik olarak seçilen bir arbiter bölümüyle birincil işleme şemasını izler. Arbiter seçimi dinamiktir ve katman topolojisine göre bölüm kümesinin yeniden yapılandırılmasının ayrılmaz bir parçasıdır. İşlenen yazma işlemlerinin (çok satırlı/toplu güncelleştirmeler dahil) sıralanması garanti edilir.

Güncelleştirme çakışmalarını algılamak ve çözmek için nedensellik izleme ve sürüm vektörleri için kodlanmış vektör saatlerini (sırasıyla çoğaltma kümesi ve bölüm kümesindeki her bir konsensüs düzeyine karşılık gelen bölge kimliği ve mantıksal saatleri içeren) kullanırız. Topoloji ve eş seçim algoritması, sürüm vektörlerinde sabit ve minimum depolama ve minimum ağ yükü sağlamak için tasarlanmıştır. Algoritma, katı yakınsama özelliğini garanti eder.

Sistem, birden çok yazma bölgesiyle yapılandırılan Azure Cosmos DB veritabanları için geliştiricilerin aralarından seçim yapabileceğiniz çeşitli esnek otomatik çakışma çözümleme ilkeleri sunar:

  • Varsayılan olarak sistem tanımlı bir zaman damgası özelliği (zaman eşitleme saat protokolünü temel alan) kullanan Last-Write-Wins (LWW). Azure Cosmos DB, çakışma çözümlemesi için kullanılacak diğer özel sayısal özellikleri belirtmenize de olanak tanır.
  • Uygulama tanımlı (Özel) çakışma çözümleme ilkesi (birleştirme yordamlarıyla ifade edilir), çakışmaların uygulama tanımlı semantik mutabakatı için tasarlanmıştır. Bu yordamlar, sunucu tarafındaki veritabanı işleminin nezaretinde yazma-yazma çakışmalarının algılanması üzerine çağrılır. Sistem, taahhüt protokolünün bir parçası olarak birleştirme yordamının yürütülmesi için tam olarak bir kez garanti sağlar. Kullanabileceğiniz çeşitli çakışma çözümleme örnekleri vardır.

Tutarlılık Modelleri

Azure Cosmos DB veritabanınızı tek veya birden çok yazma bölgesiyle yapılandırdığınızdan bağımsız olarak, iyi tanımlanmış beş tutarlılık modeli arasından seçim yapabilirsiniz. Birden çok yazma bölgesinde tutarlılık düzeylerinin birkaç önemli yönü şunlardır:

Sınırlanmış eskime tutarlılığı, tüm okumaların herhangi bir bölgede en son yazmadan itibaren K ön ekleri veya T saniyeler içinde olmasını garanti eder. Ayrıca, sınırlanmış eskime tutarlılığı olan okumaların monoton ve tutarlı ön ek garantileri ile garanti edilir. Anti-entropi protokolü hız sınırlı bir şekilde çalışır ve ön eklerin birikmemesini ve yazma işlemlerindeki geri baskının uygulanması gerekmemesini sağlar. Oturum tutarlılığı monoton okuma, monoton yazma, kendi yazmalarınızı okuma, yazma, okuma sonrasında yazma ve tutarlı ön ek garantilerini dünya çapında garanti eder. Güçlü tutarlılık ile yapılandırılan veritabanları için, bölgeler arasında zaman uyumlu çoğaltma nedeniyle birden çok yazma bölgesinin avantajları (düşük yazma gecikmesi, yüksek yazma kullanılabilirliği) uygulanmaz.

Azure Cosmos DB'deki beş tutarlılık modeli semantiği burada açıklanmıştır ve burada üst düzey TLA+ belirtimleri kullanılarak matematiksel olarak açıklanmıştır.

Sonraki adımlar

Ardından aşağıdaki makaleleri kullanarak genel dağıtımı yapılandırmayı öğrenin:

  • Veritabanı hesabınızdan bölge ekleme/kaldırma
  • Özel çakışma çözümleme ilkesi oluşturma
  • Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.
    • Tek bildiğiniz mevcut veritabanı kümenizdeki sanal çekirdek ve sunucu sayısıysa, sanal çekirdek veya vCPU kullanarak istek birimlerini tahmin etme hakkında bilgi edinin
    • Geçerli veritabanı iş yükünüz için tipik istek oranlarını biliyorsanız Azure Cosmos DB kapasite planlayıcısı kullanarak istek birimlerini tahmin etme hakkında bilgi edinin