Zookeeper tarafından dağıtılmış kilit ve Zookeeper'a dayalı liderlik seçimi hakkında derinlemesine anlayış

Zookeeper özellikleri

Hayvan bekçisi düğüm türü

Yukarıdaki "Zookeeper Architecture and FastLeaderElection Mechanism" bölümünde belirtildiği gibi, Zookeeper Linux dosya sistemine benzer bir ağaç yapısı sağlar. Ağaç yapısındaki her düğüme znode adı verilir ve aşağıdaki iki boyutta sınıflandırılabilir

Kalıcı ve Geçici

Persist düğümü oluşturulduktan sonra, yanlışlıkla kaybolmaz, sunucu yeniden başlatılsa bile, yine de var olacaktır. Her Persist düğümü veri veya alt düğüm içerebilir

Geçici düğüm, istemci ile onu oluşturan sunucu arasındaki oturum sona erdiğinde otomatik olarak silinir. Sunucunun yeniden başlatılması, oturumun sona ermesine neden olur, bu nedenle Geçici znode de bu sırada otomatik olarak silinecektir.

Sıralı ve Sırasız

Sıralı olmayan düğüm Birden çok istemci aynı sıralı olmayan düğümü aynı anda oluşturduğunda, yalnızca biri başarıyla oluşturulabilir ve diğerleri eşit şekilde başarısız olur. Ve oluşturulan düğüm adı, oluşturma sırasında belirtilen düğüm adıyla tamamen aynıdır.

Sıra düğümü, oluşturulan düğüm adı, belirtilen addan sonra 10 basamaklı bir ondalık sayıya sahiptir. Birden çok istemci aynı ada sahip düğümler oluşturduğunda, bunların tümü başarıyla oluşturulabilir, ancak seri numaraları farklıdır

Zookeeper semantik garantisi

Zookeeper, karmaşık hizmetler sağlamak için bu özellikleri kullanabilmemiz için aşağıdaki anlamsal garantileri sağlarken basit ve etkilidir.

Sıralı Müşteri tarafından başlatılan güncellemeler, gönderildikleri sırayla Zookeeper'a uygulanacaktır.

Atomik güncelleme işlemleri başarılı veya başarısız, ara durum yok

Tek sistem aynası Bir istemci, hangi sunucuya bağlanırsa bağlansın tam olarak aynı sistem aynasını (yani tam olarak aynı ağaç yapısını) görebilir. Not: Yukarıdaki "Zookeeper Architecture and FastLeaderElection Mechanism" bölümünde tanıtılan ZAB protokolüne göre, yazma işlemi güncellemenin tüm takipçiler tarafından hemen onaylanacağını garanti etmez, bu nedenle bazı takipçiler aracılığıyla verileri okumak, en son verilerin ve bazı takipçilerin okunacağını garanti etmez. Lider en son verileri okuyabilir. Tek bir sistem aynası sağlamanız gerekiyorsa, okuma işleminden önce eşitleme yöntemini kullanabilirsiniz.

Güvenilirlik Bir güncelleme işlemi kabul edildiğinde, diğer güncelleme işlemleri tarafından üzerine yazılmadığı sürece yanlışlıkla kaybolmaz.

Sonunda tutarlı yazma işlemleri sonunda (hemen değil) istemci tarafından görülebilir

Zookeeper Watch mekanizması

Zookeeper'a yapılan tüm okuma işlemlerine bir Watch eşlik edebilir. İlgili veriler değiştiğinde, Saat tetiklenir. Saat aşağıdaki özelliklere sahiptir

Aktif İtme İzleme tetiklendiğinde, Zookeeper sunucusu güncellemeyi istemci sorgulamasına gerek kalmadan istemciye aktif olarak gönderir.

Veriler bir kez değiştiğinde, İzle yalnızca bir kez tetiklenecektir. Müşteri sonraki güncellemelerden haberdar edilmek istiyorsa, Saat tetiklendikten sonra bir Saati tekrar kaydetmelidir.

Görünürlük Bir müşteri okuma talebine bir Saat eklerse ve Saat tetiklenir ve verileri tekrar okursa, müşterinin İzleme mesajını almadan önce güncellenmiş verileri görmesi kesinlikle imkansızdır. Başka bir deyişle, güncelleme bildirimi güncelleme sonucundan önce gelir.

Sıralı Birden fazla güncelleme birden fazla İzlemeyi tetiklerse, İzlemelerin tetiklenme sırası güncelleme sırası ile aynıdır.

Dağıtılmış kilit ve lider seçiminin kilit noktaları

En fazla kişi kilidi edinir / lider olur

Dağıtılmış kilitler için (burada özellikle özel kilitlere atıfta bulunur), herhangi bir zamanda yalnızca bir işlem (tek işlemli kilitler için, tek iş parçacıklı) herhangi bir zamanda kilidi alabilir.

Liderlik seçimlerinde, herhangi bir zamanda en fazla bir kişi Lider olarak seçilebilir. Aksi takdirde bölünmüş beyin görünecektir (Bölünmüş beyin)

Yeniden girişi kilitleyin / lider olduğunuzu onaylayın

Dağıtılmış kilitler için, kilidi alan sürecin kilidi serbest bırakmadan, yani kilidin yeniden girişinden önce kilidi tekrar alabilmesini sağlamak gerekir.

Liderlik seçimleri için, liderin liderliği elde ettiğini, yani lider olduğunu doğrulayabilmesi gerekir.

Kilidi kaldır / liderliği bırak

Kilit alıcısı, elde edilen kilidi doğru bir şekilde serbest bırakabilmelidir ve kilidi edinme süreci aşağıya indiğinde, kilit otomatik olarak serbest bırakılmalıdır, böylece diğer rakipler kilidi alabilir, böylece bir kilitlenme durumundan kaçınabilir.

Liderler, gönüllü olarak liderlikten vazgeçebilmeli ve liderin süreci çöktüğünde, liderlik otomatik olarak serbest bırakılmalıdır, böylece diğer katılımcılar liderlik için tekrar rekabet edebilir ve sahipsiz bir duruma girmekten kaçınabilirler.

Algı kilidi bırakma / liderliğin terk edilmesi

Kilidi alan taraf kilidi serbest bıraktığında, kilidin diğer rakiplerinin kilidin açıldığını hissedebilmesi ve kilidi tekrar elde etmeye çalışması gerekir.

Orijinal lider liderlikten vazgeçtiğinde, diğer katılımcılar olayı algılayabilmeli ve seçim sürecini yeniden başlatabilmelidir.

Haksız liderlik seçimi

Yukarıdaki yönlerden, dağıtık kilit ile lider seçiminin teknik noktalarının çok benzer olduğu ve aslında uygulama mekanizmasının da benzer olduğu görülmektedir. Bu bölüm liderlik seçimini, ikisinin uygulama ilkelerini göstermek için bir örnek olarak alır ve dağıtılmış kilitlerin uygulama ilkeleri hemen hemen aynıdır.

Ana seçim süreci

Aşağıdaki şekilde gösterildiği gibi, aynı anda Lider için rekabet eden üç Zookeeper istemcisi olduğunu varsayalım. Bu üç istemci, Geçici ve Sırasız tipteki düğümleri Zookeeper kümesine aynı anda kaydeder ve yol / zkroot / leader'dir (mühendislik uygulamasında, yol adı özelleştirilebilir).

Yukarıdaki şekilde gösterildiği gibi, sıralı olmayan bir düğüm olduğu için, bu üç istemciden yalnızca biri başarıyla oluşturulacak ve diğer düğümlerin oluşturulması başarısız olacaktır. Bu noktada, başarıyla oluşturulan müşteri (yukarıdaki şekilde Müşteri 1) Lider olmayı başarıyla seçer. Diğer müşteriler (yani yukarıdaki şekilde Müşteri 2 ve İstemci 3) şu anda tüm Takipçilerdir.

Liderlikten vazgeçin

Lider, liderlikten gönüllü olarak vazgeçmeyi planlıyorsa, / zkroot / lider düğümünü silin.

Lider süreci beklenmedik bir şekilde çökerse, onunla Zookeeper arasındaki oturum da sona erecektir.Düğüm, Geçici tip bir düğüm olduğu için otomatik olarak silinecektir.

Şu anda, / zkroot / lider düğümü artık mevcut değil. Seçime katılan diğer müşteriler için, önceki Lider liderliği bıraktı.

Liderliğin terk edildiği algısı

Yukarıdaki şekilden de görülebileceği gibi, Takipçi olmanın yanı sıra, bir node oluşturamayan bir düğüm de / zkroot / lider ile bir Watch kaydedecektir.Lider liderlikten vazgeçtiğinde, yani düğüm silindiğinde tüm Takipçiler bilgilendirilecektir.

Yeniden seçim

Eski Liderin liderliği bıraktığını anladıktan sonra, tüm Takipçiler aşağıdaki şekilde gösterildiği gibi yeni bir liderlik seçimi turu başlatabilir.

Yukarıdaki resimden görülebilir

Yeni lider seçim yöntemi turu, orijinal lider seçimi yöntemiyle tamamen aynıdır. Her ikisi de bir düğüm oluşturma isteği başlatır. Oluşturma başarılı olursa, Liderdir, aksi takdirde Takipçidir ve İzleyen düğümü izler.

Yeni seçim turunun sonuçları önceden tahmin edilemez ve ilk tur seçim sıralarıyla hiçbir ilgisi yok. Planın adaletsiz mod olarak adlandırılmasının nedeni budur

Haksız modellerin özeti

Haksız modelin uygulanması basittir ve her seçim turunun yöntemi tamamen aynıdır.

Çok fazla yarışmacı olmadığında, verimlilik yüksektir. Her Takipçi, farklı zamanlarda Watch aracılığıyla düğümün silindiğini algılar.Bir Takipçi bilgilendirildiği ve bir kampanya başlattığı sürece, o anda yeni bir Liderin seçilmesini sağlayabilir.

Zookeeper kümesinin neden olduğu yük büyüktür, bu nedenle ölçeklenebilirlik zayıftır. Seçime on binlerce müşteri katılıyorsa, bu Zookeper'a aynı anda on binlerce yazma talebi gönderileceği anlamına gelir. "Zookeeper Architecture" makalesinde de belirtildiği gibi, Zookeeper tek noktadan yazma sorunu yaşıyor ve yazma performansı yüksek değil. Aynı zamanda, Lider liderlikten vazgeçtiğinde, Zookeeper'ın aynı anda on binlerce Takipçiye bildirimde bulunması gerekir ve yük ağırdır.

Adil liderlik seçimi

Ana seçim süreci

Aşağıdaki şekilde gösterildiği gibi, adil liderlik seçiminde, her müşteri bir / zkroot / lider düğümü oluşturur ve türleri Ephemeral ve Sequence'dir.

Sıra tipi bir düğüm olduğu için, yukarıdaki şekildeki üç istemcinin tümü başarıyla yaratılmıştır, ancak sıra numaraları farklıdır. Şu anda, her müşteri başarıyla oluşturduğu düğümün sıra numarasının şu anda en küçük olup olmadığına karar verecektir. Öyleyse, müşteri Lider, aksi takdirde Takipçi'dir.

Yukarıdaki şekilde, İstemci 1 tarafından oluşturulan düğümün sıra numarası 1, İstemci 2 tarafından oluşturulan düğümün sıra numarası 2 ve İstemci 3 tarafından oluşturulan düğümün sıra numarası 3'tür. Minimum sıra numarası 1 olduğundan ve düğüm İstemci 1 tarafından oluşturulduğundan, İstemci 1 Liderdir.

Liderlikten vazgeçin

Lider liderlikten vazgeçmek için inisiyatif alırsa, oluşturduğu düğümü silin.

Liderin süreci beklenmedik bir şekilde durursa, onunla Zookeeper arasındaki oturum sona erer, yarattığı düğüm Ephemeral türünde olduğu için düğüm otomatik olarak silinir.

Liderliğin terk edildiği algısı

Haksız moddan farklı olarak, her Takipçi, Lider tarafından oluşturulan bir düğüm değil, İzleme numarası kendi sayısından sadece daha küçük olan bir düğümdür.

Yukarıdaki şekilde toplam üç düğüm 1, 2 ve 3 vardır, bu nedenle İstemci 2 İzle / zkroot / lider1, İstemci 3 İzle / zkroot / lider2. (Not: Seri numarası tek bir rakam değil, 10 rakam olmalıdır, burada kolaylık sağlamak için bunun yerine tek bir rakam kullanılır)

Lider aşağı indiğinde ve / zkroot / leader1 silindiğinde, İstemci 2'ye bildirim gönderilebilir. Şu anda, saat / zkroot / leader2 olduğu için İstemci 3'e bildirimde bulunulmayacak.

Yeniden seçim

Müşteri 2'ye / zkroot / leader1'in silindiği bildirildikten sonra, hemen yeni Lider olmayacaktır. Ancak önce seri numaranızın şu anda en küçük seri numarası olup olmadığına karar verin. Bu senaryoda, seri numarası gerçekten de en küçük olanıdır. Bu nedenle, Müşteri 2 yeni Lider olur.

Burada, Müşteri 1 liderliği bırakmadan önce Müşteri 2'nin düşmesi durumunda Müşteri 3'ün bilgilendirileceğine dikkat edilmelidir. Şu anda, İstemci 3 hemen lider olmayacaktır, ancak önce seri numarası 3'ün mevcut en küçük seri numarası olup olmadığını belirlemelidir. Açıktır ki, Müşteri 1 tarafından oluşturulan / zkroot / leader1 hala orada olduğundan, Müşteri 3 yeni Lider olmayacak ve İstemci 2'nin sıra numarası 2'den, yani 1'den önce sıra numarasına bir İzleme oluşturacaktır. İşlem aşağıdaki şekilde gösterilmektedir.

Adalet modelinin özeti

Uygulaması nispeten karmaşık

İyi ölçeklenebilirlik, her istemci yalnızca bir düğümü izler ve bir düğüm her silindiğinde yalnızca bir istemcinin bilgilendirilmesi gerekir

Eski lider liderliği bıraktığında, diğer müşteriler de adalet modelinin kökeni olan seçim sırasına (yani düğüm sayısına) göre yeni lider olacaktır.

Gecikme, adil olmayan moddan daha yüksektir, çünkü yeni bir lider seçmeden önce belirli bir düğümün bilgilendirilmesini beklemesi gerekir.

sonuç olarak

Hayvan bekçisi tabanlı lider seçimi veya dağıtılmış kilitlerin uygulanması, Zookeeper düğümlerinin özelliklerine ve bildirim mekanizmasına dayanır. Bu özelliklerden tam olarak yararlanılarak, diğer senaryolara uygun dağıtılmış uygulamalar da geliştirilebilir.

Ant Financial'ın 100 milyon düzeyinde eşzamanlılık altında mobil uçtan uca ağ erişim mimarisinin analizi
önceki
Kandırılmaktan bunalıma giren sarhoş bir adam yüz dolarlık banknot dağıtır ve intihar etmek ister.
Sonraki
Tayland'da okumak için sahip olmanız gereken yetenekleri biliyor musunuz?
Lisansüstü eğitim için Tayland'a gitmek ister misiniz, bunların hepsini biliyor musunuz?
iyi haberler! Tayland'da hastaneden taburcu edilen iki önemli hasta: Tayland, bulaşıcı hastalıkları önleme ve kontrol etme kabiliyetiyle dünyada altıncı sırada
Bahşiş verme bilgisi ile ilgili olarak, Tayland seyahati için ipucu açmanın doğru yolu
Tmall 618 Tayland Reklamı: Tanrı "Sıcak" dizisini tersine çeviriyor
Tayland'da "Tayland'ı Görüntüleyin" Ulaşımı
İpuçları: Seyahat sırasında güvenlik için "tatil" yapmayın
Yurtdışında okurken oynamayı unutmayın, dil artık bir engel değil
Tayland'da okumak için bir okul seçerken dikkate alınması gereken faktörler nelerdir?
Tayland'da okurken neden ehliyet almıyorsunuz?
Çin ve Tayland çok farklı! Taylandlı uğurlu sayılar yaptınız mı?
Taylandın komik rüya reklamı "Dilek Penceresi": Hayat sana bir tokat attıysa
To Top