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ı bir ç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, her biri birden çok nesil donanım çalıştırabilecek birçok kümeye dağıtılır. Bir küme içindeki makineler genellikle bir bölge içinde 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ı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 zahmeti olmadan verileri sorgulamasına olanak tanır.

  • Belirli bir bölgede kapsayıcı içindeki veriler, sağladığınız bir 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 Azure Cosmos DB kapsayıcısı üzerinde aktarım hızını esnek bir şekilde ölçeklendirdiğinde veya daha fazla depolama alanı kullandığında, 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ılar içindeki verilerin tek bir sistem görüntüsünü sağlamaya devam eder ve bunlar tüm bölgelere genel olarak dağıtılır.

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

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 kaynaklarla 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ıyla ö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ık elde eder. Bu sayede kullanıcılar, şema veya dizin yönetimiyle uğraşmak zorunda kalmadan küresel 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ığında sıhhi olarak kullanılır. Azure Cosmos DB veritabanı altyapısı, ayrıntılı eşzamanlılığı kötüye kullanmak ve yüksek aktarım hızı sunarken aynı miktarda sistem kaynağında çalışırken yüksek aktarım hızı sağlamak için tasarlanmıştı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 bir veya daha fazla coğrafi olarak dağıtılmış 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ış, otomatik olarak 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 topluca uygular. Çoğaltma kümesi üyeliği N dinamiktir; hatalara, yönetim işlemlerine ve başarısız çoğaltmaların yeniden üretilmesi/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ırıyor. 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, öncüde yazma isteklerini işleme maliyeti, güncelleştirmeleri takip edene uygulama maliyetinden daha yüksektir. Buna karşılık lidere, takipçilerden daha fazla sistem kaynağı bütçesi sağlanı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. Gerekmedikçe okumaları servis etmek için 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 temel öğesi, 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ı 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. Bir ç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/kümeden yeni bölümleri kaldırmak için örtük fiziksel bölüm yönetimi işlemlerine göre dalgalanır (örneğin, kapsayıcıdaki 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önetmesi nedeniyle üyelik tamamen merkezi değildir 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 yer paylaşımının 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 fiziksel bir 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 çözme ve nedensellik izleme tasarımımız, salgın algoritmaları ve Bayou sistemiyle ilgili önceki çalışmalardan esinlenmektedir. Fikirlerin çekirdekleri hayatta kalır ve Azure Cosmos DB'nin sistem tasarımını iletmek için uygun bir başvuru çerçevesi sağlarken, bunları Azure Cosmos DB sistemine uyguladığımız için de önemli bir dönüşümden geçmiştir. Önceki sistemler ne kaynak idaresi ne de Azure Cosmos DB'nin çalışması gereken ölçekle tasarlanmadığından ve özellikleri (örneğin sınırlanmış eskime tutarlılığı) ve Azure Cosmos DB'nin müşterilerine sunduğu katı ve kapsamlı SLA'ları sağlayacak şekilde tasarlanmadığından bu gerekliydi.

Bir bölüm kümesinin birden çok bölgeye dağıtıldığını ve verileri belirli bir bölüm kümesinden oluşan fiziksel bölümler arasında çoğaltmak için Azure Cosmos DB'nin (ç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 o bölgede yerel olan istemcilere sunar. Bir bölge içindeki fiziksel 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 bir istek üst bilgisi 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. Azure Cosmos DB, bölüm kümesi içinde 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. Yürütülen 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 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ı, sabit ve en düşük depolama alanı ile sürüm vektörlerinin minimum ağ yükünü sağlamak için tasarlanmıştır. Algoritma, katı yakınsama özelliğini garanti eder.

Birden çok yazma bölgesiyle yapılandırılan Azure Cosmos DB veritabanları için sistem, geliştiricilerin aralarından seçim yapabileceğiniz bir dizi esnek otomatik çakışma çözme ilkesi 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 bir 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ızda, 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 durumu tutarlılığı, tüm okumaların herhangi bir bölgede en son yazmadan itibaren K ön ekleri veya T saniyeleri içinde olmasını garanti eder. Ayrıca sınırlanmış eskime durumu tutarlılığı olan okumaların monoton ve tutarlı ön ek garantili olması garanti edilir. Anti-entropi protokolü hız sınırlı bir şekilde çalışır ve ön eklerin birikmemesini ve yazma işlemlerinde geri baskının uygulanması gerekmemesini sağlar. Oturum tutarlılığı monoton okuma, monoton yazma, kendi yazmalarınızı okuma, yazmanın takip eden okuma 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 ve matematiksel olarak burada üst düzey TLA+ belirtimleri kullanılarak açıklanmıştır.

Sonraki adımlar

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