Мувофиқати қавӣ: Ҳангоми зарурат
Устувории қавӣ як моделест, ки дар он ҳамаи амалиётҳо ба назар мерасанд, ки онҳо фавран ва пайваста дар як тартиботи ягонаи глобалӣ, ки бо вақти воқеӣ мувофиқанд, иҷро карда мешаванд. Корбар арзиши охирини тасдиқшударо мехонад ва ду муштарии мувозӣ ба таври мантиқӣ аз ҳамдигар гузашта наметавонанд.
Мутобиқати қатъӣ модели оддии ақлиро медиҳад ва инвариантҳои сахтро ҳифз мекунад, аммо ҳамоҳангсозиро талаб мекунад (кворумҳо/пешво), ки ниҳонӣ ва ҳассосиятро ба бахшҳои шабака зиёд мекунад.
1) Вақте ки қавӣ ҳатмист
Молия ва ҳисоббаробаркуниҳо
Тавозун ва аз ҳисоб баровардан: "Хароҷоти дукарата" қобили қабул нест.
Интиқолҳо ва ҳисоббаробаркуниҳо: маблағи якхеларо ду маротиба ҷойгир кардан мумкин нест.
Захира ва маҳдудиятҳо
Молҳои боқимонда/фазои меҳмонхона/чиптаҳо: шумо наметавонед ба арзишҳои манфӣ гузаред.
Маҳдудиятҳои амалиёт барои як воҳиди вақт (маҳдудиятҳои қарзӣ, қарзҳои API).
Ягонагӣ ва якпорчагӣ
Вурудоти беназири такрорӣ/ID/қоидаҳо.
Инвариантҳо дар сатҳи домейн: "≥ 1 духтур бояд дар кафедра навбатдор бошад", "дар навбат вазифаҳои фаъол вуҷуд надоранд> N".
Гузоришҳои аудиторӣ ва бетағйир
Ҳодисаҳое, ки ҳамчун манбаи ҳуқуқии ҳақиқат хизмат мекунанд: тартиб ва пуррагӣ муҳим мебошанд.
Агар вайронкунии ғайривариант хатари номақбули тиҷоратро ба бор орад (аз даст додани пул, таҳримот, гум кардани эътимод) - мувофиқати сахтро интихоб кунед.
2) Маҳз "қатъӣ" чист
Linearizability (сатҳи амалиётӣ): хондан навиштани муваффақтаринро мебинад; замонҳо эҳтиром карда мешаванд.
Serializable (сатҳи транзаксия): натиҷа ба иҷрои пайдарпаии транзаксияҳо баробар аст (метавонад қавӣ бошад, аммо баъзан бидуни фармоиши вақти воқеӣ амалӣ карда мешавад).
Тафовути муҳим: Serializable аз аномалияҳои сатҳи транзаксия муҳофизат мекунад (phantom/write-skew) ва Linearizable аз лаҳзаи ягона ва тартиби амалиёти ягона муҳофизат мекунад. Аксар вақт ба шумо ҳарду хусусият лозим аст (масалан, пул дар пойгоҳи додаҳо + сабти рӯйдодҳо).
3) Тартиби нарх: PACELC ва CAP
PACELC: Ҳангоми тақсим кардани шабака (P), шумо бояд C (rigor) ё A (мавҷудият) -ро интихоб кунед. Strong CP: беҳтар аст, ки рад кунед ё блок кунед, нисбат ба вайрон кардани инвариант. Вақте ки ҷудоӣ вуҷуд надорад (EL), мо бо L - p95/p99 пардохт мекунем, дар ҳамоҳангсозӣ/кворумҳо меафзояд.
Амал: барои "ядрои инвариантҳо" қавӣ аст, дар атрофи - пешгӯиҳои зуд/кэшҳо бо оқибат, то UX зарар нарасонад.
4) Чӣ гуна мувофиқати қавӣ ба даст оварда мешавад
Роҳбарият ва кворумҳо
Роҳбари ягона сабтҳоро қабул мекунад; хондан - дар роҳбар ё кворуми нусхаҳо.
Кворум 'W' барои навиштан ва 'R' барои хондан бо 'R + W> N' имкони хондани "охирин" -ро дорад.
Алгоритмҳои мувофиқ
Raft/Paxos: сабти такрорӣ, тасдиқи аксарият, истилоҳ/индексатсия.
Такрори синхронӣ - Сабт танҳо пас аз субот дар кворум тасдиқ карда мешавад.
Соат ва фармоиш
Соатҳои мантиқии ҳақиқӣ/гибридӣ (HLC): Номутобиқатии соатро барои сериализатсияи глобалии бехатар маҳдуд кунед.
Нишонаҳои девор/версия: муҳофизат аз пешвоёни "субҳ" ва тақсимшавӣ.
Ҷудокунии амалиёт
Serializable (SI + санҷиши/қулфи муноқишаи пешакӣ): муҳофизат аз фантом/навиштан-skew.
Силсилаи қатъӣ: serializability + linearizability нисбат ба вақти воқеӣ.
5) Бисёр минтақаҳо: имконот ва савдо
Пешвои ҷаҳонӣ (CP)
Сабтҳо аз як минтақаи пешрафта мегузаранд; мехонад - кэш/пешгӯиҳои маҳаллӣ ё тавассути пешво.
Тарафдор: Модели оддӣ. Омӯз: p95/RTT ба пешво, бо қуфлҳои P - сабт.
Роҳбарони минтақавӣ + кворуми синхронӣ
Кворуми аз ҷиҳати ҷуғрофӣ васеъшуда аз якчанд минтақаҳо; ҳар як сабт интизори тасдиқи> 50% аст.
Тарафдор: бе як "гардани танг", устувории баланд. Омӯз: Пинҳонии континенталӣ.
Тақсимоти гео
Маълумоти хонагӣ барои минтақа (иҷорагир/юрисдиксия); амалиёти глобалӣ - тавассути сагҳо/агрегатҳо.
Тарафдор: Таъхири кам барои сабтҳои маҳаллӣ. Омӯз: Банақшагирии ҳудуди маълумот.
6) R/W-ро насб кунед ва мехонед
Сабтҳо: 'W = аксарият' стандарт барои қавӣ аст.
Хониш:- "Freshest" - 'R = аксарият' ё хондан дар пешво.
- Барои кам кардани L - "кӯҳна-ok" аз нусхаҳои экранҳои дуввум хонда мешавад (ба таври возеҳ дар UX қайд карда шудааст).
- Хондан-таъмир/иҷора: оптимизатсия бидуни талафи шадид барои иҷораи кӯтоҳи роҳбар.
7) Иҷро ва UX
Таъхир: Тамаркуз ба RTT байни фармоишгар ва пешво/кворум (байниминтақавӣ садҳо мс).
намунаи "навиштан-қавӣ, хондан-зуд": қавӣ дар навиштан + кэш/дурнамо дар хондан, бо RYW барои муаллиф.
Бастаҳо/бастаҳо: Сабтҳои гурӯҳӣ, аммо барои таъхири дум тамошо кунед.
Контури таназзул: дар як ҳодиса - танҳо хондан, ҳолати ростқавл, манъи мутатсияҳои хатарнок.
8) Риояи роҳи қатъӣ
Метрика
p50/p95/p99 таъхир: навиштани кворум, хондани кворум, хондани роҳбарӣ.
Муваффақияти кворум, такрорӣ/такрорӣ, тағироти пешво.
Қафои такрорӣ (интизор меравад хурд, аммо мониторинг ҳатмист).
Ҳиссаи "steil" мехонад (агар дохил карда шуда бошад).
Пайгирӣ
Spans: "қабули пешво", "нусхабардорӣ", "кворум ӯҳдадор мешавад".
Теги: 'истилоҳ', 'leader _ id', 'quorum _ size', 'минтақа'.
Огоҳиҳо
Афзоиш p95/p99, пешвои зуд-зуд интихобшуда, танаффуси кворум, нишондиҳандаҳои тақсимшудаи майна.
9) Санҷишҳо ва бетартибӣ
Ба монанди Jepsen: қисмҳои шабака, таъхирҳо, қатраҳо, соатсозӣ.
Инвариантҳои бехатарӣ: имконнопазирии хароҷоти дукарата/тавозуни манфӣ/брон кардани дугона.
Роҳбарият: рад кардани роҳбар, дубора интихоб шудан дар зери сарборӣ, нишонаҳои девор.
Мувофиқати хондан: хондан фавран пас аз навиштан бояд "нав" -ро бинад (RYW/хониши хаттӣ).
10) Китобҳои бозӣ
Талафоти кворум: гузариш ба хондан, огоҳ кардани мизоҷон, фиристодани вуруд ба минтақаи "хона", агар тақсимоти гео мавҷуд бошад.
Афзоиши ниҳонӣ байниминтақавӣ аст: муваққатан кам кардани ҳаҷми сабтҳои қатъӣ (муҳоҷирати баъзе ҷараёнҳо дар навбат/пешгӯиҳо), маҳаллисозии трафик.
Пешвои Flap: Вақти интихоботро зиёд кунед, шабакаҳоро тафтиш кунед/танаффусҳои яксоата/таваққуфи GC.
Тақсим-майна: имкон диҳед деворҳо-токенҳо/чекҳои иҷора, пешвоёни кӯҳнаро дар сатҳи оператор боздоред.
11) Хатогиҳои маъмулӣ
Талаботи қавӣ "дар ҳама ҷо": таркиши таъхир ва хароҷот ба ҷои тамаркуз ба инвариантҳо.
Кӯшиши CA шудан дар тақсимоти воқеӣ: Дар нуқтаи P, система ҳоло ҳам интихоб мекунад, аксар вақт номуайян.
Дучанд-навиштан ба минтақаҳои гуногун бидуни sagas/ҳамоҳангсоз: фантомҳо ва аз даст додани инвариантҳо.
Набудани RYW: корбар шахси нав сабтшудаи худро намебинад - паст шудани эътимод.
Ба назар нагирифтани соат: Бидуни ҳудуди HLC/True
Нақшаи таназзул вуҷуд надорад: дар P, нобарориҳои қисман бетартибӣ сар мешаванд.
12) Ислоҳи зуд (аз меъ-)
Пардохтҳо/тавозунҳо: пешво + аксарияти кворум; амалиётҳои қатъии сериализатсияшаванда танаффуси кӯтоҳ, нокомии сахт дар П.
Бронкунӣ (ҷойҳо/ҷойҳо): навиштан тавассути пешво, хондан - кэш бо RYW; TTL-захираҳо + TCC.
Global SAA: тақсимоти гео аз ҷониби 'иҷорагир/минтақа'; амалиёти қатъӣ дар минтақаи ватанӣ, гузоришҳо/ҷустуҷӯ - тавассути пешгӯиҳо.
Аудит/сабти ном: танҳо CP-log замима; хондан мумкин аст кэш карда шавад, аммо бо нуқтаҳои гузаргоҳ тафтиш карда мешавад.
13) Рӯйхати санҷиши пеш аз фурӯш
- Инварианҳо талаб мекарданд, ки қавӣ бошанд; боқимонда дар AP/дурнамо.
- Роҳбари ягона/кворум байниминтақавӣ/гео-қисмбандӣ интихоб карда шуд.
- Танзимшудаи 'W = аксарият', 'R = пешво' аксарият 'барои роҳҳои муҳим.
- RYW/монотоникӣ, ки барои UX пешбинӣ шудааст; "кӯҳна-ок" ба таври возеҳ навишта шудааст.
- Нишондиҳандаҳои кворум, ақибмонӣ, ниҳонӣ; огоҳиҳо дар бораи p95/p99 ва интихоботи такрорӣ.
- Нақшаи таназзул вуҷуд дорад: танҳо хондан, хомӯш кардани мутатсияҳои хатарнок, навбатҳо барои "пас аз тӯфон".
- Санҷишҳои бесарусомонӣ: бахшҳо, соат-соат, нокомии пешво; инвариантҳои бехатарӣ тафтиш карда шуданд.
- Ҳуҷҷатҳои шартномавӣ: чӣ сахт аст, чӣ "пушти сар", иртибот барои маҳсулот/дастгирӣ.
Хулоса
Мутобиқати қавӣ воситаи ҳифзи ҳақиқат мебошад, ки хатогӣ қобили қабул нест. Онро дар атрофи инвариантҳои сахт ишора кунед, огоҳона барои ҳамоҳангсозӣ бо таъхир ва мавҷудияти тӯфон пардохт кунед. Якҷоя: CP-ядро барои танқид, хондани АП ва дурнамо барои суръат. Бо телеметрияи дуруст, таназзул ва санҷишҳо, шумо ҳам дурустӣ ва ҳам таҷрибаи корбарро нигоҳ медоред.