Berapa banyak jawapan yang boleh anda berikan?
ZooKeeper ialah perkhidmatan penyelarasan teragih sumber terbuka. Ia adalah perisian yang menyediakan perkhidmatan konsisten untuk aplikasi yang diedarkan boleh melaksanakan tugas seperti penerbitan/langganan data, pengimbangan beban, perkhidmatan penamaan, penyelarasan/pemberitahuan yang diedarkan, pengurusan kluster, pemilihan Master, kunci yang diedarkan dan baris gilir yang diedarkan dan fungsi lain.
Matlamat ZooKeeper adalah untuk merangkum perkhidmatan utama yang kompleks dan mudah ralat dan menyediakan pengguna antara muka yang ringkas dan mudah digunakan serta sistem dengan prestasi yang cekap dan fungsi yang stabil.
Zookeeper menjamin ciri konsistensi yang diedarkan berikut:
Bacaan pelanggan permintaan boleh diproses oleh mana-mana mesin dalam kluster Jika permintaan baca mempunyai pendengar yang didaftarkan pada nod, pendengar juga akan diproses oleh mesin penjaga zoo yang disambungkan. Untuk permintaan tulis, permintaan ini akan dihantar ke mesin zookeeper lain pada masa yang sama dan hanya selepas konsensus dicapai, permintaan akan kembali dengan jayanya. Oleh itu, apabila bilangan mesin kluster penjaga zoo meningkat, daya pemprosesan permintaan baca akan meningkat tetapi daya pemprosesan permintaan tulis akan berkurangan.
Pemesanan ialah ciri yang sangat penting dalam zookeeper Semua kemas kini dipesan secara global Setiap kemas kini mempunyai cap waktu yang unik ini dipanggil zxid (Id Transaksi Zookeeper). Permintaan baca hanya akan mengikut urutan berbanding kemas kini, iaitu, hasil pemulangan permintaan baca akan mengandungi zxid terbaharu penjaga zoo.
Lajur Temuduga" untuk mendapatkan lebih banyak temudugamaklumat kering. Untuk memastikan daya pemprosesan yang tinggi dan kependaman rendah, Zookeeper mengekalkan struktur direktori seperti pokok ini dalam ingatan Ciri ini menghalang Zookeeper daripada digunakan untuk menyimpan jumlah data yang besar.
4. Bagaimanakah Zookeeper memastikan penyegerakan status nod tuan dan hamba?
Apabila perkhidmatan bermula atau selepas pemimpin ranap, Zab memasuki mod pemulihan Apabila ketua dipilih dan kebanyakan pelayan melengkapkan penyegerakan keadaan dengan ketua, mod pemulihan tamat. Penyegerakan keadaan memastikan bahawa pemimpin dan pelayan mempunyai keadaan sistem yang sama.
Apabila ketua telah menyegerakkan statusnya dengan majoriti pengikut, ia boleh mula menyiarkan mesej, iaitu ia memasuki keadaan siaran. Pada masa ini, apabila pelayan menyertai perkhidmatan ZooKeeper, ia akan bermula dalam mod pemulihan, menemui ketua dan menyegerakkan statusnya dengan ketua. Apabila penyegerakan selesai, ia turut mengambil bahagian dalam penyiaran mesej. Perkhidmatan ZooKeeper kekal dalam keadaan Penyiaran sehingga ketua ranap atau ketua kehilangan sebahagian besar sokongan pengikutnya.
Zookeeper membenarkan pelanggan mendaftarkan Watcher dengan Znode pada pelayan Apabila beberapa peristiwa tertentu pada pelayan mencetuskan mesej ini, pelayan akan menghantar mesej kepada klien yang ditentukan Pemberitahuan acara digunakan untuk melaksanakan fungsi pemberitahuan yang diedarkan, dan kemudian pelanggan membuat perubahan perniagaan berdasarkan status pemberitahuan Pemerhati dan jenis acara. Dialu-alukan untuk mengikuti "Lajur Temuduga" untuk mendapatkan lebih banyak maklumat temuduga.
Mekanisme kerja:
(1) Pelanggan mendaftarkan pemerhati
(2) Pelayan memproses pemerhati
(3) Klien menelefon semula pemerhati
Ringkasan ciri Pemerhati:
(1) Tiada satu pun masanya
perkhidmatan Sama ada pelanggan atau pelanggan, sebaik sahaja Watcher dicetuskan, Zookeeper akan mengeluarkannya daripada storan yang sepadan. Reka bentuk ini berkesan mengurangkan tekanan pada pelayan Jika tidak, untuk nod yang dikemas kini dengan kerap, pelayan akan menghantar pemberitahuan acara secara berterusan kepada pelanggan, yang memberikan tekanan besar pada kedua-dua rangkaian dan pelayan. (2) Pelaksanaan bersiri pelanggan Proses panggil balik Pemerhati pelanggan ialah proses penyegerakan bersiri. . 3.2 Apabila pelanggan mendaftarkan Pemerhati dengan pelayan, ia tidak menghantar entiti objek Pemerhati sebenar pelanggan kepada pelayan Ia hanya ditandakan dengan atribut jenis boolean dalam permintaan pelanggan. (4) Acara pemerhati dihantar secara tidak segerakPeristiwa pemberitahuan pemerhati dihantar secara tidak segerak dari pelayan kepada pelanggan Terdapat masalah Pelanggan dan pelayan yang berbeza berkomunikasi melalui soket, yang mungkin disebabkan oleh kelewatan rangkaian atau faktor lain. Pelanggan memantau acara pada masa yang tidak tersedia kerana Zookeeper sendiri menyediakan jaminan pesanan, iaitu, hanya selepas pelanggan memantau acara itu, ia akan melihat perubahan dalam znod yang dipantau. Oleh itu, kita tidak boleh mengharapkan untuk dapat memantau setiap perubahan nod menggunakan Zookeeper. Penjaga zoo hanya boleh menjamin konsistensi akhirnya, tetapi tidak dapat menjamin konsistensi yang kukuh. (5) Daftar pemerhati getData, wujud, dapatkanChildren(6) Pencetus pemerhati mencipta, padam, setData(7) Apabila pelanggan menyambung ke pelayan baharu, jam tangan akan dicetuskan oleh sebarang acara sesi. Apabila sambungan ke pelayan terputus, jam tangan tidak boleh diterima. Apabila pelanggan menyambung semula, semua jam tangan yang didaftarkan sebelum ini akan didaftarkan semula jika perlu. Biasanya ini benar-benar telus. Terdapat hanya satu kes khas di mana jam tangan mungkin hilang: untuk jam tangan sedia ada pada znod yang belum dibuat, jika ia dicipta semasa pelanggan diputuskan sambungan dan kemudiannya dipadamkan sebelum pelanggan disambungkan , acara jam tangan ini mungkin hilang.
(1) Panggil tiga API getData()/getChildren()/exist() dan masukkan objek Watcher
(2) Tandai permintaan (2) request , rangkumkan Watcher ke dalam WatchRegistration
(3) Encapsulate ke dalam objek Packet, hantar permintaan ke server
(4) Selepas menerima respons daripada pelayan, daftarkan Watcher kepada ZKWatcherManager untuk pengurusan
(5) Permintaan kembali dan pendaftaran selesai.
(1) Pelayan menerima Watcher dan menyimpannya
Menerima permintaan pelanggan, memproses permintaan untuk menentukan sama ada Watcher itu perlu didaftarkan jika perlu, tukar nod data Laluan nod dan ServerCnxn (ServerCnxn mewakili sambungan antara klien dan pelayan, melaksanakan antara muka proses Watcher, dan boleh dianggap sebagai objek Watcher pada masa ini) disimpan dalam WatchTable dan watch2Paths of WatcherManager.
(2) Pencetus pemerhati
Ambil pelayan yang menerima permintaan transaksi setData() untuk mencetuskan peristiwa NodeDataChanged sebagai contoh:
2.1 Mengekapsulkan WatchedEvent
Mengekapkan status pemberitahuan NodeData(NodeConnected) (NodeDataChanged) status pemberitahuan (NodeDataChanged) laluan ke dalam satu objek WatchedEvent
2.2 Query Watcher
Cari Watcher dari WatchTable berdasarkan laluan nod
2.3 Tidak dijumpai; menunjukkan bahawa tiada pelanggan telah mendaftarkan Watcher pada nod data ini
2.4 Cari; ekstrak dan padamkan Watcher yang sepadan daripada WatchTable dan Watch2Paths (boleh dilihat dari sini bahawa Watcher adalah satu kali di bahagian pelayan dan menjadi tidak sah selepas dicetuskan sekali)
(3) Panggil kaedah proses untuk mencetuskan Watcher
Berikut ialah proses Tujuan utama adalah untuk menghantar pemberitahuan acara Watcher melalui sambungan TCP yang sepadan dengan ServerCnxn. .
UGO (Pengguna/Kumpulan/Lain-lain)
Mod Kebenaran (Skim)
(1) IP: Kawalan kebenaran daripada butiran alamat IP
digunakan, kebenaran dikonfigurasikan menggunakan pengecam kebenaran serupa dengan nama pengguna:kata laluan, yang mudah untuk membezakan aplikasi berbeza untuk kawalan kebenaran(1) CREATE: Kebenaran penciptaan nod data, membenarkan objek yang dibenarkan mencipta #nod anak di bawah Znod ini 🎜🎜#
(2) PADAM: Kebenaran pemadaman nod anak, membenarkan objek yang dibenarkan untuk memadamkan nod anak nod data (3) BACA: Kebenaran membaca nod data, membenarkan kebenaran objek mengakses nod data dan membaca kandungan datanya atau senarai nod anak, dsb. (4) TULIS: Kebenaran kemas kini nod data, membenarkan objek yang dibenarkan mengemas kini nod data#🎜 🎜 # (5) ADMIN: Keizinan pengurusan nod data, membenarkan objek yang dibenarkan untuk melaksanakan operasi tetapan berkaitan ACL pada nod data
Dengan menyediakan Chroot, pelanggan boleh digunakan untuk sepadan dengan subpokok pelayan Zookeeper Dalam senario di mana berbilang aplikasi berkongsi Zookeeper ke dalam kumpulan, interaksi antara aplikasi yang berbeza boleh direalisasikan. Pengasingan sangat membantu.
ExpirationTime = (ExpirationTime_ / ExpirationInrerval + 1) *
ExpirationInterval, ExpirationInterval merujuk kepada selang semakan tamat masa sesi Zookeeper, tickTime lalai
Pemimpin
(1) Satu-satunya penjadual dan pemproses permintaan transaksi, memastikan susunan pemprosesan transaksi kelompok
(2) Penjadual setiap perkhidmatan. dalam kelompok
Pengikut
(1) Memproses permintaan bukan transaksi daripada pelanggan dan memajukan permintaan transaksi kepada pelayan Pemimpin
(2) Mengambil bahagian dalam pengundian cadangan permintaan transaksi
(3) Mengambil bahagian dalam pengundian pemilihan Pemimpin
Pemerhati
(1) Versi 3.0 Peranan pelayan akan diperkenalkan kemudian untuk meningkatkan keupayaan pemprosesan bukan transaksi kluster tanpa menjejaskan keupayaan pemprosesan transaksi kluster
(2) Memproses permintaan bukan transaksi pelanggan dan memajukan permintaan transaksi kepada Pelayan pemimpin
(3) Jangan sertai sebarang Bentuk pengundian
Pelayan mempunyai empat status, iaitu MENCARI, MENGIKUTI, MEMIMPIN, dan.
(1) MENCARI: Mencari status Pemimpin. Apabila pelayan berada di negeri ini, ia akan menganggap tiada pemimpin dalam kluster sekarang, jadi ia perlu memasuki negeri pemilihan pemimpin.
(2) MENGIKUTI: status pengikut. Menunjukkan bahawa peranan pelayan semasa ialah Pengikut.
(3) MEMIMPIN: Status pemimpin. Menunjukkan bahawa peranan pelayan semasa ialah Pemimpin.
(4) MEMERHATI: status pemerhati. Menunjukkan bahawa peranan pelayan semasa ialah Pemerhati.
Selepas keseluruhan kluster melengkapkan pemilihan Ketua, Pelajar (nama kolektif untuk Pengikut dan Pemerhati) kembali ke pelayan Pemimpin untuk mendaftar. Selepas pelayan Learner melengkapkan pendaftaran dengan pelayan Leader, ia memasuki fasa penyegerakan data.
Proses penyegerakan data: (semua dijalankan melalui pemesejan)
Pelajar mendaftar dengan Pemimpin
Penyegerakan data#🎜 #sahkan🎜##🎜 🎜🎜#
Penyegerakan data Zookeeper biasanya dibahagikan kepada empat kategori: (1) Penyegerakan pembezaan langsung (penyegerakan DIFF)#🎜 dan kemudian )🎜#🎜 penyegerakan dibezakan (penyegerakan TRUNC+DIFF)
(3) Penyegerakan balik sahaja (penyegerakan TRUNC)
(4) Penyegerakan penuh (Penyegerakan SNAP) #🎜🎜 # Sebelum penyegerakan data, pelayan Pemimpin akan melengkapkan pemulaan penyegerakan data:
peerLastZxid:
daripada pelajar Extract lastZxid (proses Zxid terakhir yang diproses oleh pelayan Learner) daripada mesej ACKEPOCH yang dihantar apabila pelayan mendaftar 🎜🎜#Leader ZXID minimum dalam pelayan Proposal cache queue committedLog maxCommittedLog:
#🎜🎜 Maksimum #XID dalam pelayan Gilir cadangan cache commitLog penyegerakan pembezaan langsung (penyegerakan DIFF)#🎜🎜 #Senario: Apabila pelayan Leader baharu mendapati pelayan Learner mengandungi rekod transaksi yang tidak dimilikinya, ia perlu meminta pelayan Learner melakukan transaksi rollback – gulung balik kepada yang wujud pada pelayan Leader dan paling hampir dengan peerLastZxid
Penyegerakan penuh (SNAP penyegerakan)
Jika seorang Leader turun, Zookeeper akan memilih Leader yang baharu.
Mekanisme kluster ZK ialah selagi lebih separuh daripada nod adalah normal, kluster boleh menyediakan perkhidmatan secara normal. Kelompok akan gagal hanya apabila terdapat terlalu banyak nod ZK dan hanya separuh atau kurang daripada separuh daripada nod boleh berfungsi.
Jadi
Sekumpulan 3 nod boleh gagal 1 nod (pemimpin boleh mendapat 2 undi>1.5)
Sekumpulan 2 nod tidak boleh gagal mana-mana nod (pemimpin boleh mendapat 1 undi<=1)
zk's load balancing boleh dilaraskan, nginx hanya boleh melaraskan pemberat, perkara lain yang perlu dikawal perlu menulis plug-in mereka sendiri tetapi throughput nginx lebih tinggi daripada zk adalah jauh lebih besar. Ia harus dikatakan bahawa anda memilih kaedah yang akan digunakan mengikut perniagaan.
Zookeeper mempunyai tiga mod penggunaan:
Mulakan semula satu demi satu: Di bawah prinsip bahawa lebih separuh daripada mesin masih hidup dan tersedia, mulakan semula satu mesin tidak akan menjejaskan luaran perkhidmatan yang disediakan oleh keseluruhan kluster. Ini adalah kaedah yang lebih biasa digunakan.
Versi 3.5 mula menyokong pengembangan dinamik.
Tidak. Kenyataan rasmi: Peristiwa Tontonan ialah pencetus sekali sahaja Apabila data yang ditetapkan Jam Tangan berubah, pelayan menghantar perubahan kepada klien yang Jam Tangan ditetapkan untuk memberitahu mereka.
Mengapa ia tidak kekal Contohnya, jika pelayan kerap berubah dan pelanggan pemantauan dalam banyak kes, semua pelanggan mesti dimaklumkan tentang setiap perubahan, menyebabkan banyak masalah kepada rangkaian dan pelayan Banyak tekanan.
Secara amnya, klien melaksanakan getData("/nod A", true acara ditukar dan pelanggan tidak menetapkan acara menonton, ia tidak akan dihantar kepada pelanggan lagi.
Dalam aplikasi praktikal, dalam banyak kes, pelanggan kami tidak perlu mengetahui setiap perubahan pada pelayan, saya hanya memerlukan data terkini.
pelanggan java: zkclient zk sendiri dan Kurator sumber terbuka Apache.
chubby adalah daripada Google, melaksanakan sepenuhnya algoritma paxos dan bukan sumber terbuka. Zookeeper ialah pelaksanaan sumber terbuka Chubby, menggunakan protokol zab, varian algoritma paxos.
Arahan biasa: ls get set create delete etc.
Mata yang sama:
(1) Kedua-duanya mempunyai peranan yang serupa dengan proses Leader, yang bertanggungjawab untuk menyelaraskan perjalanan pelbagai proses Follower
(2) Proses Leader akan menunggu lebih separuh daripada Pengikut untuk membuat keputusan Hanya selepas maklum balas yang betul, cadangan akan dihantar
(3) Dalam protokol ZAB, setiap Cadangan mengandungi nilai zaman untuk mewakili kitaran Pemimpin semasa Nama dalam Paxos ialah Undi
Perbezaan:
ZAB. Ia digunakan untuk membina sistem induk dan sandaran data teragih yang sangat tersedia (Zookeeper), dan Paxos digunakan untuk membina sistem mesin keadaan ketekalan teragih.
Zookeeper ialah model terbitan/langganan pengurusan data dan rangka kerja penyelarasan yang boleh digunakan oleh pembangun untuk menerbitkan dan melanggan data.
Dengan menggunakan silang nod data kaya dalam Zookeeper dan bekerjasama dengan mekanisme pemberitahuan acara Watcher, adalah sangat mudah untuk membina satu siri fungsi teras yang terlibat dalam aplikasi yang diedarkan, seperti:
(1) Penerbitan data/ langganan
(2) Pengimbangan beban
(3) Perkhidmatan penamaan
(4) Penyelarasan/pemberitahuan teragih
(5) Pengurusan kluster
(6) Pemilihan induk
(7)(8)
(7) Kunci teragih
Barisan Teragih🎜Pengurusan kluster: Pantau status kelangsungan hidup nod, permintaan berjalan, dsb pemilihan nod induk adalah mengenai Proses, menggunakan Zookeeper boleh membantu dalam menyelesaikan proses ini
Kunci teragih: Zookeeper menyediakan dua jenis kunci: kunci eksklusif dan kunci kongsi. Kunci eksklusif bermakna hanya satu utas boleh menggunakan sumber pada satu masa Kunci yang dikongsi bermakna kunci baca dikongsi dan baca dan tulis adalah saling eksklusif, iaitu, beberapa utas boleh membaca sumber yang sama pada masa yang sama kunci tulis akan digunakan, hanya satu benang boleh menggunakannya. Penjaga zoo boleh mengawal kunci yang diedarkan.
Perkhidmatan penamaan: Dalam sistem yang diedarkan, dengan menggunakan perkhidmatan penamaan, aplikasi klien boleh mendapatkan alamat, pembekal dan maklumat lain sumber atau perkhidmatan berdasarkan nama yang ditentukan.
Perhatikan bahawa dubbo di sini hanyalah bingkai Apa yang anda letakkan di rak terpulang kepada anda, sama seperti rangka kereta, anda perlu memadankan enjin roda anda. Untuk melengkapkan penjadualan dalam rangka kerja ini, mesti ada pusat pendaftaran yang diedarkan untuk menyimpan metadata semua perkhidmatan Anda boleh menggunakan zk atau yang lain, tetapi semua orang menggunakan zk. .
Atas ialah kandungan terperinci [Koleksi yang disyorkan] Penyeksaan jiwa! Meriam 31 tembakan Zookeeper. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!