Alap adatkezelésKoordináció

Elosztott zárak

Gondoskodjon róla, hogy egyszerre csak egy munkavégző futtasson egy feladatot, olyan zárakkal, amelyek maguktól lejárnak, és amelyeket a tulajdonosuk biztonságosan oldhat fel.

parancs a megszerzéshez
1
parancs a biztonságos feloldáshoz
1
Lua-szkript
0
Lépés 1 / 5
Az A munkavégző megszerzi a zárat

Az NX csak akkor veszi el, ha senki nem tartja. A PX 30000 30 másodperc után lejáratja, ha az A meghal.

Példa munkamenetplaying
# Az A munkavégző megszerzi a zárat
hotkv> SET lock:billing-run tok-a81f NX PX 30000
OK

Animált bemutató valódi HotKV-parancsokkal és példa-válaszokkal. Kattintson bármelyik lépésre, hogy odaugorjon. A parancsok és a válaszok angolul maradnak, pontosan úgy, ahogy begépeli és látja őket a HotKV-ban.

A probléma

Több gépen futó cron-feladatok, fizetésbeszedések és gyorsítótár-újraépítések nem futhatnak egyszerre kétszer. A lejárat nélküli zárat örökké tartják, ha a tulajdonosa összeomlik, a zár sima DEL-lel való feloldása pedig törölheti valaki más zárát, miután a sajátja lejárt.

Hogyan kezeli a HotKV

A NX-szel és PX-szel végzett SET csak akkor szerez zárat, ha senki nem tartja, és lejáratot ad neki, hogy egy összeomlott tulajdonos ne tarthassa örökké. Minden tulajdonos egy véletlen tokent tárol értékként. Az IFEQ-val végzett DELEX csak akkor törli a zárat, ha még az Ön tokenjét tartalmazza, ez a biztonságos feloldás, amelyhez korábban Lua-szkript kellett.

Lépésről lépésre

Mi történik, parancsról parancsra

  1. 01

    Az A munkavégző megszerzi a zárat

    Az NX csak akkor veszi el, ha senki nem tartja. A PX 30000 30 másodperc után lejáratja, ha az A meghal.

    SET lock:billing-run tok-a81f NX PX 30000
  2. 02

    A B munkavégzőt elutasítják

    A zárat tartják, így a B nil-t kap, és kihagyja ezt a futtatást.

    SET lock:billing-run tok-b22c NX PX 30000
  3. 03

    Az A elvégzi a munkát

    A számlázási feladatot csak egy munkavégző futtatja.

    PTTL lock:billing-run
  4. 04

    Csak a saját zár feloldása

    A DELEX csak akkor törli a kulcsot, ha az érték még az A tokenje.

    DELEX lock:billing-run IFEQ tok-a81f
  5. 05

    A rossz token nem csinál semmit

    Ha az A túl lassú lett volna, és a zárat már a B tartaná, az A feloldása békén hagyná a B zárát.

    DELEX lock:billing-run IFEQ tok-stale
Hol használható

Valós helyzetek

Ütemezett feladatok

Ugyanaz a cron minden példányon fut, és a zár biztosítja, hogy pontosan egy végezze el a munkát.

Fizetések

Egy rendelés beszedési és visszatérítési műveletei sorosítva vannak, hogy soha ne fedjék egymást.

Gyorsítótár-vihar elleni védelem

Csak egy kérés építi újra a költséges gyorsítótár-bejegyzést, míg a többi vár, vagy az elavult értéket szolgálja ki.

Beépítve

Amit kap

Megszerzés lejárattal

A SET NX PX csak akkor veszi el a zárat, ha szabad, időtúllépéssel.

SETNXPX

Biztonságos feloldás

A DELEX IFEQ csak akkor töröl, ha az érték megegyezik az Ön tokenjével.

DELEX

Meghosszabbítás munka közben

Ellenőrizze a hátralévő időt, és hosszabbítsa meg hosszú feladatoknál.

PTTLPEXPIRE

Összehasonlítás kivonattal

Nagy értékeknél a DELEX IFDEQ a teljes érték helyett egy kivonatot hasonlít össze.

DIGESTIFDEQ
Referencia:SETDELEXDIGEST

Gyakori kérdések

Miért nem törlöm egyszerűen DEL-lel a zárat?

Ha az Ön zárja lejárt, és egy másik munkavégző megszerezte, a sima DEL törölné az övét. A DELEX IFEQ csak akkor törli, amíg még az Ön tokenjét tartalmazza.

Mennyi legyen a lejárat?

Hosszabb, mint amennyi ideig a feladat általában tart. Hosszú feladatoknál időnként hosszabbítsa meg a lejáratot, amíg még Ön tartja a zárat.

Kell Lua a biztonságos feloldáshoz?

Nem. A DELEX az összehasonlítást és a törlést egyetlen parancsban végzi.

Kapcsolódó felhasználási esetek

Próbálja ki a saját munkaterhelésén

A HotKV a Redis protokollt beszéli, így egy meglévő klienst ráirányíthat, és lefuttathatja ugyanezeket a parancsokat.