ZooKeeper'ın tipik uygulama senaryolarını gösterin

Zookeeper, Dubbo, Hadoop, Kafka, vb. Gibi birçok çerçevede uygulamalara sahiptir, ancak birkaç tipik kullanım vardır. Bu tür kullanımlarda ustalaştıktan sonra, ilgili çerçevelerde zookeeper uygulamasına bakmak kolaydır. Sonraki makale Makale, daha derin bir anlayışa sahip olmak için zookeeper'ın dubbo'da kullanımını ayrıntılı olarak tanıtacaktır.

Zookeeper'ın veri modeli, dosya sistemine benzerdir. Her bir düğüm, zookeeper'daki en küçük veri birimi olan znode olarak adlandırılır. Her znode, verileri rapor edebilir ve hiyerarşik bir öznitelik yapısı oluşturmak için alt düğümleri bağlayabilir.

Aşağıdaki dört tür düğümü oluşturabilirsiniz (znode)

  • Kalıcı düğüm: Düğüm oluşturulduktan sonra, aktif olarak silinene kadar her zaman zookeeper sunucusunda bulunacaktır.

  • Kalıcı sıra düğümü: her düğüm, birinci düzey alt düğümleri için bir sırayı korur

  • Geçici düğüm: Geçici bir düğümün yaşam döngüsü, istemcinin oturumuyla tutarlıdır. İstemci oturumu başarısız olduğunda, düğüm otomatik olarak temizlenir

  • Geçici sıra düğümü: geçici düğüme ek bir sıra özelliği eklenir

  • Yaygın olarak kullanılan komutları kısaca gösterin

    yol verisi acl oluştur

    -s: sıralı düğümler oluşturun -e: geçici düğümler oluşturun yol: yol verileri: veri acl: izinler

    Oluştur, varsayılan olarak kalıcı düğümler oluşturur

    oluştur / seviye-1123 oluştur / seviye-1 / seviye-1-2456 get / level-1 (düğüm seviyesi-1, çıktı 123'ün değerini alın) ls / seviye-1 (Seviye-1 düğümünün alt düğümlerini alın, çıktı) // Bir sıra düğümü oluşturun oluştur -s / düğümler 123 (aslında düğümler0000000003) oluştur -s / düğümler 456 (aslında düğümler0000000004)

    Yukarıdaki komutu uyguladıktan sonra veri yapısı aşağıdaki gibidir

    Sıralı düğümlerin özellikleri hakkında kısa bir konuşma. Bir sıra düğümü her oluşturulduğunda, zk otomatik olarak yoldan sonra 10 basamaklı bir sayı (sayaç) ekler, örneğin < yol > 0000000001, < yol > 0000000002, ...... Bu sayacın aynı ebeveyn düğüm altında benzersiz olması garanti edilebilir. Zk içinde, bu sayacı temsil etmek için 4 baytlık işaretli bir tamsayı kullanılır.Yani, sayacın boyutu 2147483647'yi aştığında taşma meydana gelir. Üst düğüm altında bir sıra düğümü her oluşturulduğunda, boyut 1 artar, Yukarıdaki resimde 3 ila 4

    Zookeeper, müşterinin sunucuya bir izleyici kaydetmesine olanak tanıyan dağıtılmış veri yayınlama / abonelik sağlar.Sunucudaki bazı belirli olaylar izleyiciyi tetiklediğinde, dağıtılmış bildirim işlevini gerçekleştirmek için belirtilen istemciye bir olay bildirimi gönderilir. .

    Sadece birkaç izleyici etkinlik türü verin

    Etkinlik tipi

    Tetikleme koşulları

    NodeCreated (düğüm oluşturma)

    Watcher tarafından izlenen ilgili veri düğümü oluşturulur

    NodeDeleted (düğüm silindi)

    Watcher tarafından izlenen ilgili veri düğümü silinir

    NodeDataChanged (düğüm veri değişikliği)

    Watcher tarafından izlenen ilgili veri düğümünün veri içeriği değişti

    NodeChildrenChanged (alt düğüm değişikliği)

    Watcher değişiklikleri tarafından izlenen ilgili veri düğümünün alt düğüm listesi

    Temel bilgiler açıklandıktan sonra, hayvan bakıcısının rolü resmi olarak aşağıda paylaşılmıştır.

    1. Veri yayınlama / abone olma

    Veri yayınlama / abone olma (Yayınlama / Abone Olma) sistemi, sözde yapılandırma merkezi, Gu Ming, yayıncının, abonelerin verilere abone olmaları için verileri bir veya bir dizi zookeeper düğümünde yayınladığını ve böylece dinamik olarak veri elde etme amacına ulaştığını düşünüyor. , Yapılandırma bilgilerinin merkezi yönetimini ve verilerin dinamik güncellemesini elde etmek.

    Zookeeper, bir yayınlama ve abone olma sistemini uygulamak için bir itme-çekme kombinasyonu kullanır: istemci, dikkat etmesi gereken düğümü sunucuya kaydeder.Düğümün verileri değiştiğinde, sunucu, karşılık gelen istemciye bir Watcher olay bildirimi gönderir ve müşteri bunu alır. Bu mesaj bildirildikten sonra, sunucudan en son verileri almak için inisiyatif almanız gerekir.

    Programın her zaman yapılandırılması gerekir Program birden çok makineye dağıtılırsa, yapılandırmayı değiştirmek zorlaşır. Tamam, şimdi tüm bu yapılandırmaları zookeeper'a koyun, onları zookeeper'ın belirli bir dizin düğümüne kaydedin, ardından ilgili tüm uygulamalar bu dizin düğümünü izleyecektir.Yapılandırma bilgileri değiştiğinde, her uygulama zookeeper alacak Ve sonra zookeeper'dan yeni konfigürasyon bilgilerini alın ve sisteme uygulayın

    2. Yük dengeleme

    Her sunucu, başladığında zookeeper'ın sunucuları düğümü altında geçici bir düğüm kaydedecektir (geçici düğüm kaydedilir çünkü hizmet mevcut olmadığında, geçici düğüm kaybolur ve istemci bu sunucuyu talep etmez), her istemci Terminal başladığında, mevcut tüm çalışan sunucuların bir listesini almak için sunucular düğümüne gidecek ve isteğin belirli bir yük dengeleme algoritması aracılığıyla hangi sunucuya gönderilmesi gerektiğini hesaplayacaktır.

    3. Dağıtılmış benzersiz bir kimlik oluşturun

    Geçmişteki tek veritabanı tekli fenotip sisteminde, veritabanı alanının auto_increment özelliği, genellikle her kayıt için otomatik olarak benzersiz bir kimlik oluşturmak için kullanılabilir. Ancak alt veritabanı ve alt tablodan sonra, veritabanının auto_increment özniteliğine güvenerek bir kaydı benzersiz şekilde tanımlamak imkansızdır. Bu noktada, dağıtılmış bir ortamda küresel olarak benzersiz bir kimlik oluşturmak için zookeeper'ı kullanabiliriz. Yöntem şu şekildedir: her yeni bir Kimlik üretildiğinde, kalıcı bir sıra düğümü yaratıldığında, oluşturma işlemi tarafından döndürülen düğüm sıra numarası yeni Kimliktir ve sonra sizinkinden daha küçük düğüm silinebilir.

    4. usta seçimi

    Ana seçim, dağıtılmış sistemlerde çok yaygın bir uygulama senaryosudur. Dağıtılmış bir sistemde, Master genellikle sistemdeki diğer sistem birimlerini koordine etmek için kullanılır ve dağıtılmış sistemin durumundaki değişikliklere karar verme hakkına sahiptir. Örneğin, okuma ve yazmanın birbirinden ayrıldığı bazı uygulama senaryolarında, istemcinin yazma talebi genellikle Ana Bilgisayar tarafından işlenirken, diğer senaryolarda ise genellikle karmaşık mantığı işlemekten ve işleme sonuçlarını kümeyle senkronize etmekten Ana birim sorumludur. Diğer sistem birimleri. Ana seçim, zookeeper'ın en tipik uygulama senaryosu olduğu söylenebilir

    Hayvan bakıcısının güçlü tutarlılığını kullanarak, dağıtılmış yüksek eşzamanlılık durumunda düğümlerin oluşturulmasının küresel benzersizliği garanti etmesini sağlayabilir, yani zookeeper, müşterinin tekrar tekrar mevcut bir veri düğümünü oluşturamamasını sağlar. Başka bir deyişle, birden fazla istemci aynı anda aynı düğümü oluşturma isteğinde bulunursa, sonunda yalnızca bir istemci başarıyla oluşturulabilir. Bu özelliği kullanarak, dağıtılmış bir ortamda Master seçimi yapmak kolaydır.

    İstemci kümesi, zookeeper üzerinde / master geçici düğümü oluşturur. Bu süreçte, yalnızca bir istemci bu düğümü başarıyla oluşturabilir, ardından bu istemci yönetici olur. Aynı zamanda, zookeeper'da başarılı bir şekilde bir düğüm oluşturmayan diğer istemciler, mevcut ana makinenin canlı olup olmadığını izlemek için düğümde / yöneticide değiştirilmiş bir izleyici kaydedecekler. Mevcut ana makinenin çalışmadığı tespit edildiğinde, kalan istemciler Ustayı yeniden seçin

    5. Dağıtılmış kilit

    Aynı JVM'de, bir dosyaya veri yazmak gibi bir kaynağa düzenli erişim sağlamak için, kaynaklara karşılıklı olarak münhasır erişim elde etmek için senkronize edilmiş veya ReentrantLock'u kullanabilirsiniz. İki program farklı JVM'lerde ise ve her ikisi Aynı dosyaya veri yazarken özel erişim nasıl sağlanır? Şu anda, dağıtılmış bir kilit gereklidir

    Şu anda dağıtılmış kilitlerin iki temel uygulaması vardır

  • Anahtar yoksa redis setnex (anahtar değeri) kullanın, anahtar varsa 0 döndür, 1 döndür

  • Zookeeper, özel kilit ve paylaşılan kilidi fark eder (okuma kilidi)

  • İşte özel kilitlerin uygulanmasına kısa bir giriş

    Uygulama ilkesi ana seçimle benzerdir.Tüm istemciler / exclusive_lock düğümü altında geçici alt düğümler / exclusive_lock / lock oluştururlar. Zookeeper, tüm istemcilerde yalnızca bir istemcinin başarıyla oluşturulabilmesini sağlar, ardından istemcinin elde ettiği kabul edilir. Kilitlemeden sonra, kilidi edinmemiş diğer istemcilerin, kilit düğümündeki değişiklikleri gerçek zamanlı olarak izlemek için / exclusive_lock düğümündeki çocuk düğüm değişiklikleri için bir izleyici kaydetmeleri gerekir.

    Kilidi serbest bırakmak için iki durum vardır

  • Şu anda kilidi alan istemci kapalıysa, zookeeper'daki geçici düğüm silinecek

  • İş mantığı normal şekilde yürütüldükten sonra, müşteri kendi oluşturduğu geçici düğümü silmek için inisiyatif alacaktır.

  • Tüm özel kilit edinme ve serbest bırakma süreci aşağıdaki şekil ile gösterilebilir

    6. Dağıtılmış kuyruk

    Aşağıdaki şekilde gösterildiği gibi, bir kuyruk olarak oluşturun / sıraya koyun ve ardından bir mesaj olarak bir sıra düğümü oluşturun (düğüm tarafından depolanan veriler mesaj içeriğidir), üretici her seferinde üretici gönderilecek bir mesaj olarak yeni bir düğüm oluşturduğunda, tüketici kuyruğu izler Alt düğümü değiştirilir (veya düzenli olarak sorgulanır), en küçük düğüm her tüketim mesajı olarak alındığında, işlemden sonra düğüm silinir. Bir FIFO (ilk giren ilk çıkar) kuyruğu uygulamaya eşdeğerdir. Not: Zookeeper, yüksek eşzamanlılık ve yüksek performans senaryoları için özel olarak tasarlanmamış CP'yi (tutarlılığı) vurgular.Yüksek eşzamanlılık ve yüksek qps kullanılırsa, dağıtılmış kuyrukların uygun olduğu düşünülmelidir.

    Bu makale WeChat genel hesabından yeniden üretilmiştir: Jav Zhitang

    Audi, 5 yılda 6 yeni yerli enerji aracı piyasaya sürüyor
    önceki
    Yeezy hala bir çift insan ayağı mı giyiyor? Size yeni Yeezy numaralarını nasıl giyeceğinizi söyleyin!
    Sonraki
    İki yıl sonra, "Kar Kraliçesi" tekrar geri döner ve her kızın sahip olduğu prenses rüyasını yeniden yazar.
    Acura'nın yeni TLX'inin yaklaşık 234.000 yuan denizaşırı bir fiyata satılacağı ortaya çıktı.
    Elektrifikasyon trendi altında, büyük otomobil şirketlerinin Los Angeles Otomobil Fuarı'nda nasıl "güzellik için yarıştıklarını" görelim.
    Tencent King Card'ın yeni dönem avantajları ortaya çıktı, Red Magic Mars satın alın ve telefon faturalarında 468 yuan'a kadar kazanın
    Kardeşin kız kardeşi Eling Park çöpleri topluyor ve bir saat boyunca çok çalışıyor, "sonuç" ideal değil
    Yerli olarak üretilen SP litografi makinesi nerede?
    Kan efsanesinin BUG'si devam ediyor mu? Chen Tianqiao iyi bir elini mi kırdı? Shanda 30 milyon oyuncunun kalbini soğutuyor
    Hayal gücünün ötesinde hız: OnePlus 6 uygulamalı deneyim
    DC'nin yeni filmi "Joker" ilk afişini yayınladı, yönetmen: "Bu bir trajedi"
    Si Xueming: Doğadaki taklit fenomenleri ideal blok zinciri yapısına nasıl ilham verebilir?
    Ellerinizi serbest bırakın, daha hızlı, daha kararlı ve daha özgür FIIL T1 gerçek kablosuz spor kulaklık deneyimi
    Audi Q7 e-tron plug-in hibrid otomobil 928.800 fiyatla satışa sunuldu
    To Top