Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 8811|Yanıt: 0

Bir analitik hayvanat bahçesi görevlisi tam olarak ne yapar?

[Bağlantıyı kopyala]
Yayınlandı 18.07.2017 14:19:01 | | |

Zookeeper, Hadoop'un bir alt projesidir ve hadoop'tan türetilmiş olsa da, zookeeper'ın giderek hadoop dışındaki dağıtık çerçeveler kullandığını gördüm. Bugün zookeeper hakkında konuşmak istiyorum, bu makale zookeeper'ın nasıl kullanılacağına dair değil, hayvanat bahçesi bekçisinin pratik uygulamalarının neler olduğunu, hangi tür uygulamaların faydalarını kullanabileceğini ve son olarak hayvanat bahçesinin dağıtık web sitesi mimarisindeki rolü ele alacağım.
Zookeeper, büyük dağıtık sistemler için son derece güvenilir bir koordinasyon sistemidir. Bu tanımdan, hayvanat bahçesi görevlisinin dağıtık sistemler üzerinde hareket eden koordineli bir sistem olduğunu biliyoruz. Dağıtık sistemlerin neden bir koordinasyon sistemine ihtiyacı var? Nedenler şunlardır:

Dağıtık bir sistem geliştirmek çok zor bir şeydir ve bu zorluk esas olarak dağıtık sistemin "kısmi arızasında" yansımaktadır. "Kısmi arıza", ağın iki düğümü arasında bilgi iletimi anlamına gelir; ağ arızalanırsa, gönderici alıcının mesajı alıp almadığını bilemez ve bu arızanın nedeni karmaşıktır, alıcı mesajı ağ hatasından önce almış olabilir veya almamış olabilir veya alıcının süreci ölüymüştür. Göndericinin gerçek resmi almasının tek yolu, alıcıya yeniden bağlanıp alıcıya hatanın neden oluştuğunu sormaktır; bu da dağıtık sistem geliştirmedeki "kısmi arıza" problemidir.

Zookeeper, dağıtık sistemlerin "kısmi arızasını" çözmek için kullanılan bir çerçevedir. Zookeeper, dağıtık sistemlerin "kısmi arıza" sorunlarından kaçınmasına izin vermez, ancak dağıtık sistemlerin kısmi arızalarla karşılaştığında bu tür sorunları doğru şekilde ele almasına izin verir, böylece dağıtık sistemler normal çalışabilir.

Hayvanat bahçesi görevlisinin pratik kullanımından bahsedelim:

Senaryo 1: İstemciye belirli bir hizmeti sunan bir sunucu grubu vardır (örneğin, daha önce yaptığım dağıtık web sitesinin sunucu tarafı, ön uç kümesine hizmet sağlamak için dört sunucudan oluşan bir kümedir) ve umarız istemci her istediğinde sunucu kümesinde bir sunucu bulabilir, böylece sunucu istemcinin ihtiyaç duyduğu hizmetleri sağlayabilir. Bu senaryoda, programımızdaki sunucu listesinin olması gerekir; istemci istediğinde sunucu listesini oradan okuyoruz. Bu alt liste elbette tek bir düğüm sunucusunda depolanamaz, aksi takdirde düğüm kapanır ve tüm küme başarısız olur, umuyoruz ki bu liste o anda oldukça erişilebilir olur. Depolama listesindeki bir sunucu bozulursa, diğer sunucular hemen bozuk sunucuyu değiştirebilir ve kırık sunucu listeden çıkarılabilir; böylece başarısız sunucu tüm kümenin operasyonundan çekilebilir ve tüm bu işlemler başarısız sunucu tarafından değil, kümedeki normal sunucu tarafından işletilecektir. Bu, harici koşullar değiştiğinde veri öğelerinin durumunu aktif olarak değiştirebilen aktif dağıtık bir veri yapısıdır. Zookeeper çerçevesi bu hizmeti sağlar. Bu hizmetin adı: Birleşik Adlandırma Hizmeti, javaEE'deki JNDI hizmetine çok benzer.

Senaryo 2: Dağıtılmış kilit hizmeti. Dağıtık bir sistem, verileri okumak, verileri analiz etmek ve nihayet veriyi değiştirmek gibi verileri manipüle ettiğinde. Dağıtık sistemde, bu işlemler kümedeki farklı düğümlere dağıtılabilir, bu zaman veri işlem sürecinde tutarlılık sorunu vardır; tutarsızlık varsa, yanlış bir işlem sonucu elde ederiz; tek bir süreç programında tutarlılık sorunu kolayca çözülür, ancak dağıtık sisteme ulaşmak daha zordur, çünkü dağıtık sistemdeki farklı sunucuların işlemleri bağımsız süreçlerde bulunur ve işlemin ara sonuçları ve süreçleri ağ üzerinden iletilmesi gerekir. O zaman veri operasyonlarının tutarlılığını sağlamak çok daha zordur. Zookeeper, bu sorunu çözen bir kilit hizmeti sunar ve dağıtık veri işlemleri yaparken veri işlemlerinin tutarlılığını sağlamamıza olanak tanır.

Senaryo 3: Konfigürasyon yönetimi. Dağıtık bir sistemde, bir servis uygulamasını n sunucuya ayrı dağıtırız ve bu sunucuların yapılandırma dosyaları aynıdır (örneğin, tasarladığım dağıtık web sitesi çerçevesinde sunucu tarafında 4 sunucu vardır, 4 sunucudaki programlar aynıdır ve yapılandırma dosyaları aynıdır), yapılandırma dosyalarının yapılandırma seçenekleri değişirse, bu yapılandırma dosyalarını teker teker değiştirmemiz gerekir, eğer değişmesi gerekirse sunucular nispeten küçükse, bu işlemler çok zahmetli değildir, Eğer binlerce sunucuya sahip büyük bir internet şirketinin Hadoop kümesi gibi çok sayıda dağıtık sunucumuz varsa, yapılandırma seçeneklerini değiştirmek sorunlu ve tehlikeli olabilir. Şu anda zookeeper işe yarayabilir, zookeeper'ı yüksek erişilebilir bir yapılandırma belleği olarak kullanabiliriz, böyle bir şeyi yönetim için zookeeper'a verebiliriz, kümenin yapılandırma dosyasını zookeeper'ın dosya sisteminin bir düğümüne kopyalıyoruz ve ardından yapılandırma dosyasının değiştiği tespit edildiğinde tüm dağıtık sistemlerde yapılandırma dosyasının durumunu izlemek için zookeeper ile izleriz, Her sunucu, Zookeeper'dan yapılandırma dosyalarını senkronize etmek için Zookeeper'dan bir bildirim alacak ve Zookeeper hizmeti ayrıca senkronizasyon işleminin atomik olmasını sağlayarak her sunucunun yapılandırma dosyasının doğru şekilde güncellenmesini sağlar.

Senaryo 4: Dağıtık sistemler için hata onarım fonksiyonları sağlanır. Küme yönetimi zor ve hayvanat bahçesi hizmetini dağıtık sisteme eklemek, kümeyi yönetmemizi kolaylaştırıyor. Küme yönetiminde en sorunlu şey düğüm hata yönetimidir; zookeeper kümeye sağlıklı bir düğümü ana olarak seçmesine izin verebilir, ana düğüm kümedeki her sunucunun mevcut sağlık durumunu bilir, bir düğüm arızalandığında ana bilgisayar kümedeki diğer sunucuları bilgilendirir ve böylece farklı düğümlerin hesaplama görevleri yeniden dağıtılır. Zookeeper sadece arızaları bulmakla kalmaz, aynı zamanda arızalı sunucuyu da taratır, hata sunucusunun ne tür bir arıza olduğunu görebilir, hata onarılabilirse otomatik olarak sistem yöneticisine hata nedenini söyleyebilir veya sistem yöneticisine hatanın nedenini söyleyebilir, böylece yönetici sorunu hızlıca bulup düğümün hatasını onarabilir. Hâlâ bir sorunuz olabilir, eğer ana ünite arızalıysa ne yapmalıyım? Zookeeper bunu da dikkate alır; zookeeper'ın dahili bir "lider seçme algoritması" vardır, ustalar dinamik olarak seçilebilir ve usta başarısız olduğunda, zookeeper hemen yeni bir usta seçerek kümeyi yönetebilir.

Hayvanat bahçesi görevlisinin özelliklerinden bahsedelim:

ZooKeeper, daha sade bir dosya sistemidir. Bu biraz Hadoop'a benziyor, ancak ZooKeeper dosya sistemi küçük dosyaları yönetirken, Hadoop çok büyük dosyaları yönetiyor.

Zookeeper, birçok operasyonun veri yapılarını ve protokollerini koordine etmesini sağlayan zengin bir "artefakt" sunar. Örneğin: dağıtılmış kuyruklar, dağıtılmış kilitler ve aynı seviyedeki düğüm grubunun "lider seçimi" algoritması.

ZooKeeper oldukça erişilebilir, kendi kararlılığı oldukça iyi, dağıtık kümeler Zookeeper kümelerinin yönetimine dayanabilir ve ZooKeeper dağıtık sistemlerin tek nokta arızası sorununu önlemek için kullanılır.

Zookeeper, gevşek bir şekilde bağlı bir etkileşim modunu benimser. Bu, zookeeper'ın dağıtılmış kilitler sağlamasıyla en belirgin şekilde ortaya çıkar; bunlar, katılımcı süreçlerin diğer süreçleri (veya ağı) bilmeden birbirlerini keşfedip etkileşime girmesini sağlayan bir randevu mekanizması olarak kullanılabiliyor ve katılımcı taraflar aynı anda var olmak zorunda bile değildir; yeter ki bir mesaj bırakırlar ve süreç bittikten sonra başka bir süreç bu mesajı okuyabilir, böylece düğümler arasındaki ilişki çözülür.

ZooKeeper, küme için paylaşılan bilgileri merkezi olarak okuyup yazabileceği ortak bir depo sağlar; böylece her düğüm için paylaşılan işlemlerin programlanmasını engeller ve dağıtık sistemlerin geliştirme zorluğunu azaltır.

Zookeeper, herkesin önemsediği verileri depolamak ve yönetmek, ardından gözlemcilerin kaydını kabul etmekten sorumludur; bu verilerin durumu değiştiğinde, Zookeeper'a kayıt yapan gözlemcileri bildirerek buna göre yanıt vermeleri için sorumludur; böylece küme benzeri bir master/slave yönetim modu sağlanır.

Hayvanat bahçesi görevlisinin dağıtık sistem geliştirmeye çok uygun olduğu ve bu da dağıtık sistemleri daha sağlam ve verimli hale getirebileceği görülebilir.

Kısa bir süre önce, bölümün hadoop ilgi grubuna katıldım ve test ortamına hadoop, mapreduce, Hive ve Hbase kurdum, ayrıca hbase kurarken önceden zookeeper kurdum. Zookeeper hizmet verebilir, yani 3'ün yarısından fazlası 2, 4'ün yarısından fazlası da iki sunucudur, bu yüzden üç sunucu kurmak 4 sunucunun etkisini sağlayabilir. Hadoop'u öğrenme sürecinde, zookeeper'ın anlaması en zor alt proje olduğunu düşünüyorum, bunun nedeni teknik olarak sorumlu olması değil, uygulama yönünün bana çok kafa karıştırıcı olması, bu yüzden hadoop teknolojisiyle ilgili ilk makalem zookeeper ile başlıyor ve özel teknik uygulamadan bahsetmiyor, ancak zookeeper'ın uygulama senaryolarından zookeeper uygulama alanını anlıyorum, bence yarı çabayla öğrenmek daha etkili olacak.

Bugün hayvanat bahçesi görevlisinden bahsetmek istememin sebebi, önceki makalemdeki dağıtılmış web sitesi çerçevesini tamamlamak. Web sitesi mimarisini dağıtık bir yapı olarak tasarlamış olsam da, kalp atışı mekanizması gibi basit bir hata işleme mekanizması da geliştirdim, ancak kümenin tek arıza noktasını çözmenin bir yolu yok; bir sunucu bozulursa, istemci bu sunucuya bağlanmaya çalışır, bu da bazı isteklerin engellenmesine ve sunucu kaynaklarının boşa gitmesine yol açar. Ancak şu anda çerçevemi değiştirmek istemiyorum, çünkü mevcut hizmetlere hayvanat bahçesi hizmeti eklemenin web sitesinin verimliliğini etkileyeceğini her zaman düşünüyorum. Neyse ki, departmanımız da böyle bir sorun buldu, departmanımız güçlü bir uzaktan çağrı çerçevesi geliştirecek, küme yönetimi ve iletişim yönetimini ayıracak ve verimli ve erişilebilir hizmetleri merkezi olarak sağlayacak.

ttp://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3113923.html'dan transfer edildi




Önceki:mvc Dizin Listesi Reddedildi Bu Sanal Dizin içeriğe izin vermiyor...
Önümüzdeki:JS/CSS CDN halk kütüphanelerini hızlandırıyor
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com