Azure Cosmos DB ile küresel veri dağıtımı - perde arkası

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ünür. Replika kümeleri, yazmaları çoğunluk oyu kullanarak kalıcı olarak kaydeder.

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 merkezi içinde, her biri ayrılmış yerel depolama alanına sahip büyük makine kümelerinde Azure Cosmos DB'yi dağıtıp yönetiriz. Bir veri merkezinde, Azure Cosmos DB birçok kümeye dağıtılır ve her biri birden çok donanım nesli çalıştırma olasılığı vardı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.

Bir replika, yalnızca bir Azure Cosmos DB kiracısına özgün olarak 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 verim ve depolama ölçeğiyle ilişkilidir ve daha büyük veya daha fazla kopyaya ya da her ikisine de sahiptir. Sistemin her bileşeni tamamen zaman uyumsuzdur; hiçbir iş parçacığı bloke olmaz ve her iş parçacığı gereksiz iş parçacığı değişikliklerine neden olmadan kısa süreli işler üstlenir. Hız sınırlama mekanizması ve geri basınç mekanizması, giriş denetiminden tüm G/Ç yollarına kadar tüm yığın boyunca entegre edilmiştir. Azure Cosmos DB veritabanı motoru, ayrıntılı eşzamanlılık özelliğinden yararlanmak ve az miktarda sistem kaynağı kullanarak yüksek aktarım hızı sağlamak için tasarlanmıştır.

Azure Cosmos DB genel dağılımı iki temel soyutlamadan (replica-sets ve partition-sets dayanır. Çoğaltma kümesi, koordinasyon için modüler bir yapı taşıdır ve bölüm kümesi, bir veya daha fazla coğrafi olarak dağıtılmış fiziksel bölümün dinamik bir üst yapısıdır. Genel dağıtımın nasıl çalıştığını anlamak için bu iki temel soyutlamayı anlamamız gerekir.

Replika setleri

Fiziksel bölüm, kendi kendine yönetilen ve dinamik olarak yük dengesi yapılmış bir çoğaltma grubu olarak birden çok hata etki alanına yayılmış çoğaltma kümesi şeklinde somutlaştırılır. 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 liderde işlemenin maliyeti, güncelleştirmeleri takipçiye uygulama maliyetinden daha yüksektir. Buna karşılık lider, takipçilere kıyasla daha fazla sistem kaynakları için bütçelendirilmiştir.

  • İkinci olarak, mümkün olduğunca, belirli bir tutarlılık düzeyi için okuma yekûnu yalnızca takipçi kopyaları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 yük ve kapasite ilişkisinde kvorum tabanlı sistemlerde yapılan araştırmalardan bir dizi fikir kullanırız.

Çoğaltma kümeleri ve bunların fiziksel bölümlerle ilişkisi hakkında daha fazla bilgi için bkz. bölüm çoğaltma kümeleri.

Bölümleme kümeleri

Azure Cosmos DB veritabanı bölgeleriyle konfigüre edilen her bir bölgeden birer fiziksel bölümden oluşan bir grup, yapılandırılan tüm bölgelerde çoğaltılan aynı anahtar kümesini yönetmek üzere birleştirilir. Bu gelişmiş koordinasyon unsuru, belirli bir anahtar kümesini yöneten fiziksel bölümlerin coğrafi olarak dağıtılmış ve dinamik bir yerleşim üzerine kurulmuş 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 setine benzer şekilde, bölüm kümesinin üyeliği de dinamiktir; bu üyelik, belirli bir bölüm kümesine yeni bölümler ekleyip çıkarmak için yürütülen örtük fiziksel bölüm yönetimi işlemleri nedeniyle değişkenlik gösterir (örneğin, bir kapsayıcının aktarım hızını artırdığınızda, Azure Cosmos DB veritabanınıza bir bölge ekleyip çıkardığınızda veya hatalar meydana geldiğinde). 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 ve iç içe geçmiş bir konsensüs protokolü kullanır. Bir düzey, yazmaları kabul eden fiziksel bir bölümün replika kümesindeki replikalar içinde çalışırken, diğeri ise bölüm kümesi düzeyinde tüm kaydedilmiş yazmalar için tam sıralama garantileri sağlamak üzere ç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. Bölüm kümesinin her fiziksel bölümü, genellikle o bölgede bulunan yerel istemcilere yazma işlemlerini kabul eder ve okuma işlemlerini sunar. Bölge içindeki fiziksel bir bölüm tarafından kabul edilen yazma işlemleri, istemciye bildirilmeden önce fiziksel bölüm içinde kalıcı olarak taahhüt edilir ve yüksek kullanılabilirlik sağlanır. 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 üstbilgisi kullanarak geçici veya kesin yazma işlemleri talep edebilir. 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 arbitratör bölümüyle birincil işlem düzenini 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.

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 veritabanı işleminin nezaretinde yazma-yazma çakışmalarının algılanması üzerine çağrılır. Sistem, bağlantı protokolünün bir parçası olarak birleştirme işleminin yürütülmesi için tek seferlik 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. Bu modeller, güçlü tutarlılıktan nihai tutarlılığa kadar değişir ve bölüm kümelerindeki replikaların verileri eşitleme biçimini etkiler.

Genel dağıtım bağlamında:

  • Sınırlanmış eskime, ön eklerin birikmemesini ve yazmaların gereksiz yere kısıtlanmamasını sağlamak için anti-entropi protokollerini hız sınırlı bir şekilde kullanır.
  • Oturum tutarlılığı, dünya çapında monoton okuma, monoton yazma, kendi yazdıklarınızı okuma, yazmanın okumayı takip ettiği ve tutarlı ön ek garantiler.
  • Güçlü tutarlılık bölgeler arasında zaman uyumlu çoğaltma gerektirir. Bu, çok bölgeli yazma hesaplarının bu düzeyi kullanırken düşük yazma gecikme süresinden veya yüksek yazma kullanılabilirliğinden yararlanmadığı anlamına gelir.

Tutarlılık düzeyi semantiği ve garantileri hakkında ayrıntılı bilgi için bkz. Azure Cosmos DB'de tutarlılık düzeyleri. Tutarlılık modelleri TLA+ belirtimleri kullanılarak matematiksel olarak da 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ını kullanarak istek birimlerini tahmin etme hakkında bilgi edinin.