Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 9508|Antwoord: 2

Zookeeper distributed lock-implementatie

[Link kopiëren]
Geplaatst op 20-03-2018 16:23:52 | | | |
Sluisontwerp

  Krijg het idee van de slotimplementatie:
1. Begin met het aanmaken van een map als een lock (znode), die meestal wordt gebruikt om de vergrendelde entiteit te beschrijven, genaamd :/lock_node
2. De client die de lock wil verkrijgen, maakt een znode aan in de lockdirectory als kindknoop van de lock/lock_node, en het knooptype is Ordered Temporary Node (EPHEMERAL_SEQUENTIAL);
Bijvoorbeeld, twee clients maken znodes, /lock_node/lock-1 en /lock_node/lock-2
3. De huidige client roept getChildren(/lock_node) aan om alle kindknooppunten van de lockdirectory te krijgen, zonder watch in te stellen, en vervolgens de broederknopen te verkrijgen die kleiner zijn dan zichzelf (aangemaakt in stap 2).
4. De knoop die kleiner is dan zichzelf in stap 3 bestaat niet & de kleinste knoop is dezelfde als die in stap 2, wat aangeeft dat het huidige clientsequentienummer het kleinst is, haal de vergrendeling en beëindig.
5. De client monitort de toestand van de ordelijke tijdelijke knoop die de op één na kleinste is naast zichzelf
6. Als de status van de gemonitorde subnode verandert, spring dan naar stap 3 en ga door met de follow-up operaties totdat de lock race is verlaten.     

De auteur zal hier de distributievergrendeling niet introduceren, laten we het stroomdiagram van het volledige codeontwerp als volgt bekijken





Vorig:Gedetailleerde uitleg van AutoResetEvent in .net/c#
Volgend:Met betrekking tot het probleem dat Android 7.0 geen https packet capture kan uitvoeren
 Huisbaas| Geplaatst op 20-03-2018 16:49:35 |
Zookeeper verdeelde slotstappen:
1. Zookeeper is een knooppunt met knooppunten, vergelijkbaar met een bestandsmap, dus we abstraheren de vergrendeling in een map, Zookeeper heeft een knoop van EPHEMERAL_SEQUENTIAL typen, meerdere threads en wanneer de knoop door Zookeeper wordt aangemaakt, helpt het ons de volgorde van aanmaken te ordenen, zodat de mappen onder deze knoop sequentieel zijn.
2. Haal de kleinste knoop van de huidige directory, bepaal of de kleinste knoop de huidige knoop is, of dit betekent dat de vergrendeling succesvol is, als het niet de vergrendelingsacquisitiefout is.
3. Wanneer de lock faalt, moet je om het zwermeffect te vermijden de vorige node van de huidige node verkrijgen en vervolgens naar de node luisteren.
4. Wanneer je dit doet, meld je bij het loslaten van de vergrendeling ook de volgende node.
 Huisbaas| Geplaatst op 20-03-2018 16:54:46 |
Leer van tevoren over de status van dierenverzorgers en de soorten evenementen.


Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com