01
-
Dağıtılmış işlemlerin ortaya çıkmasıyla birlikte, geleneksel tek makineli işlem modeli (ACID), özellikle yüksek trafikli, yüksek eşzamanlı İnternet dağıtılmış sistemi için artık yeterli değildir.
Kesin tutarlılığa ihtiyaç duyarsak, muhtemelen sistem kullanılabilirliğinden ödün vermemiz gerekir ve bunun tersi de geçerlidir.
Hem kullanılabilirliği hem de tutarlılığı dikkate alan dağıtılmış bir sistemin nasıl kurulacağı, sayısız Java mühendisinin tartıştığı zor bir sorun haline geldi.
02
-
Tutarlılık, dağıtık sistemlerde her zaman çok önemli bir konu olmuştur.
Depolama sisteminde veri kaybını önlemek için verileri saklayacağız.
Verilerin kalıcılığı, kesinti süresinin neden olduğu veri kaybı sorununu önleyebilir, ancak tek bir makinenin kalıcı arıza sorununu çözemez. Bir altyapı olarak, tek bir makinede depolama sistemi kalıcılığı yeterli olmaktan uzaktır.Sistemin kullanılabilirliğini ve güvenilirliğini artırmak için verileri birden çok makineye kopyalamamız gerekir.
Veriler birden çok düğüme kopyalandığında, bir tutarlılık sorunu ortaya çıkar.
03
-
1. Güçlü tutarlılık
En güçlü tutarlılık modelidir, herhangi bir okuma işleminin en son değeri okumasını gerektirir, başka bir deyişle, herhangi bir yazma işleminin hemen tüm işlemlerle senkronize edilmesini gerektirir.
2. Zayıf tutarlılık
Bu tutarlılık seviyesi, sistemin yazılı değerin yazma başarılı olduktan hemen sonra okunabileceğini vaat etmemesini kısıtlar ve kısa süre içinde verilerin ne kadar süre tutarlı olacağını vaat eder, ancak belirli bir zaman seviyesine (ikinci seviye gibi) mümkün olduğunca çok şey sağlayacaktır. ), veriler tutarlı bir duruma ulaşabilir.
3. Nihai tutarlılık
Nihai tutarlılık, zayıf tutarlılığın özel bir durumudur.Sistem, belirli bir süre içinde veri tutarlı bir duruma ulaşılmasını sağlayacaktır.
Nihai tutarlılığın burada ayrı ayrı önerilmesinin nedeni, zayıf tutarlılıkta şiddetle tavsiye edilen bir tutarlılık modeli olması ve aynı zamanda endüstrinin büyük dağıtılmış sistemlerde veri tutarlılığı için önerdiği bir model olmasıdır.
04
-
Tutarlılıkla ilgili teoriler
ASİT
ACID, veritabanı (MySQL) işlemlerinin doğru yürütülmesi için karşılanması gereken dört özelliğin kısaltmasıdır.
1. Atomiklik (atomiklik)
Bir işlemin tüm işlemleri tamamlanmış veya tamamlanmamıştır.
Sözde işlem, bir dizi veri işleminden oluşan eksiksiz bir mantıksal süreci ifade eder. Örneğin, bir banka havalesi işlemi iki işlemden oluşur: tutarın kaynak hesaptan düşülmesi ve tutarı hedef hesaba ekleme.
2. Tutarlılık (Tutarlılık)
İşlem başlamadan önce ve işlem bittikten sonra verilerin bütünlük kısıtlamalarını ifade eder.
İki anlamı vardır:
a) Veritabanı mekanizması seviyesinde, işlemin yürütülmesinden önce ve sonra veriler, benzersiz kısıtlamalar ve yabancı anahtar kısıtlamaları gibi ayarlanan kısıtlamaları karşılayabilir;
b) İşletme düzeyinde, uygulama geliştiriciler iş tutarlılığını sağlar. Banka havalesini örnek olarak alırsak, A ve B hesaplarının bakiyelerinin havale öncesi ve sonrası aynı olması gerekir.
3. İzolasyon (izolasyon)
Veritabanı, birden çok eşzamanlı işlemin çapraz yürütülmesinden kaynaklanan veri tutarsızlıklarını önleyebilir.
4. Dayanıklılık (kalıcılık)
İşlem sona erdikten sonra, verilerin değiştirilmesi kalıcıdır ve önceki duruma geri döndürülmez.
Dağıtılmış bir sistemde, ACID veritabanının benzer özellikleri vardır, yani CAP, bunlar:
1. Tutarlılık
Grup düğümündeki verilerin tutarlı olduğunu vurgulayın. Dağıtımda tutarlılık, güçlü tutarlılık ve zayıf tutarlılığı içerir Güçlü tutarlılık, herhangi bir zamanda herhangi bir düğüm tarafından görülen verilerin aynı olduğu anlamına gelir;
Zayıf tutarlılığın genel olarak anlaşılması nihai tutarlılıktır, yani başlangıçta farklılıklar olabilir, ancak zamanla nihai veriler tutarlı kalır.
2. Kullanılabilirlik
Kümenin herhangi bir zamanda normal kullanımda olduğunu vurgulayın
3. Bölüm Tolerans bölümü hata toleransı
Kümenin bir parçası kırılsa bile, diğer parçası yine de normal şekilde çalışabilir.
Bu üç özellik, diğerinin pahasına sadece ikisini tatmin edebilir. Bu aynı zamanda çoğu sistem için de geçerlidir:
Genel olarak konuşursak, dağıtılmış kümeler P önceliğini garanti eder, yani kümenin bazı düğümlerinin nekrozu tüm kümenin kullanımını etkilemez ve ardından C ve A'yı takip eder. Çünkü P-bölüm kullanılabilirliğinden vazgeçerseniz, birden çok geleneksel veritabanını doğrudan kullanmak daha iyidir. Aslında, birçok mikro hizmet alt veritabanı ve tablo aynıdır.
Güçlü bir tutarlılık peşinde koşarsanız, bu kaçınılmaz olarak kullanılabilirlikte düşüşe yol açacaktır. Örneğin, Master-Slave senaryosunda, Master, verilerin yazılmasından ve ardından her bir düğüme dağıtılmasından sorumludur.Tüm düğümler, yazılmadan önce başarıyla yazılır.Bu, güçlü tutarlılık sağlar, ancak gecikme de artarak kullanılabilirlik ile sonuçlanır. azaltın.
Bu nedenle, kullanılabilirlik ve tutarlılık arasında, zamanlama tutarlılığı, nihai tutarlılık vb. Gibi çeşitli çözümler ortaya çıkmıştır.
BASE teorisi, CAP teorisinin bir uzantısıdır. Temel fikir, güçlü tutarlılık elde edilemese bile (Güçlü Tutarlılık, CAP tutarlılığı güçlü tutarlılıktır), uygulamaların nihai tutarlılığı elde etmek için uygun yöntemleri kullanabileceğidir (Nihai Tutarlılık).
BASE Temelde Kullanılabilir, Yumuşak Durum, Nihai Tutarlılık anlamına gelir.
1. Temel Olarak Kullanılabilir
Temel kullanılabilirlik, dağıtılmış bir sistem arızalandığında, kullanılabilirliğin bir kısmının kaybolmasına, yani çekirdeğin mevcut olmasının garanti edildiği anlamına gelir.
E-ticaret yükseldiğinde, trafikteki artışla başa çıkmak için bazı kullanıcılar sürüm düşürme sayfasına yönlendirilebilir ve hizmet katmanı yalnızca sürüm düşürme hizmetleri sağlayabilir. Bu, kısmi kullanılabilirliğin kaybının bir tezahürüdür.
2. Yumuşak Durum
Esnek durum, sistemin bir ara duruma sahip olmasına izin vermeyi ifade eder ve ara durum, sistemin genel kullanılabilirliğini etkilemez.
Dağıtılmış depolamada, genellikle bir veri parçasının en az üç kopyası vardır Farklı düğümler arasında kopyaların senkronizasyonuna izin veren gecikme, yumuşak durumun bir tezahürüdür. Mysql replikasyonunun zaman uyumsuz replikasyonu da bir tezahürdür.
3. Nihai Tutarlılık
Nihai tutarlılık, sistemdeki tüm veri kopyalarının belirli bir süre sonra tutarlı bir duruma ulaşabileceği anlamına gelir. Zayıf tutarlılık, güçlü tutarlılığın tersidir Nihai tutarlılık, zayıf tutarlılığın özel bir durumudur.
BASE ve ACID, birbirine taban tabana zıt iki tasarım konseptini temsil eder.ACID, tutarlılığa odaklanır ve geleneksel ilişkisel veritabanlarının (MySQL) tasarım felsefesidir, BASE ise yüksek kullanılabilirliğe odaklanır.
Günümüzün büyük ölçekli, çapraz veri merkezi dağıtılmış sistemlerinin çoğu (bulut bilişim gibi) bu iki tasarım kavramını aynı anda benimser ve ikisi arasında bir denge arar.
-son-