2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
ZooKeeper è un servizio di coordinamento distribuito ad alta disponibilità ampiamente utilizzato nei sistemi distribuiti per risolvere il problema di coerenza dei sistemi distribuiti. Di seguito verranno presentati in dettaglio i principi alla base di ZooKeeper, inclusa la sua architettura, il modello di dati, il meccanismo principale e il protocollo di coerenza.
ZooKeeper adotta un'architettura master-slave, che solitamente è composta da un Leader e diversi Follower. Sono presenti anche nodi Observer come nodi non votanti per condividere la pressione delle richieste di lettura.
ZooKeeper memorizza i dati in una struttura ad albero simile a un file system e ciascun nodo è chiamato znode.
Viene stabilita una sessione tra ciascun client e il cluster ZooKeeper per mantenere lo stato della connessione e gestire i nodi temporanei. ZooKeeper rileva lo stato di connessione del client attraverso il meccanismo dell'heartbeat Se non viene ricevuto alcun heartbeat entro un certo periodo di tempo, la sessione viene considerata disconnessa.
Per garantire la coerenza dei dati di ciascun nodo, ZooKeeper adotta un meccanismo di sincronizzazione dei dati. Quando il nodo Leader elabora una richiesta di scrittura, invierà l'operazione di modifica a tutti i nodi Follower. Il nodo Follower confermerà dopo aver accettato l'operazione di modifica e il nodo Leader deciderà infine se l'operazione di modifica ha avuto successo.
ZooKeeper supporta il meccanismo Watch Il client può registrare Watch sullo znode specificato Quando i dati o i nodi figlio dello znode cambiano, ZooKeeper avviserà il client.
ZooKeeper utilizza un protocollo di coerenza chiamato ZAB (Zookeeper Atomic Broadcast) per garantire la coerenza dei dati. ZAB si compone di due fasi: la fase elettorale e la fase di trasmissione.
Quando il cluster ZooKeeper si avvia o il nodo Leader fallisce, è necessaria un'elezione per determinare un nuovo Leader. La fase elettorale si articola principalmente nei seguenti passaggi:
Dopo che il Leader è stato determinato, si entra nella fase di broadcast. Il Leader è responsabile dell'elaborazione della richiesta di scrittura del client e della trasmissione dell'operazione di modifica a tutti i nodi Follower. I passaggi specifici sono i seguenti:
Quello che segue è un semplice esempio che utilizza ZooKeeper, che mostra come creare nodi, leggere i dati dei nodi e registrare Watch.
esistere pom.xml
Introduci la dipendenza del client ZooKeeper.
xmlCopia codice