Bir ZooKeeper topluluğu başladığında, istemcilerin bağlanmasını bekleyecektir. İstemciler, ZooKeeper topluluğundaki düğümlerden birine bağlanacaktır. Bir lider veya takipçi düğümü olabilir. Bir istemci bağlandığında, düğüm belirli istemciye bir oturum kimliği atar ve istemciye bir alındı bildirimi gönderir. İstemci bir onay almazsa, sadece ZooKeeper topluluğundaki başka bir düğüme bağlanmaya çalışır. Bir düğüme bağlandıktan sonra, istemci, bağlantının kaybolmadığından emin olmak için düğüme düzenli aralıklarla sinyal gönderecektir.

Bir istemci belirli bir znode'u okumak isterse, znode yolu ile düğüme bir okuma isteği gönderir ve düğüm kendi veritabanından alarak istenen znode'u döndürür. Bu nedenle, ZooKeeper topluluğunda okumalar hızlıdır.

Bir istemci verileri ZooKeeper grubunda depolamak isterse, znode yolunu ve verileri sunucuya gönderir. Bağlı sunucu, isteği lidere iletecek ve ardından lider, yazma talebini tüm takipçilere yeniden gönderecektir. Düğümlerin yalnızca çoğunluğu başarılı bir şekilde yanıt verirse, yazma isteği başarılı olur ve istemciye başarılı bir dönüş kodu gönderilir. Aksi takdirde yazma isteği başarısız olur. Düğümlerin katı çoğunluğuna Çekirdek adı verilir.

ZooKeeper Topluluğu'ndaki Düğümler
ZooKeeper topluluğunda farklı sayıda düğüme sahip olmanın etkisini analiz edelim.

Tek bir düğümümüz varsa, bu düğüm başarısız olduğunda ZooKeeper topluluğu başarısız olur. “Tek Nokta Arıza” ya katkı sağlar ve üretim ortamında tavsiye edilmez.

İki düğümümüz varsa ve bir düğüm başarısız olursa, ikiden biri çoğunluk olmadığı için çoğunluğa sahip değiliz.

Üç düğümümüz varsa ve bir düğüm başarısız olursa, çoğunluğa sahibiz ve bu yüzden minimum gereksinim budur. Bir ZooKeeper grubunun canlı bir üretim ortamında en az üç düğüme sahip olması zorunludur.

Dört düğümümüz varsa ve iki düğüm başarısız olursa, tekrar başarısız olur ve üç düğüme sahip olmaya benzer. Ekstra düğüm herhangi bir amaca hizmet etmez ve bu nedenle tek sayılarla düğüm eklemek daha iyidir, örneğin 3, 5, 7.

Tüm düğümlerin veritabanına aynı verileri yazması gerektiğinden, yazma işleminin ZooKeeper topluluğundaki bir okuma sürecinden daha pahalı olduğunu biliyoruz. Bu nedenle, dengeli bir ortam için çok sayıda düğüme sahip olmaktan daha az sayıda düğüme (3, 5 veya 7) sahip olmak daha iyidir.

Aşağıdaki diyagram, ZooKeeper WorkFlow'u gösterir ve sonraki tablo, farklı bileşenlerini açıklar.





Bileşen Açıklama
Yazma Yazma süreci lider düğüm tarafından yönetilir. Lider, yazma talebini tüm znode'lara iletir ve znode'lardan yanıt bekler. Znode'ların yarısı yanıt verirse, yazma işlemi tamamlanır.
Okuma Okumalar, belirli bir bağlı znode tarafından dahili olarak gerçekleştirilir, bu nedenle küme ile etkileşime girmeye gerek yoktur.
Çoğaltılmış Veritabanı Zookeeper'da veri depolamak için kullanılır. Her znode'un kendi veritabanı vardır ve her znode tutarlılık sayesinde her seferinde aynı verilere sahiptir.
Lider Lider, yazma isteklerini işlemekten sorumlu olan Znode'dur.
Takipçi Takipçiler, istemcilerden yazma istekleri alır ve bunları lider znode'a iletir.
İşlemci İsteği Yalnızca lider düğümde bulunur. Takipçi düğümünden gelen yazma isteklerini yönetir.
Atomik yayınlar Lider düğümden takipçi düğümlerine yapılan değişiklikleri yayınlamaktan sorumludur.