Berbagi teknologi

Prinsip yang mendasari Zookeeper

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

ZooKeeper adalah layanan koordinasi terdistribusi dengan ketersediaan tinggi yang banyak digunakan dalam sistem terdistribusi untuk memecahkan masalah konsistensi sistem terdistribusi. Berikut ini akan diperkenalkan prinsip-prinsip dasar ZooKeeper secara rinci, termasuk arsitektur, model data, mekanisme inti, dan protokol konsistensi.

1. Arsitektur

ZooKeeper mengadopsi arsitektur master-slave, yang biasanya terdiri dari seorang Leader dan beberapa Follower. Terdapat juga node Observer sebagai node non-voting untuk berbagi tekanan permintaan baca.

  • Pemimpin: Bertanggung jawab untuk menangani semua permintaan tulis (permintaan transaksi) dan mengoordinasikan protokol konsistensi.
  • Pengikut: Berpartisipasi dalam pemungutan suara dan sinkronisasi status Pemimpin, dan memproses permintaan baca.
  • Pengamat: Tidak ikut serta dalam voting, hanya memproses permintaan baca dan meneruskan permintaan tulis dari klien.

2. Model datanya

ZooKeeper menyimpan data dalam struktur pohon yang mirip dengan sistem file, dan setiap node disebut znode.

  • simpul z: Node data dengan jalur, data, dan informasi status.
  • Znode persisten: Sebuah node bertahan jika klien terputus kecuali dihapus secara eksplisit.
  • Znode sementara: Node secara otomatis dihapus ketika klien terputus.
  • Znode berurutan: Node secara otomatis ditambahkan dengan nomor urut yang bertambah ketika dibuat.

3. Mekanisme inti

3.1.Manajemen sesi

Sesi dibuat antara setiap klien dan cluster ZooKeeper untuk mempertahankan status koneksi dan mengelola node sementara. ZooKeeper mendeteksi status koneksi klien melalui mekanisme detak jantung. Jika tidak ada detak jantung yang diterima dalam jangka waktu tertentu, sesi dianggap terputus.

3.2. Sinkronisasi data

Untuk memastikan konsistensi data setiap node, ZooKeeper mengadopsi mekanisme sinkronisasi data. Ketika node Leader memproses permintaan tulis, ia akan mengirimkan operasi perubahan ke semua node Follower. Node Follower akan mengkonfirmasi setelah menerima operasi perubahan, dan node Leader pada akhirnya akan memutuskan apakah operasi perubahan berhasil.

3.3. Mekanisme pemberitahuan

ZooKeeper mendukung mekanisme Watch. Klien dapat mendaftarkan Watch pada znode yang ditentukan. Ketika data atau node anak dari znode berubah, ZooKeeper akan memberi tahu klien.

4. Protokol konsistensi

ZooKeeper menggunakan protokol konsistensi yang disebut ZAB (Zookeeper Atomic Broadcast) untuk memastikan konsistensi data. ZAB terdiri dari dua fase yaitu fase pemilu dan fase penyiaran.

4.1.Tahap pemilu

Ketika cluster ZooKeeper dimulai, atau node Pemimpin gagal, pemilihan diperlukan untuk menentukan Pemimpin baru. Fase pemilu pada dasarnya dibagi menjadi beberapa langkah berikut:

  1. Pilih: Semua node memilih dirinya sendiri dan mengirimkan suara ke node lain.
  2. menerima suara: Setiap node menerima suara dari node lain dan menghitung hasil voting.
  3. Perbarui jajak pendapat: Jika ada kandidat dengan suara lebih tinggi dari Anda dalam perolehan suara, perbarui suara Anda untuk kandidat tersebut.
  4. Tentukan Pemimpin: Ketika seorang kandidat memperoleh lebih dari separuh suara, dia menjadi Pemimpin baru.
4.2. Fase siaran

Setelah Leader ditentukan, fase siaran masuk. Leader bertanggung jawab untuk memproses permintaan tulis klien dan menyiarkan operasi perubahan ke semua node Follower. Langkah-langkah spesifiknya adalah sebagai berikut:

  1. usul: Setelah menerima permintaan tulis, Leader membuat proposal dan mengirimkan proposal tersebut ke semua node Follower.
  2. mengonfirmasi: Setelah menerima proposal, node Follower melakukan logging dan mengirimkan pesan konfirmasi ke Leader.
  3. kirim: Setelah node Leader menerima lebih dari separuh pesan konfirmasi, node tersebut mengirimkan proposal dan memberitahukan semua node Follower tentang hasil pengiriman.
  4. Menerapkan perubahan: Setelah node Follower menerima notifikasi commit, node tersebut akan menerapkan operasi perubahan.

5. Contoh kode

Berikut ini adalah contoh sederhana penggunaan ZooKeeper, yang menunjukkan cara membuat node, membaca data node, dan mendaftarkan Watch.

5.1. Memperkenalkan ketergantungan

ada pom.xml Perkenalkan ketergantungan klien ZooKeeper.

 

xmlSalin kode