Cassandra Archidoku ve Çoğaltma Faktörü

⚡ Akıllı Özet

Cassandra Bu mimari, koordinasyon için dedikodu (gossip) ve dayanıklılık için çoğaltma (replication) kullanarak, tek bir hata noktası olmaksızın verileri eş düğümler arasında dağıtır. Bu sayfa, her bir bileşeni, her iki çoğaltma stratejisini, tutarlılık seviyelerini ve dahili yazma ve okuma yollarını kapsamaktadır.

  • 🕸️ Akranlar Arası Tasarım: Her düğüm eşittir ve durum bilgisini dedikodu protokolü aracılığıyla paylaşır, bu nedenle arızalanacak bir ana düğüm yoktur.
  • 🧱 Depolama Bileşenleri: Yazma işlemi, commit log'una ve memtable'a kaydedilir, ardından disk üzerindeki değiştirilemez bir SSTable'a yazılır.
  • 🔁 Çoğaltma Stratejisi: SimpleStrategy tek bir veri merkezine uygunken, NetworkTopologyStrategy her veri merkezi ve her raf için kopyalar yerleştirir.
  • 🔢 Çoğaltma Faktörü: Tek bir hata noktasını ortadan kaldırmak için standart ayar, üç düğümde üç kopya kullanmaktır.
  • 🇧🇷 Tutarlılık Seviyeleri: Sorgu başına seçilen seviye, istemciye yanıt verilmeden önce kaç kopyanın onay vermesi gerektiğini belirler.
  • 🔍 Okuma Yolu: Doğrudan, özet ve okuma onarım istekleri bir araya gelerek güncel verileri döndürür ve eski kopyaları sessizce düzeltir.

Cassandra ArchiYapı Kopyalama

Cassandra idare edecek şekilde tasarlanmıştır büyük Veri. CassandraAna özelliği, verileri tek bir hata noktası olmadan birden fazla düğümde depolamaktır.

Bu tür bir durumun nedeni Cassandra'nin mimarisi donanım arızasının herhangi bir zamanda meydana gelebilmesiydi. Herhangi bir düğüm kapalı olabilir. Arıza durumunda başka bir düğümde depolanan veriler kullanılabilir. Dolayısıyla, Cassandra Dağıtık mimarisiyle tasarlanmıştır.

Cassandra Verileri eşler arası dağıtık mimariyle farklı düğümlerde depolar.

Tüm düğümler birbirleriyle bilgi alışverişinde bulunurlar. Dedikodu protokolü. Dedikodu bir protokoldür Cassandra düğümlerin birbirleriyle iletişim kurabilmesini sağlar.

In bileşenleri Cassandra Archidoku

Aşağıdaki bileşenler mevcuttur: Cassandra Archidoku:

Cassandra Archidoku
Cassandra Archidoku şeması

Yukarıdaki diyagram bileşenleri iç içe yerleştiriyor: düğümler bir veri merkezinin içinde yer alıyor, veri merkezleri bir kümenin içinde yer alıyor ve taahhüt günlüğü, bellek tablosu ve SST tablosu her bir düğümün içinde bulunuyor.

Düğüm

Düğüm, verilerin depolandığı yerdir. Bu, temel bileşenidir Cassandra.

Veri Merkezi

Düğümlerden oluşan bir koleksiyona veri merkezi denir. Birçok düğüm veri merkezi olarak sınıflandırılır.

Cluster

Küme, birçok veri merkezinin toplanmasıdır.

Kaydetme Günlüğü

Her yazma işlemi Kaydetme Günlüğüne yazılır. Kaydetme günlüğü, kilitlenme kurtarma için kullanılır.

Mem tablosu

Commit log'a veriler yazıldıktan sonra Mem tablosuna veriler yazılır. Veriler geçici olarak Mem tablosuna yazılır.

SSTable

Mem tablosu belirli bir eşiğe ulaştığında, veriler bir SSTable disk dosyasına yazılır. SSTable'lar değiştirilemez olduğundan, bir güncelleme eski sürümü düzenlemek yerine yeni bir sürüm yazar ve daha sonra sıkıştırma adı verilen bir arka plan işlemi bu sürümleri birleştirir ve geçersiz kılınan satırları atar.

Veri Çoğaltma Cassandra

Veri işleme sırasında herhangi bir zamanda donanım sorunu oluşabileceğinden veya bağlantı kesilebileceğinden, sorun oluştuğunda yedekleme sağlayacak bir çözüme ihtiyaç vardır. Böylece veriler, tek bir hata noktasının olmamasını sağlamak için kopyalanır.

Cassandra Verilerin kopyalarını bu iki faktöre dayalı olarak farklı düğümlere yerleştirir.

  • Bir sonraki kopyanın nereye yerleştirileceği, Çoğaltma Stratejisi.
  • Farklı düğümlere yerleştirilen toplam kopya sayısı şu şekilde belirlenir: Çoğaltma Faktörü.

Bir Çoğaltma faktörü, yalnızca tek bir veri kopyasının olduğu anlamına gelirken, üç çoğaltma faktörü, verilerin üç farklı düğümde üç kopyasının olduğu anlamına gelir.

Tek bir arıza noktasının olmamasını sağlamak için, çoğaltma faktörü üç olmalıdır.

İki tür kopyalama stratejisi vardır Cassandra.

SimpleStrategy'de Cassandra

BasitStrateji yalnızca bir veri merkeziniz olduğunda kullanılır. SimpleStrategy, ilk replikayı bölümleyici tarafından seçilen düğüme yerleştirir. Bundan sonra, kalan replikalar Node halkasında saat yönünde yerleştirilir.

İşte SimpleStrategy'nin resimli temsili:

SimpleStrategy'de Cassandra
SimpleStrategy'de Cassandra

AğTopolojisiStrateji Cassandra

AğTopolojisiStrateji ikiden fazla veri merkeziniz olduğunda kullanılır. NetworkTopologyStrategy'de, replikalar her veri merkezi için ayrı ayrı ayarlanır. NetworkTopologyStrategy, replikaları halkada saat yönünde, başka bir raftaki ilk düğüme ulaşana kadar yerleştirir. Bu strateji, replikaları aynı veri merkezindeki farklı raflara yerleştirmeye çalışır.

Bunun nedeni bazen rafta arıza veya sorun yaşanabilmesidir. Daha sonra diğer düğümlerdeki kopyalar veri sağlayabilir.

Ağ topolojisi stratejisinin resimli temsili:

AğTopolojisiStrateji Cassandra
AğTopolojisiStrateji Cassandra

Çoğaltma faktörü, kaç kopyanın mevcut olacağına karar verir. Belirli bir isteğe kaç kopyanın yanıt vermesi gerektiği ayrı bir ayardır ve aşağıda açıklanmıştır.

Tutarlılık Düzeyleri Cassandra

Tutarlılık düzeyi küme başına değil, sorgu başına ayarlanır; bu da onu farklı kılan şeydir. Cassandra Ayarlanabilir bir değerdir. Koordinatörün istemciye yanıt vermeden önce kaç kopyanın yazma işlemini onaylaması veya okuma işlemine yanıt vermesi gerektiğini belirtir. Düşük seviye daha hızlı sonuç verir; yüksek seviye ise daha kesin olarak güncel veriler döndürür.

Seviye Davranış Tipik kullanım
ONE Bir kopyanın yanıt vermesi gerekiyor. Ara sıra hatalı okumaların kabul edilebilir olduğu yüksek verimli veri kaydı sistemi.
YETER SAYISI Tüm kopyaların çoğunluğunun yanıt vermesi gerekir; bu, (RF / 2) + 1 olarak hesaplanır. Dengeli tutarlılık ve bulunabilirlik açısından genel amaçlı bir seçim.
YEREL_YETER Yerel veri merkezindeki kopyaların çoğunluğunun yanıt vermesi gerekiyor. Çoklu veri merkezi kümeleri, bölgeler arası gecikmeyi önlediği için tercih edilir.
HEPSİ Her kopyanın yanıt vermesi gerekir. Nadir görülen bir durum. Tek bir düğümün devre dışı kalması isteğin tamamen başarısız olmasına neden olur.
HERHANGİ (sadece yazıyor) Ulaşılabilir bir kopya olmasa bile, ima edilen bir devir teslim başarılı sayılır. Dayanıklılığın göz ardı edilebileceği durumlarda maksimum yazma olanağı.

Okuma seviyesi artı yazma seviyesi çoğaltma faktörünü aştığında güçlü tutarlılık garanti edilir. Üçlü bir çoğaltma faktörüyle, QUORUM'da yazma ve QUORUM'da okuma bu kuralı karşılar, çünkü iki artı iki üçten büyüktür. ONE'da yazma ve ONE'da okuma bu kuralı karşılamaz ve bu nedenle okuma daha eski bir değer döndürebilir.

Kopyaya ulaşılamadığında, koordinatör bir kopyayı saklar. ipucu ve düğüm geri döndüğünde tekrar oynatır; ANY seviyesi ve diğer birçok seviye de bu şekilde çalışır. Cassandra'ın kendi kendini iyileştirme davranışı çalışması.

Yazmak Operadahil olmak Cassandra

Koordinatör kopyalara bir yazma isteği gönderir. Tüm kopyalar çalışır durumdaysa tutarlılık düzeylerine bakılmaksızın yazma isteği alırlar.

Tutarlılık düzeyi Başarı onayıyla kaç düğümün yanıt vereceğini belirler.

Veriler taahhüt günlüğüne başarıyla yazılırsa düğüm başarı bildirimiyle yanıt verecektir ve memTable.

Örneğin replikasyon faktörü 3 olan tek bir veri merkezinde 3 replika yazma isteği alacaktır. Tutarlılık düzeyi bir ise yalnızca bir kopya başarı onayıyla yanıt verir ve geri kalan ikisi hareketsiz kalır.

Kalan iki kopyanın, düğüm kesintileri veya başka bir sorun nedeniyle verileri kaybettiğini varsayalım. Cassandra Yerleşik onarım mekanizması sayesinde sırayı tutarlı hale getirecek Cassandra.

Burada yazma işleminin nasıl gerçekleştiği anlatılmaktadır. Cassandra,

  1. Düğüme yazma isteği geldiğinde öncelikle commit log’una loglanır.
  2. Sonra Cassandra verileri mem tablosuna yazar. Her yazma isteğinde mem-tablosuna yazılan veriler aynı zamanda commit log'una ayrı ayrı yazar. Mem tablosu, bellekte geçici olarak saklanan bir veridir; Commit log ise işlem kayıtlarını yedekleme amacıyla günlüğe kaydeder.
  3. Mem tablosu dolduğunda veriler SSTable veri dosyasına aktarılır.
Yazmak Operadahil olmak Cassandra
Yazmak Operadahil olmak Cassandra

SSTable'lar asla yerinde düzenlenmediği için, silme işlemi satırı hemen kaldırmaz. Bunun yerine, bir işaretleyici (marker) adı verilen bir işaretleyici satırı siler. mezar taşı Yazma işlemi tamamlandıktan sonra, sıkıştırma işlemi bekleme süresinden sonra çalışırsa satır kaybolur. Bu nedenle, yoğun silme işlemleri, sıkıştırma işlemi tamamlanana kadar okuma işlemlerini yavaşlatır.

Okumak Operadahil olmak Cassandra

Bir koordinatörün kopyalara gönderdiği üç tür okuma isteği vardır.

  1. Doğrudan istek
  2. Özet isteği
  3. Onarım talebini oku

Koordinatör kopyalardan birine doğrudan istek gönderir. Bundan sonra koordinatör, tutarlılık düzeyine göre belirtilen replika sayısına özet isteğini gönderir ve döndürülen verinin güncellenmiş veri olup olmadığını kontrol eder.

Bundan sonra koordinatör kalan tüm kopyalara özet isteği gönderir. Herhangi bir düğüm güncel olmayan bir değer verirse, arka plan okuma onarım isteği bu verileri güncelleyecektir. Bu işleme okuma onarım mekanizması denir.

Doğrudan isteği alan kopyanın içinde, arama sırası, mümkün olduğunca diske dokunmaktan kaçınacak şekilde tasarlanmıştır.

  1. MKS hatıra tablosu En yeni yazılanlar henüz temizlenmediği için öncelikle bu kontrol edilir.
  2. MKS satır önbelleğiEtkinleştirilirse, başka bir işlem yapmaya gerek kalmadan tüm isteğe yanıt verebilir.
  3. A çiçeklenme filtresi Her bir SSTable için kontrol edilir. Kesinlikle mevcut değil veya muhtemelen mevcut şeklinde yanıt verir; bu da çoğu SSTable'ın okunmadan atlanmasına olanak tanır.
  4. MKS bölüm dizini Özet olarak, bloom filtre kontrolünden geçen herhangi bir SSTable içindeki tam bayt konumunu bulur.
  5. Çeşitli SSTable'lardan eşleşen parçalar birleştirilir ve her sütun için en yeni zaman damgası öncelikli olur.

Bloom filtresi, disk arama işlemi gerçekleşmeden önce neredeyse tüm SSTable'ları değerlendirme dışı bıraktığı için, veri miktarı arttıkça okuma hızını koruyan adımdır. Bu mekanizmaların birden fazla makineye uygulanması, ilgili bölümde ele alınmıştır. Cassandra küme öğretici.

SSS

Her düğüm saniyede birkaç eşiyle iletişim kurar ve kendisi ve tanıdığı herkes hakkında durum bilgisi paylaşır: canlılık, yük, şema sürümü ve belirteç aralıkları. Bir küme, ana düğüm olmadan bu şekilde koordineli kalır.

Sıkıştırma işlemi, birden fazla SSTable'ı tek bir SSTable'da birleştirir, böylece...ping Her sütunun en yeni sürümünü alıp, silinmiş satırları atıyor. Bu olmadan, okuma işlemi giderek daha fazla dosyaya erişmek zorunda kalacaktı.

Sanal düğümler, her fiziksel makinenin token halkasındaki payını birçok küçük aralığa böler. Bu, verilerin daha eşit şekilde dağılmasını sağlar ve bir düğüm eklemeyi veya değiştirmeyi manuel token atamasına göre çok daha hızlı hale getirir.

Yapay zeka, okuma artı yazma sayısının çoğaltma faktöründen büyük olduğu kuralını uygulayabilir ve bir eşleştirme önerebilir, ancak her sorgu için kabul edilebilir eskime süresi öncelikle verilmesi gereken bir iş kararıdır.

Yapay zeka, nodetool çıktısını ve metriklerini iyi okuduğu için, aşırı yüklenen bölümleri, biriken silme işlemlerini ve sıkıştırma gecikmelerini tespit etmede etkilidir. Önerdiği herhangi bir yapılandırma değişikliği yine de bir test kümesinde denenmelidir.

Bu yazıyı şu şekilde özetleyin: