Zookeeper - Alur Kerja
Setelah ansambel ZooKeeper dimulai, itu akan menunggu klien untuk terhubung. Klien akan terhubung ke salah satu node dalam ansambel ZooKeeper. Ini mungkin node pemimpin atau pengikut. Setelah klien terhubung, node memberikan ID sesi ke klien tertentu dan mengirimkan pengakuan ke klien. Jika klien tidak mendapatkan pengakuan, itu hanya mencoba untuk menghubungkan node lain di ansambel ZooKeeper. Setelah terhubung ke node, klien akan mengirimkan detak jantung ke node dalam interval reguler untuk memastikan bahwa koneksi tidak terputus.
If a client wants to read a particular znode, itu mengirimkan read requestke node dengan jalur znode dan node mengembalikan znode yang diminta dengan mendapatkannya dari database-nya sendiri. Untuk alasan ini, pembacaan cepat dalam ansambel ZooKeeper.
If a client wants to store data in the ZooKeeper ensemble, ia mengirimkan jalur znode dan data ke server. Server yang terhubung akan meneruskan permintaan ke pemimpin dan kemudian pemimpin akan menerbitkan ulang permintaan tertulis ke semua pengikut. Jika hanya sebagian besar node yang berhasil merespons, permintaan tulis akan berhasil dan kode pengembalian yang berhasil akan dikirim ke klien. Jika tidak, permintaan tulis akan gagal. Mayoritas node yang ketat disebut sebagaiQuorum.
Node dalam ZooKeeper Ensemble
Mari kita analisis pengaruh memiliki jumlah node yang berbeda dalam ansambel ZooKeeper.
Jika kita punya a single node, maka ansambel ZooKeeper gagal saat node tersebut gagal. Ini berkontribusi pada "Titik Kegagalan Tunggal" dan tidak direkomendasikan dalam lingkungan produksi.
Jika kita punya two nodes dan satu node gagal, kami juga tidak memiliki mayoritas, karena satu dari dua bukanlah mayoritas.
Jika kita punya three nodesdan satu node gagal, kami memiliki mayoritas dan karenanya, itu adalah persyaratan minimum. Grup ZooKeeper wajib memiliki setidaknya tiga node dalam lingkungan produksi langsung.
Jika kita punya four nodesdan dua node gagal, gagal lagi dan serupa dengan memiliki tiga node. Node tambahan tidak memiliki tujuan apa pun dan oleh karena itu, lebih baik menambahkan node dalam jumlah ganjil, mis., 3, 5, 7.
Kita tahu bahwa proses menulis lebih mahal daripada proses membaca dalam ansambel ZooKeeper, karena semua node perlu menulis data yang sama dalam database-nya. Jadi, lebih baik memiliki jumlah node yang lebih sedikit (3, 5 atau 7) daripada memiliki jumlah node yang besar untuk lingkungan yang seimbang.
Diagram berikut menggambarkan ZooKeeper WorkFlow dan tabel berikutnya menjelaskan berbagai komponennya.
Komponen | Deskripsi |
---|---|
Menulis | Proses menulis ditangani oleh node pemimpin. Leader meneruskan permintaan tulis ke semua znode dan menunggu jawaban dari znodes. Jika separuh dari znode menjawab, maka proses penulisan selesai. |
Baca | Pembacaan dilakukan secara internal oleh znode terhubung tertentu, jadi tidak perlu berinteraksi dengan cluster. |
Database yang Direplikasi | Ini digunakan untuk menyimpan data di penjaga kebun binatang. Setiap znode memiliki database sendiri dan setiap znode memiliki data yang sama setiap saat dengan bantuan konsistensi. |
Pemimpin | Leader adalah Znode yang bertanggung jawab untuk memproses permintaan tulis. |
Pengikut | Pengikut menerima permintaan tulis dari klien dan meneruskannya ke znode pemimpin. |
Minta Prosesor | Hadir hanya di node pemimpin. Ini mengatur permintaan tulis dari node pengikut. |
Siaran atom | Bertanggung jawab untuk menyiarkan perubahan dari node pemimpin ke node pengikut. |