Пређи на главни садржај

0006 — Копирање смештаја је координирано атомском DB лизингом

Контекст​

Профил редовног копирања мора бити смештен од управо једног чвора — два домаћина на истом профилу значе свака изворна трговина је огледана два пута (прави новац изгубљен). Чворови долазе и одлазе (скалирање, пропади, котрљавајућа ажурирања), и не желимо одвојени координирајући сервис да се покреће и остане жив.

Одлука​

Сваки CopyEngineSupervisor захвата профиле са атомском DB лизингом у табели CopyProfiles:

  • Захвата — атомски ExecuteUpdate (или FOR UPDATE SKIP LOCKED када кеп по чвору) узима профиле који су неприписани или чији је лизинг истекао. Атомскост значи два надметања суперфизорима никад обоје захватају исти ред.
  • Обнова — живи чвор освежава своју лизингу сваким циклусом, тако да чува своју захвату.
  • Поновна захвата — лизинг пропалог чвора истиче, и преживелац преузима профил на следећем циклусу (самозлечење). При благој гашењу чвор отпушта своју лизингу одмах тако да је прелазак брз.
  • Чувар — домаћин чији је задатак вишен док је профил још наш је пореквартеран.
  • Помирење је трзајно да избегне громиљајућу говедину UPDATE-а при скали.

Последице​

  • Без самостаног координатора за развој или одржавање здравља — Postgres је јединствени извор истине.
  • Двоструко копирање је спречено атомском редовном ниском, не законском закључавању на нивоу апликације.
  • Преход кашњење је ограничена наврхов лизинга TTL (минус брза пута благог отпуштања).
  • Ово је путања новца; она је чувана од детерминистичког стресног комплета (DST) — никад не ослабиј DST сценарио да би је прошао.