Перейти к содержанию

Distributed lock vs fencing token

Раздел 04 · Сравнения

Тип материала: инженерное сравнение. Выводы зависят от workload и failure model; схема и сценарии иллюстративные.

Проверка источников: 2026-11-02. Численные latency, throughput, cost и SLA не измерялись.

Критерии выбора

Критерий Distributed lock / lease Resource-enforced fencing
Workload Выбор текущего владельца работы Защита sink от старого владельца
Consistency Зависит от authority и lease assumptions Атомарное отклонение stale epoch самим resource
Latency / throughput Acquire/renew round trips Token check на каждой защищаемой записи
Cost / scalability Lease service и renew traffic Epoch state в каждом protected resource
Operational complexity Expiry, pause, failover, owner-safe release Monotonicity после restore, equal-epoch protocol

Механизм и ограничения

Это не взаимоисключающие альтернативы: lease распределяет работу, fencing защищает эффект после смены владельца. Если resource не принимает token, lock alone не предотвращает late stale write. Для локального PG ledger row locks/constraints предпочтительнее дополнительного remote mutex, когда вся invariant boundary уже в одной БД.

Надёжный fencing token получается из monotonic authority и корректного ownership protocol. Timestamp клиента не подходит. Token меньше сохранённого reject; повтор того же epoch требует identity/result lookup, иначе два writes одной generation могут конфликтовать.

Иллюстративная схема решения

flowchart TD
 W[Workload and invariant] --> B[Define durable boundary]
 B --> F[Compare failure and recovery obligations]
 F --> L[Choose protocol for explicit scope]
 L --> T[Fault test and reconciliation]

Failure и recovery

Поставьте old worker на pause, дождитесь нового lease, запишите e2, затем возобновите old worker e1. Проверяйте состояние sink, а не lock key. После restore authority убедитесь, что tokens не переиспользуются.

Практическое упражнение

Опишите atomic check для публикации settlement generation и поведение при повторе одного epoch. Укажите, где хранится last accepted epoch и кто имеет право его менять.

Связанные материалы и источники

Locks и tokens