Dağıtılmış sistemlerin CAP teorisini anlamak için bir makale

Yazar: ens

Bağlantı: https://juejin.im/post/5e89e3bb518825736512cd39

Dağıtık sistem (dağıtılmış sistem) gittikçe daha önemli hale geliyor, büyük web sitelerinin neredeyse tamamı dağıtılıyor.

Dağıtılmış bir sistemdeki en büyük zorluk, her bir düğümün durumunun nasıl senkronize edileceğidir. CAP teoremi bu bakımdan temel teoremdir ve dağıtılmış sistemleri anlamak için başlangıç noktasıdır.

1. Dağıtılmış sistemlerin üç göstergesi

1998'de California Üniversitesi'nde bilgisayar bilimcisi olan Eric Brewer, dağıtılmış sistemlerin üç göstergeye sahip olduğunu öne sürdü. Eric Brewer, bu üç göstergeye aynı anda ulaşılamayacağını söyledi. Bu sonuç, Brewer's teoremi olarak da bilinen CAP teoremi olarak adlandırılır.

1. Tutarlılık

Dağıtılmış bir ortamda tutarlılık, verilerin birden çok kopya arasında tutarlı olup olamayacağını ifade eder. İstemciden dağıtılmış sisteme gönderilen herhangi bir veri okuma talebi için ya en son veriler okunur ya da başarısız olur. Bir veri öğesi için güncelleme işlemi başarıyla yürütüldükten sonra, tüm kullanıcıların en son değeri okuyabilmesi sağlanabilirse, bu tür bir sistemin güçlü bir tutarlılığa (veya kesin tutarlılığa) sahip olduğu kabul edilir.

Özellikler: Ya en son verileri okuyun ya da başarısız olun, vurgu Veriler doğru .

2. Kullanılabilirlik

Kullanılabilirlik, sistem tarafından sağlanan hizmetin her zaman mevcut olması gerektiği ve kullanıcının her işlem talebi için sınırlı bir süre içinde doğru bir yanıtın her zaman elde edilebileceği anlamına gelir - ancak elde edilen verilerin en son veriler olduğuna dair hiçbir garanti yoktur.

Örneğin, sistem kararlılığı 39s ve 49s, yani% 99,9 ve% 99,99 elde etmiştir. Buradaki N 9'lar, SLA veya hizmet seviyesi anlaşması olarak adlandırılan kullanılabilirliğin bir açıklamasıdır. Örneğin aylık SLA% 99.95 dersek, aylık servis arıza süresinin toplam sürenin sadece% 0.05'ini oluşturabileceği anlamına gelir.Ay 30 gün ise 21.6 dakikadır.

Özellikler: Veriler iade edilecek, hiçbir hata döndürülmeyecek, ancak verilerin güncel olduğu garanti edilmiyor, vurgu hata yok , Okuma ve yazma her zaman başarılıdır.

3. Bölme toleransı (bölme toleransı)

Dağıtılmış sistemlerin çoğu, birden çok alt ağa dağıtılmıştır. Her alt ağa bölüm adı verilir. Bölüm toleransı, "bazı düğümlerde ileti kaybı veya bölüm hatası olduğunda, dağıtılmış sistem hala çalışmaya devam edebilir" anlamına gelir; yani, sistem ağ bölümünü tolere eder ve ağın bir düğüm veya ağ bölümü arasında erişilemez olduğu bir durumla karşılaşır. Yine de tutarlılığı ve kullanılabilirliği tatmin eden hizmetler sağlayabilir.

Özellikler: Sistem her zaman çalışıyor, ne tür dahili veri senkronizasyon sorunları ortaya çıkarsa çıksın, vurgu Kapatma .

Dağıtılmış bir sistemde, sistemin çeşitli katmanlarının ayrılması nedeniyle P belirlenir ve CAP'ın uygulama modeli CP mimarisi ve AP mimarisidir. Dağıtılmış sistemin ilgilendiği şey, PartitionTolerance öncülüğünde daha iyi bir A ve daha kararlı bir C'nin nasıl elde edileceğidir.

2. CAP teorisinin kanıtı

CAP teorisini kanıtlamanın birçok yolu vardır ve en sezgisel yol, kanıtı geçirmektir. CAP teoreminin kanıtı ilk olarak Lynch tarafından önerilmiştir.Eğer pratik bir senaryo ile, üç CAP aynı anda karşılanabilirse, P'nin varlığına izin verildiğinden, Sunucular arasında paket kaybı olması gerekir, bu şekilde C garanti edilemez.

Bağımsız sistem

İlk olarak, bağımsız bir sistem oluşturun.Yukarıdaki şekilde gösterildiği gibi, ClientA, Sunucuya talimatlar gönderebilir ve X'in güncellenmiş değerini ayarlayabilir. Client1, değeri Sunucudan okur.Tek nokta olması durumunda, yani ağ bölümü olmadan, basit bir işlem mekanizması aracılığıyla, İstemci 1'in okuduğu şeyin her zaman en son değer olduğu ve herhangi bir tutarlılık sorunu olmadığı garanti edilebilir.

Dağıtık Sistemler

Sisteme bir grup düğüm ekliyoruz. Bölüm hata toleransına izin verildiğinden, Yazma işlemi Sunucu1'de başarılı olabilir ancak Sunucu2'de başarısız olabilir. Şu anda İstemci1 ve İstemci2 için tutarsız değerler okunacak ve tutarlı bir durum ortaya çıkacaktır. X değerlerinin tutarlılığı korunacaksa, Yazma işlemi aynı anda başarısız olmalıdır, bu da sistemin kullanılabilirliğini azaltır.

Dağıtık bir sistemde, CAP kanunundaki "tutarlılık", "kullanılabilirlik" ve "bölüm hata toleransı" nın aynı anda sağlanamayacağı görülebilir.

3. CAP Teorisinin Uygulanması

CAP teorisi bize, mimari tasarımda, üçünü tatmin edebilecek, ancak makul seçimler yapabilecek mükemmel dağıtılmış bir sistemin nasıl tasarlanacağına enerji harcamayın. CAP teorisi matematikteki imkansız üçgene benzer ve yalnızca üçünü seçebilirsin. İkincisi, hepsi elde edilemez.

Farklı işletmelerin tutarlılık için farklı gereksinimleri vardır. Örneğin, Weibo'da yorum ve beğeni yayınladığınızda, kullanıcılar tutarsızlıklara karşı hassas değildir ve tutarsızlıkları nispeten uzun bir süre tolere edebilirler.Yerel etkileşimde iyi bir iş yaptığınız sürece, kullanıcı deneyimini etkilemeyecektir; E-ticaret alışverişi sırasında ürün fiyat verisi güçlü bir tutarlılık gerektirir, üye işyeri fiyatı değiştirir ve gerçek zamanlı olarak etki edemezse işlem başarı oranı üzerinde çok büyük bir etkisi olacaktır.

CAP teorisinde ağ gecikmesinin göz ardı edildiğine dikkat edilmelidir, yani bir işlem sunulduğunda, düğümler arasındaki veri replikasyonunun zaman alması gerekir. A düğümünden B düğümüne aynı bilgisayar odası olsa bile, ağ gerçekte gerçek zamanlı olmadığından, her zaman belirli bir zaman tutarsızlığı olacaktır.

Dört, BASE teorisi

BASE teorisinin önemi, A veya C arasında seçim yapmak zorunda olmamız ve A ve C'nin bir kısmını gerçekleştirebilmemizdir.

BASE, Temel Olarak Kullanılabilir, Yumuşak durum ve Son olarak tutarlı olmak üzere üç ifadenin kısaltmasıdır ve CAP'deki AP'nin bir uzantısıdır.

1. Temel olarak kullanılabilir

Temelde kullanılabilirlik, CAP'de "herhangi bir zamanda, okuma ve yazma başarılı" arayışı değildir. Temel kullanılabilirlik, öngörülemeyen bir arıza oluştuğunda dağıtılmış bir sistemin kullanılabilirliğinin bir kısmını kaybetmesine izin verildiğini vurgular Normal bir sistemle karşılaştırıldığında, yanıt süresi uzayabilir, temel işlevlerin kullanılabilir olması garanti edilir veya hizmetlerin kalitesi düşürülür.

Örneğin, onbir saniyelik çifte öldürme olayında, sistemin QPS tepe noktasını aşmak için çok fazla insan sıraya girebilir veya mevcut sınır için sorabilir.Bu, sistemin kararlılığını makul yollarla korumak ve ana hizmetlerin normal olmasını sağlamak içindir. Temelde mevcut olması garantilidir.

2. Yumuşak durum

Yumuşak durum, ACID işlemlerinde atomisiteye karşılık gelebilir.ACID işlemlerinde güçlü tutarlılık sağlanır.İster hepsini yapsın ister yapmasın, tüm kullanıcılar aynı veriyi görür. Bunların arasında, Atomicity, birden çok düğümün veri kopyalarının tutarlı olmasını ve veri tutarlılığını vurgulamasını gerektirir.

ACID, atomikliği, tutarlılığı, izolasyonu ve dayanıklılığı vurgulayan ve esas olarak veritabanı uygulamasında kullanılan güçlü bir tutarlılık modelidir.

Atomik durum, sistemdeki verilerin bir ara duruma sahip olmasına izin verirken ve bu durumun sistemin genel kullanılabilirliğini etkilememesi, yani sistemin farklı düğümlerin çoklu veri kopyalarında veri gecikmelerine sahip olmasına izin verirken, bir tür "sert durum" olarak anlaşılabilir. Zaman.

Temel teori, yüksek oranda erişilebilir ve ölçeklenebilir dağıtılmış bir sisteme yöneliktir. ACID, geleneksel finans ve diğer işletmeler için uygundur. Gerçek senaryolarda, farklı işletmelerin veri tutarlılığı için farklı gereksinimleri vardır.

3. Sonunda oybirliği

Veriler her zaman yumuşak durumda olamaz.Her düğümün tutarlılığına bir süre sonra ulaşılmalıdır (bu süre "tutarsızlık penceresidir"). Süre geçtikten sonra, tüm kopyaların veri tutarlılığını sağladığından, yani veri tutarlılığını sağladığından emin olunmalıdır. Nihai tutarlılık.

Sistem tasarımında, nihai tutarlılığa ulaşma süresi, ağ gecikmesi, sistem yükü, farklı depolama seçimleri ve farklı veri çoğaltma şeması tasarımları gibi faktörlere bağlıdır.

BASE, CAP'de ağ gecikmesi olmadığı teorisini çözer ve gecikmeden sonra tutarlılığı sağlamak için BASE'de yumuşak durumu ve nihai tutarlılığı kullanır. BASE, ACID'in tam tersidir, ACID'in güçlü tutarlılık modelinden tamamen farklıdır, bunun yerine güçlü tutarlılıktan ödün vererek kullanılabilirlik kazanır ve verilerin bir süre tutarsız olmasına, ancak sonunda tutarlı bir duruma ulaşmasına izin verir.

Tutarlılık modeli

Nihai tutarlılık modeli, nedensel tutarlılık ve oturum tutarlılığı dahil olmak üzere sağladığı farklı garantilere göre daha fazla modele ayrılabilir.

Nedensel tutarlılık

Nedensel tutarlılık, nedensel ilişkilere sahip işlem sırasının garanti edilmesini gerektirir ve nedensel olmayan ilişkilerle işlemlerin sırasının önemli olmaması gerekir.

İşlem A, belirli bir veri öğesini güncelledikten sonra B sürecini bilgilendirir, ardından B işleminden sonra veri öğesine erişim, A işlemi güncellendikten sonra en son değeri alabilmelidir ve eğer B işlemi veri öğesini güncellemek isterse Eğer öyleyse, A süreci güncellendikten sonra en son değere dayanmalıdır.

Nedensel tutarlılık uygulama senaryosu örnek olarak verilebilir.Örneğin Weibo veya WeChat'e yorum yaptığınızda, Moments'ta bir fotoğraf yayınlarsınız, arkadaşınız size yorum yapar ve arkadaşınızın yorumuna yanıt verirsiniz. Arkadaş çevresi görüntüsünde, cevabınız arkadaşın peşinde olmalıdır Bu nedensel bir ilişkidir ve nedensellik ilişkisi olmayan diğer veriler tutarsızlığa izin verebilir.

Oturum tutarlılığı

Oturum tutarlılığı, sistem verilerine tek bir oturumda erişim sürecini çerçeveler ve sistemin aynı etkin oturumda uygulamayı garanti edebileceğini belirtir " Ne yazdığını oku "Tutarlılık", ziyaretlerinizden birinde, bir güncelleme işlemi gerçekleştirdikten sonra müşterinin her zaman aynı oturumda veri öğesinin en son değerini okuyabileceği anlamına gelir.

Gerçek geliştirmede, oturum tutarlılığının bir uygulaması olarak düşünülebilecek dağıtılmış bir oturum tutarlılığı sorunu vardır.

Beş, CP ve AP mimarisi seçimi

Tutarlılık için iş gereksinimleri, tipik olarak CP ve AP yapıları gibi sistem tasarımına doğrudan yansıtılacaktır.

CP mimarisi

CP mimarisi: CP için, kullanılabilirlikten vazgeçiyoruz ve tutarlılık ve bölüm hata toleransı peşinde koşuyoruz.

ZooKeeper, CP tutarlılığını benimser ZooKeeper, esas olarak dağıtılmış kümelerdeki uygulama sistemlerinin koordinasyon ve tutarlılık sorunlarını çözmek için kullanılan dağıtılmış bir hizmet çerçevesidir. Temel algoritma Zab'dir ve tüm tasarımlar tutarlılık içindir. CAP modelinde ZooKeeper, CP'dir, bu, ağ bölümleriyle karşılaşıldığında tutarlılığı korumak için mevcut olmadığı anlamına gelir. Bölümlemeden sonra, A için, yalnızca bölümdeki düğümler harici olarak hizmet verecek yeter sayıdan daha büyüktür

AP mimarisi

AP mimarisi: AP için, güçlü tutarlılığı bırakın (burada bahsedilen tutarlılık güçlü tutarlılıktır) ve bölüm hata toleransı ve kullanılabilirliğini takip edin.Bu, birçok dağıtılmış sistem tasarımının seçimidir.

ZooKeeper'ın tersi Eureka'dır. Eureka, SpringCloud mikro hizmet teknoloji yığınındaki hizmet keşif bileşenidir. Eureka'nın her düğümü eşittir. Birkaç düğümün arızası normal düğümlerin çalışmasını etkilemez. Kalan düğümler yine de kayıt ve sorgu sağlayabilir Hizmet, bir Eureka olduğu sürece, kayıt hizmetinin kullanılabilir olduğu garanti edilebilir, ancak bulunan bilgiler en son sürüm olmayabilir, tutarlılık garanti edilmez ve nihai tutarlılık sağlanır.

Önerilen Kaynaklar: Yüksek ücretli teknik savaş paylaşımı: SpringBoot + SpringCloud + Nginx + Docker + dağıtılmış

Bilginizi düzenlemenize ve röportajınızın zor gücünü geliştirmenize yardımcı olacak Alibaba mimarları için gerekli kitapların listesi
önceki
Hala Tom kedi hakkında cahil misin? Bu Tomcat mimari analiz kitabına bir göz atın
Sonraki
Redis'in beş veri türünü ve uygulama senaryo analizini kolayca anlayın (Redis gerçek savaş belgeleriyle)
Nginx girişinde ustalaşma, Nginx öğrenme deneyimi e-kitap paylaşımı
Shuangfei / üç lisans / teknik okuldan mezun olduktan sonra büyük bir fabrikaya girme şansınız var mı?
Mimar, Bahar serisini pratik kitaplardan tavsiye ediyor ve okuduktan sonra, Bahar hakkında net bir anlayışa sahip oluyor.
BAT teknik dokümantasyonu: Yay ailesi kovası, Docker, Redis e-kitabı
A-hisseleri iyi bir başlangıç yaptı VS Moutai sert bir şekilde düştü, piyasa nasıl gidiyor?
Boğa pazarı şiddetli kuş mu? On milyar yabancı yatırımcı bu hisse senetlerini kopyaladı; büyük adam teknoloji hisselerini 400 milyon yuan'a satın aldı, Zhang Jianping 900 milyon yuan sattı
Bu şirket yıl sonunda 2 milyon göl manzaralı oda veriyor mu? Yanıt: Zor durumda olan çalışanlara yardım
Bu 15 hikaye 2020'nin sırlarını gizliyor! Milyarder domuz çiftçisi muazzam bir kâr elde edecek mi?
Çin'in kişi başına düşen GSYİH'si 10.000 ABD dolarını aşıyor; 2019'da A hisseleri kişi başına 100.000 kazanıyor ve 80'ler sonrası 90'lar demokratik bir güç haline geliyor
Chongqing'deki 30 katlı bina alev aldı ve geliştiricinin yüzlerce adli riski vardı. Sektördeki uzmanlar yeterli park yeri olmadığını söyledi
Merkez bankası 800 milyar serbest bıraktı, bahar pazarı doğrulandı
To Top