Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 9508|Risposta: 2

Implementazione di blocco distribuito Zookeeper

[Copiato link]
Pubblicato su 20/03/2018 16:23:52 | | | |
Progettazione della chiusa

  Prendi l'idea dell'implementazione del lock:
1. Inizia creando una directory come lock (znode), che viene solitamente usata per descrivere l'entità bloccata, chiamata :/lock_node
2. Il client che vuole ottenere il lock crea uno znode nella directory del lock come nodo figlio del lock/lock_node, e il tipo di nodo è Nodo Temporaneo Ordinato (EPHEMERAL_SEQUENTIAL);
Ad esempio, due client creano znode, /lock_node/lock-1 e /lock_node/lock-2
3. Il client corrente chiama getChildren(/lock_node) per ottenere tutti i nodi figli della cartella lock, senza impostare watch, e poi ottenere i nodi fratelli più piccoli di lui (creati nel passo 2).
4. Il nodo che è più piccolo di sé stesso nel passo 3 non esiste && il nodo più piccolo è lo stesso di quello creato nel passo 2, indicando che il numero di sequenza client corrente è il più piccolo, ottenere il blocco e terminare.
5. Il client monitora lo stato del nodo temporaneo ordinato che è il più piccolo a sé stesso
6. Se lo stato del sottonodo monitorato cambia, si passa al passo 3 e si prosegue le operazioni di follow-up fino a quando la corsa di blocco non viene espulsa.     

L'autore non introdurrà qui il blocco di distribuzione, diamo un'occhiata al diagramma di flusso dell'intero design del codice come segue





Precedente:Spiegazione dettagliata di AutoResetEvent in .net/c#
Prossimo:Riguardo al problema che Android 7.0 non può eseguire la cattura dei pacchetti https
 Padrone di casa| Pubblicato su 20/03/2018 16:49:35 |
Lo zookeeper ha distribuito i passi della chiusa:
1. Zookeeper è un nodo con nodi, simile a una directory di file, quindi astrastriamo il lock in una directory, zookeeper ha un nodo di EPHEMERAL_SEQUENTIAL tipi, più thread e quando il nodo viene creato da zookeeper, ci aiuta a organizzare l'ordine da creare, così le directory sotto questo nodo sono sequenziali.
2. Prendere il nodo più piccolo della directory corrente, determinare se il nodo più piccolo è quello attuale, se significa che il blocco è riuscito, se non è il fallimento dell'acquisizione del lock.
3. Quando il blocco fallisce, per evitare l'effetto sciame, devi ottenere il nodo precedente del nodo corrente e poi ascoltare il nodo.
4. Quando fai questo, quando rilasci il blocco, notificherai anche il nodo successivo.
 Padrone di casa| Pubblicato su 20/03/2018 16:54:46 |
Informati in anticipo sullo stato dei custodi e sui tipi di eventi.


Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com