Zookeeper - Ikhtisar
ZooKeeper adalah layanan koordinasi terdistribusi untuk mengelola sejumlah besar host. Mengoordinasikan dan mengelola layanan dalam lingkungan terdistribusi adalah proses yang rumit. ZooKeeper memecahkan masalah ini dengan arsitektur dan API sederhana. ZooKeeper memungkinkan pengembang untuk fokus pada logika aplikasi inti tanpa mengkhawatirkan sifat aplikasi yang terdistribusi.
Kerangka ZooKeeper awalnya dibuat di "Yahoo!" untuk mengakses aplikasi mereka dengan cara yang mudah dan kuat. Kemudian, Apache ZooKeeper menjadi standar untuk layanan terorganisir yang digunakan oleh Hadoop, HBase, dan kerangka kerja terdistribusi lainnya. Misalnya, Apache HBase menggunakan Zookeeper untuk melacak status data terdistribusi.
Sebelum melangkah lebih jauh, penting bagi kita untuk mengetahui satu atau dua hal tentang aplikasi terdistribusi. Jadi, mari kita mulai diskusi dengan gambaran umum singkat tentang aplikasi terdistribusi.
Aplikasi Terdistribusi
Aplikasi terdistribusi dapat berjalan di beberapa sistem dalam jaringan pada waktu tertentu (secara bersamaan) dengan berkoordinasi di antara mereka sendiri untuk menyelesaikan tugas tertentu secara cepat dan efisien. Biasanya, tugas yang kompleks dan memakan waktu, yang akan memakan waktu berjam-jam untuk diselesaikan oleh aplikasi yang tidak terdistribusi (berjalan dalam satu sistem) dapat diselesaikan dalam hitungan menit oleh aplikasi terdistribusi dengan menggunakan kapabilitas komputasi dari semua sistem yang terlibat.
Waktu untuk menyelesaikan tugas selanjutnya dapat dikurangi dengan mengonfigurasi aplikasi terdistribusi agar berjalan di lebih banyak sistem. Sekelompok sistem di mana aplikasi terdistribusi sedang berjalan disebut aCluster dan setiap mesin yang berjalan dalam sebuah cluster disebut a Node.
Aplikasi terdistribusi memiliki dua bagian, Server dan Clientaplikasi. Aplikasi server sebenarnya didistribusikan dan memiliki antarmuka yang sama sehingga klien dapat terhubung ke server mana pun di cluster dan mendapatkan hasil yang sama. Aplikasi klien adalah alat untuk berinteraksi dengan aplikasi terdistribusi.
Manfaat Aplikasi Terdistribusi
Reliability - Kegagalan satu atau beberapa sistem tidak membuat keseluruhan sistem gagal.
Scalability - Performa dapat ditingkatkan sesuai kebutuhan dengan menambahkan lebih banyak mesin dengan sedikit perubahan pada konfigurasi aplikasi tanpa waktu henti.
Transparency - Menyembunyikan kompleksitas sistem dan menampilkan dirinya sebagai satu kesatuan / aplikasi.
Tantangan Aplikasi Terdistribusi
Race condition- Dua atau lebih mesin mencoba melakukan tugas tertentu, yang sebenarnya hanya perlu dilakukan oleh satu mesin pada waktu tertentu. Misalnya, sumber daya bersama hanya boleh dimodifikasi oleh satu mesin pada waktu tertentu.
Deadlock - Dua atau lebih operasi menunggu satu sama lain selesai tanpa batas.
Inconsistency - Kegagalan sebagian data.
Apa yang Dimaksud dengan Apache ZooKeeper?
Apache ZooKeeper adalah layanan yang digunakan oleh cluster (sekelompok node) untuk berkoordinasi di antara mereka sendiri dan memelihara data bersama dengan teknik sinkronisasi yang kuat. Zookeeper sendiri adalah aplikasi terdistribusi yang menyediakan layanan untuk menulis aplikasi terdistribusi.
Layanan umum yang disediakan oleh ZooKeeper adalah sebagai berikut -
Naming service- Mengidentifikasi node dalam cluster dengan nama. Ini mirip dengan DNS, tetapi untuk node.
Configuration management - Informasi konfigurasi terbaru dan terkini dari sistem untuk node yang bergabung.
Cluster management - Bergabung / keluar dari sebuah node dalam cluster dan status node secara real time.
Leader election - Memilih node sebagai pemimpin untuk tujuan koordinasi.
Locking and synchronization service- Mengunci data saat memodifikasinya. Mekanisme ini membantu Anda dalam pemulihan kegagalan otomatis saat menghubungkan aplikasi terdistribusi lainnya seperti Apache HBase.
Highly reliable data registry - Ketersediaan data bahkan ketika satu atau beberapa node sedang down.
Aplikasi terdistribusi menawarkan banyak manfaat, tetapi mereka juga memberikan beberapa tantangan yang kompleks dan sulit untuk dipecahkan. Kerangka Zookeeper menyediakan mekanisme lengkap untuk mengatasi semua tantangan. Kondisi balapan dan kebuntuan ditangani dengan menggunakanfail-safe synchronization approach. Kelemahan utama lainnya adalah ketidakkonsistenan data, yang diatasi oleh ZooKeeperatomicity.
Manfaat ZooKeeper
Berikut adalah manfaat menggunakan Zookeeper -
Simple distributed coordination process
Synchronization- Pengecualian dan kerjasama antar proses server. Proses ini membantu di Apache HBase untuk manajemen konfigurasi.
Ordered Messages
Serialization- Menyandikan data sesuai dengan aturan khusus. Pastikan aplikasi Anda berjalan secara konsisten. Pendekatan ini dapat digunakan di MapReduce untuk mengoordinasikan antrian untuk mengeksekusi thread yang sedang berjalan.
Reliability
Atomicity - Transfer data berhasil atau gagal sepenuhnya, tetapi tidak ada transaksi yang parsial.