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.