Sequence · Distributed lock
Fencing token: tài nguyên đích chặn người giữ khoá cũ
Fencing token chặn ghi cũ sau khi khoá hết hạn
Process A lấy khoá kèm token 41 rồi bị GC pause; khoá hết TTL, Process B lấy được khoá kèm token 42 và ghi báo cáo, FencingToken thành 42; A tỉnh dậy ghi với token 41, điều kiện FencingToken nhỏ hơn 41 sai nên UPDATE không ảnh hưởng hàng nào.
A bị dừng
GC pause
Khoá hết TTL
WHERE FencingToken < 41 → sai
LẤY KHOÁ
TOKEN 41
LẤY KHOÁ
TOKEN 42
GHI · TOKEN 42
1 HÀNG
GHI · TOKEN 41
0 HÀNG · BỊ CHẶN
Process A
worker
Redis
lock:fence:report-gen
Process B
worker
Reports
SQL · FencingToken
CHÚ GIẢI
Lời gọi
Kết quả trả về
Trạng thái / điều kiện
Ghi cũ bị tài nguyên đích từ chối
© tiennhm