0006 — Копирање смештаја је координирано атомском DB лизингом
Контекст
Профил редовног копирања мора бити смештен од управо једног чвора — два домаћина на истом профилу значе свака изворна трговина је огледана два пута (прави новац изгубљен). Чворови долазе и одлазе (скалирање, пропади, котрљавајућа ажурирања), и не желимо одвојени координирајући сервис да се покреће и остане жив.
Одлука
Сваки CopyEngineSupervisor захвата профиле са атомском DB лизингом у табели CopyProfiles:
- Захвата — атомски
ExecuteUpdate(илиFOR UPDATE SKIP LOCKEDкада кеп по чвору) узима профиле који су неприписани или чији је лизинг истекао. Атомскост значи два надметања суперфизорима никад обоје захватају исти ред. - Обнова — живи чвор освежава своју лизингу сваким циклусом, тако да чува своју захвату.
- Поновна захвата — лизинг пропалог чвора истиче, и преживелац преузима профил на следећем циклусу (самозлечење). При благој гашењу чвор отпушта своју лизингу одмах тако да је прелазак брз.
- Чувар — домаћин чији је задатак вишен док је профил још наш је пореквартеран.
- Помирење је трзајно да избегне громиљајућу говедину
UPDATE-а при скали.
Последице
- Без самостаног координатора за развој или одржавање здравља — Postgres је јединствени извор истине.
- Двоструко копирање је спречено атомском редовном ниском, не законском закључавању на нивоу апликације.
- Преход кашњење је ограничена наврхов лизинга TTL (минус брза пута благог отпуштања).
- Ово је путања новца; она је чувана од детерминистичког стресног комплета (DST) — никад не ослабиј DST сценарио да би је прошао.