Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 9508|Răspunde: 2

Implementarea blocării distribuite Zookeeper

[Copiază linkul]
Postat pe 20.03.2018 16:23:52 | | | |
Designul încuietorilor

  Înțelege ideea de implementare a blocajului:
1. Începe prin a crea un director ca blocat (znode), care este de obicei folosit pentru a descrie entitatea blocată, numită :/lock_node
2. Clientul care dorește să obțină blocajul creează un znode în directorul blocajului ca nod copil al blocajului/lock_node, iar tipul nodului este Nod Temporar Ordonat (EPHEMERAL_SEQUENTIAL);
De exemplu, doi clienți creează znode, /lock_node/lock-1 și /lock_node/lock-2
3. Clientul curent apelează getChildren(/lock_node) pentru a obține toate nodurile copilă ale directorului de blocare, fără a seta watch, apoi să obțină nodurile frați care sunt mai mici decât el (create la pasul 2).
4. Nodul care este mai mic decât el însuși în pasul 3 nu există și cel mai mic nod este același cu cel creat la pasul 2, indicând că numărul curent al secvenței clientului este cel mai mic, obține blocarea și sfârșit.
5. Clientul monitorizează starea nodului temporar ordonat care este următorul cel mai mic după el însuși
6. Dacă starea subnodului monitorizat se schimbă, se sare la pasul 3 și se continuă operațiunile de urmărire până când cursa de blocare este încheiată.     

Autorul nu va introduce aici blocajul distribuției, să aruncăm o privire asupra diagramei de flux a întregului design de cod după cum urmează





Precedent:Explicație detaliată a AutoResetEvent în .net/c#
Următor:Referitor la problema că Android 7.0 nu poate efectua capturarea pachetelor https
 Proprietarul| Postat pe 20.03.2018 16:49:35 |
Pașii de blocare distribuiți de Zookeeper:
1. Zookeeper este un nod cu noduri, similar cu un director de fișiere, așa că abstractizăm blocajul într-un director, zookeeper are un nod de EPHEMERAL_SEQUENTIAL tipuri, mai multe fire de execuție, iar când nodul este creat de zookeeper, ne ajută să organizăm ordinea de creare, astfel încât directoarele de sub acest nod să fie secvențiale.
2. Obține cel mai mic nod din directorul curent, determină dacă cel mai mic nod este nodul curent, dacă asta înseamnă că blocajul este reușit, dacă nu este eșecul achiziției blocării.
3. Când blocarea eșuează, pentru a evita efectul roiului, trebuie să obții nodul anterior al nodului curent și apoi să asculți nodul.
4. Când faci asta, când eliberezi blocarea, vei notifica și următorul nod.
 Proprietarul| Postat pe 20.03.2018 16:54:46 |
Află în avans despre statutul îngrijitorilor de grădină zoologică și tipurile de evenimente.


Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com