Spynos dizainas
Gaukite užrakto diegimo idėją: 1. Pradėkite sukurdami katalogą kaip užraktą (znode), kuris paprastai naudojamas apibūdinti užrakintą objektą, vadinamą :/lock_node 2. Klientas, norintis gauti užraktą, sukuria znode užrakto kataloge kaip antrinį užrakto / lock_node mazgą, o mazgo tipas yra užsakytas laikinas mazgas (EPHEMERAL_SEQUENTIAL); Pavyzdžiui, du klientai sukuria znodes, /lock_node/lock-1 ir /lock_node/lock-2 3. Dabartinis klientas kviečia getChildren(/lock_node), kad gautų visus užrakto katalogo antrinius mazgus, nenustatydamas laikrodžio ir tada gaudamas brolių mazgus, kurie yra mažesni už jį (sukurtas 2 veiksme). 4. Mazgas, kuris yra mažesnis už save 3 žingsnyje, neegzistuoja & mažiausias mazgas yra tas pats, kuris sukurtas 2 veiksme, nurodant, kad dabartinis kliento sekos numeris yra mažiausias, gauti užraktą ir baigti. 5. Klientas stebi tvarkingo laikino mazgo, kuris yra kitas mažiausias sau, būseną 6. Jei stebimo mazgo būsena pasikeičia, pereikite prie 3 veiksmo ir tęskite tolesnius veiksmus, kol baigsis užrakto lenktynės.
Autorius čia nepristatys paskirstymo užrakto, pažvelkime į viso kodo dizaino schemą taip
|