Konštrukcia zámku
Získajte nápad na implementáciu zámku: 1. Začnite vytvorením adresára ako zámku (znode), ktorý sa zvyčajne používa na opis uzamknutej entity, nazývanej :/lock_node 2. Klient, ktorý chce zámok získať, vytvorí znode v adresári zámku ako poduzol lock/lock_node a typ uzla je Ordered Temporary Node (EPHEMERAL_SEQUENTIAL); Napríklad dvaja klienti vytvárajú znody, /lock_node/lock-1 a /lock_node/lock-2 3. Aktuálny klient volá getChildren(/lock_node), aby získal všetky poduzly adresára zámku bez nastavenia watch, a potom získa bratné uzly, ktoré sú menšie ako on sám (vytvorené v kroku 2). 4. Uzol, ktorý je menší ako on sám v kroku 3, neexistuje a najmenší uzol je rovnaký ako ten vytvorený v kroku 2, čo znamená, že aktuálne poradové číslo klienta je najmenšie, získaj zámok a koniec. 5. Klient monitoruje stav usporiadaného dočasného uzla, ktorý je najbližší po ňom 6. Ak sa stav monitorovaného poduzla zmení, prejdite na krok 3 a pokračujte v následných operáciách, kým sa lockrace neukončí.
Autor tu nebude uvádzať distribučný zámok, pozrime sa na diagram celého návrhu kódu nasledovne
|