Zookeeper - Genel Bakış
ZooKeeper, büyük ana bilgisayar kümesini yönetmek için dağıtılmış bir koordinasyon hizmetidir. Dağıtık bir ortamda bir hizmeti koordine etmek ve yönetmek karmaşık bir süreçtir. ZooKeeper, basit mimarisi ve API'si ile bu sorunu çözüyor. ZooKeeper, geliştiricilerin, uygulamanın dağıtılmış doğası hakkında endişelenmeden temel uygulama mantığına odaklanmasına olanak tanır.
ZooKeeper çerçevesi başlangıçta "Yahoo!" uygulamalarına kolay ve sağlam bir şekilde erişmek için. Daha sonra Apache ZooKeeper, Hadoop, HBase ve diğer dağıtılmış çerçeveler tarafından kullanılan organize hizmet için bir standart haline geldi. Örneğin, Apache HBase, dağıtılmış verilerin durumunu izlemek için ZooKeeper'ı kullanır.
Daha ileri gitmeden önce, dağıtılmış uygulamalar hakkında bir iki şey bilmemiz önemlidir. Öyleyse tartışmaya dağıtılmış uygulamalara hızlı bir genel bakışla başlayalım.
Dağıtılmış Uygulama
Dağıtılmış bir uygulama, belirli bir görevi hızlı ve verimli bir şekilde tamamlamak için kendi aralarında koordinasyon sağlayarak, bir ağdaki birden fazla sistem üzerinde belirli bir zamanda (eşzamanlı olarak) çalışabilir. Normalde, dağıtık olmayan bir uygulama (tek bir sistemde çalışan) tarafından tamamlanması saatler alacak olan karmaşık ve zaman alıcı görevler, ilgili tüm sistemin bilgi işlem yeteneklerini kullanarak dağıtılmış bir uygulama tarafından dakikalar içinde yapılabilir.
Dağıtılmış uygulamayı daha fazla sistemde çalışacak şekilde yapılandırarak görevi tamamlama süresi daha da azaltılabilir. Dağıtılmış bir uygulamanın çalıştığı bir sistem grubuna,Cluster ve bir kümede çalışan her makineye Node.
Dağıtılmış bir uygulamanın iki bölümü vardır, Server ve Clientuygulama. Sunucu uygulamaları gerçekte dağıtılır ve ortak bir arabirime sahiptir, böylece istemciler kümedeki herhangi bir sunucuya bağlanabilir ve aynı sonucu alabilir. İstemci uygulamaları, dağıtılmış bir uygulamayla etkileşim kurmak için kullanılan araçlardır.
Dağıtık Uygulamaların Faydaları
Reliability - Bir veya birkaç sistemin arızalanması, tüm sistemin arızalanmasına neden olmaz.
Scalability - Uygulamanın konfigürasyonunda kesinti olmadan küçük değişikliklerle daha fazla makine eklenerek performans gerektiğinde ve gerektiğinde artırılabilir.
Transparency - Sistemin karmaşıklığını gizler ve kendisini tek bir varlık / uygulama olarak gösterir.
Dağıtılmış Uygulamaların Zorlukları
Race condition- Belirli bir görevi yerine getirmeye çalışan iki veya daha fazla makinenin, herhangi bir zamanda yalnızca tek bir makine tarafından yapılması gerekir. Örneğin, paylaşılan kaynaklar herhangi bir zamanda yalnızca tek bir makine tarafından değiştirilmelidir.
Deadlock - Birbirinin süresiz olarak tamamlanmasını bekleyen iki veya daha fazla işlem.
Inconsistency - Verilerin kısmi hatası.
Apache ZooKeeper Ne İşe Yarıyor?
Apache ZooKeeper, sağlam senkronizasyon teknikleriyle kendi aralarında koordinasyon sağlamak ve paylaşılan verileri korumak için bir küme (düğüm grubu) tarafından kullanılan bir hizmettir. ZooKeeper, dağıtılmış bir uygulama yazmak için hizmetler sağlayan dağıtılmış bir uygulamadır.
ZooKeeper tarafından sağlanan yaygın hizmetler aşağıdaki gibidir -
Naming service- Bir kümedeki düğümleri ada göre tanımlama. DNS'ye benzer, ancak düğümler içindir.
Configuration management - Bir katılan düğüm için sistemin en son ve güncel yapılandırma bilgileri.
Cluster management - Bir kümedeki bir düğüme gerçek zamanlı olarak katılma / ayrılma ve düğüm durumu.
Leader election - Koordinasyon amacıyla lider olarak bir düğüm seçmek.
Locking and synchronization service- Verileri değiştirirken kilitlemek. Bu mekanizma, Apache HBase gibi diğer dağıtılmış uygulamaları bağlarken otomatik hata kurtarmada size yardımcı olur.
Highly reliable data registry - Bir veya birkaç düğüm çalışmadığında bile verilerin kullanılabilirliği.
Dağıtılmış uygulamalar birçok fayda sağlar, ancak birkaç karmaşık ve çözülmesi zor zorlukları da beraberinde getirir. ZooKeeper çerçevesi, tüm zorlukların üstesinden gelmek için eksiksiz bir mekanizma sağlar. Yarış durumu ve kilitlenme kullanılarak ele alınırfail-safe synchronization approach. Diğer bir ana dezavantaj, ZooKeeper'ın çözdüğü veri tutarsızlığıdır.atomicity.
ZooKeeper'ın Faydaları
ZooKeeper kullanmanın avantajları şunlardır -
Simple distributed coordination process
Synchronization- Sunucu süreçleri arasında karşılıklı dışlama ve işbirliği. Bu süreç, yapılandırma yönetimi için Apache HBase'de yardımcı olur.
Ordered Messages
Serialization- Verileri belirli kurallara göre kodlayın. Uygulamanızın tutarlı bir şekilde çalıştığından emin olun. Bu yaklaşım, çalışan iş parçacıkları yürütmek için kuyruğu koordine etmek için MapReduce'da kullanılabilir.
Reliability
Atomicity - Veri aktarımı başarılı olur veya tamamen başarısız olur, ancak hiçbir işlem kısmi değildir.