Туруктуу Консистенция: керек учурда
Strong Consistency - бардык операциялар реалдуу убакыт менен макулдашылган бирдиктүү дүйнөлүк тартипте заматта жана ырааттуу аткарылгандай көрүнгөн модель. Колдонуучу акыркы тастыкталган маанини окуйт, ал эми эки параллелдүү кардар бири-бирин логикалык жактан "басып өтпөйт".
Катуу ырааттуулук жөнөкөй психикалык моделди берет жана катуу инварианттарды коргойт, бирок координацияны талап кылат (кворум/лидер), бул тармактык бөлүнүүлөргө кечигүүнү жана сезгичтикти жогорулатат.
1) Качан Strong - милдеттүү
Финансы жана эсептешүүлөр
Баланстар жана эсептен чыгаруулар: "кош жоготууга" жол берилбейт.
Которуулар жана өз ара эсептешүүлөр: бир эле сумма эки жолу жүргүзүлүшү мүмкүн эмес.
Инвентаризация жана лимиттер
Товардын калдыктары/мейманканадагы орундар/билеттер: терс мааниге барууга болбойт.
Убакыт бирдигиндеги операциялардын лимиттери (кредиттик лимиттер, API-кредиттер).
Уникалдуулук жана бүтүндүк
Уникалдуу логиндер/идентификаторлор/дедупликация эрежелери.
Домен деңгээлиндеги инварианттар: "бөлүмдө ≥ 1 дарыгер нөөмөттө турушу керек", "кезекте> N активдүү тапшырмалар болушу мүмкүн эмес".
Аудит жана өзгөрүлбөгөн журналдар
Чындыктын юридикалык булагы катары кызмат кылган окуялар: тартип жана толуктук оор.
Эгерде инварианттын бузулушу алгылыксыз бизнес тобокелдигине алып келсе (акча жоготуу, санкциялар, ишенимди жоготуу) - Strong Consistency компаниясын тандаңыз.
2) так эмне "катуу"
Linearizability (операциялык деңгээл): окуу акыркы ийгиликтүү жазууну көрөт; убакыт урматталат.
Serializable (транзакциялык деңгээл): натыйжа транзакцияларды ырааттуу аткарууга барабар (ал туруктуу болушу мүмкүн, бирок кээде катуу реалдуу убакыт тартиби жок ишке ашырылат).
Маанилүү айырма: Serializable транзакциялардын деңгээлинин аномалияларынан (phantom/write-skew) коргойт, ал эми Linearizable - жалгыз операциялардын учурдуулугу жана тартиби жөнүндө. Көп учурда эки касиеттери керек (мисалы, акча DD + окуялар журналы).
3) катуу баасы: PACELC жана CAP
PACELC: тармакты бөлгөндө (P) C (катуулук) же A (жеткиликтүүлүк) тандоого туура келет. Strong → CP: инвариантты бузууга караганда баш тартуу же бөгөт коюу жакшы. бөлүнүү жок болгондо (EL), L төлөйбүз - координация/кворумдар p95/p99 өсөт.
Практика: "инварианттардын ядросу" үчүн strong, айланасында - тез проекциялар/UX кыйналбашы үчүн eventual менен кэштер.
4) Кантип Strong Consistency жетишүү
Лидерлик жана кворумдар
Жалгыз лидер жазууларды кабыл алат; окуу - лидерде же кворум боюнча реплика.
Кворум 'W' жазуу үчүн жана 'R' менен окуу үчүн 'R + W> N' "акыркы" окуу мүмкүнчүлүгүн жогорулатат.
Макулдашуу алгоритмдери
Raft/Paxos: репликация журналы, көпчүлүк ырастоо, термин/индекстер.
Синхрондуу репликация: жазуу кворумда туруктуу болгондон кийин гана тастыкталат.
Саат жана тартиби
TrueTime/Hybrid Logical Clocks (HLC): Коопсуз глобалдык сериалдаштыруу үчүн сааттарды чектөө.
Fence-белгилер/чыгаруу: "эртең менен" лидерлери жана split-тыныгуу коргоо.
Транзакцияларды изоляциялоо
Serializable (SI + чыр-чатакты текшерүү/предикаттар боюнча локи): phantom/write-skew коргоо.
Strict-serializable: TV катар + реалдуу убакыт салыштырмалуу сызыктуу.
5) Көп аймак: варианттар жана компромисстер
Глобалдык лидер (CP)
Жазуулар бир лидер аймактан өтөт; окуу - жергиликтүү кэштер/проекциялар же лидер аркылуу.
Артыкчылыктары: жөнөкөй модель. Кемчиликтери: p95/RTT лидерге чейин, P - жазууларды бөгөттөө.
Аймактык лидерлер + синхрондуу кворум
Бир нече аймактардан гео-кеңейтилген кворум; ар бир жазуу ырастоо күтүп> 50%.
Артыкчылыктары: бир "тар моюн" жок, жогорку туруктуулук. Кемчиликтери: континенттер аралык жашыруун.
Geo-partitioning
Аймак үчүн "үй" маалыматтары (тенант/юрисдикция); глобалдык операциялар - сагалар/агрегаттар аркылуу.
Артыкчылыктары: жергиликтүү жазуулар үчүн төмөнкү кечигүүлөр. Кемчиликтери: маалыматтардын чектерин пландаштыруу.
6) R/W жана окуу орнотуу
Жазуулар: 'W = majority' - strong үчүн стандарт.
Окуу:- "Эң акыркы" - 'R = majority' же лидерден окуу.
- L кыскартуу үчүн - "stale-ok" экинчи экрандар үчүн репликадан окуу (UX ачык белги менен).
- Read-repair/lease окуу: лидер кыска аренада катаалдыгын жоготуу жок оптималдаштыруу.
7) аткаруу жана UX
Жашыруун: кардар менен лидер/кворумдун ортосундагы RTTге көңүл буруңуз (аймактар аралык жүздөгөн ms).
Үлгү "write-strong, read-fast": жазуучу үчүн RYW менен жазуу + кэш/окууда проекцияларды strong.
Batch/топтомдор: жазууларды топтоңуз, бирок куйрук жашыруундугуна көз салыңыз.
Деградациянын контурлары: окуя болгон учурда - read-only, чынчыл статустар, коркунучтуу мутацияларга тыюу салуу.
8) Strict-жол байкоо
Метрика
p50/p95/p99 latency: write-quorum, read-quorum, лидерлик окуу.
Кворумдардын ийгилиги, кайталоолор/артка кайтаруулар, лидерди алмаштыруу.
Репликациялык лаг (күтүлгөндөй эле аз, бирок мониторинг жүргүзүү керек).
"Стейл" окуу үлүшү (киргизилген болсо).
Трейсинг
Спан: "лидер кабыл алуу", "репликация", "коммит кворум".
Теги: `term`, `leader_id`, `quorum_size`, `region`.
Алерталар
өсүш p95/p99, тез-тез лидер кайра шайлоо, quorum-timeouts, split-brain көрсөткүчтөр.
9) тесттер жана башаламандык
Jepsen сыяктуу: тармактык бөлүнүү, кечигүү, тамчы, clock-skew.
Safety инварианттар: эки эсе чыгаша/терс калдыктары/кош брондоо мүмкүн эмес.
Лидерлик: лидердин баш тартуусу, жүктүн астында кайра шайлоо, fence-токендер.
Окуу ырааттуулугу: жазуудан кийин дароо окуу "жаңы" (RYW/linearizable окуу) көрүшү керек.
10) Playbook окуялар
Кворумду жоготуу: read-only которуу, кардарларга кабарлоо, гео-партитионинг болгондо "үй" аймагына жазууну жөнөтүү.
Латенттүүлүктүн өсүшү аймактар аралык: катуу жазуулардын көлөмүн убактылуу төмөндөтүү (кезек/проекциядагы агымдардын бир бөлүгүнүн миграциясы), трафикти локалдаштыруу.
Лидер Flap: шайлоо убактысын көбөйтүү, тармактарды/саат дрейфтерди/GC тыныгууларды текшерүү.
Split-brain: fence-токендерди/lease-текшерүүлөрдү күйгүзүү, оператордун деңгээлинде эски лидерлерди токтотуу.
11) типтүү каталар
Strong талап "бардык жерде": өзгөрүлмөлүү басым ордуна жашыруун жана наркы жарылуу.
Чыныгы бөлүнүү менен CA болууга аракет кылуу: P учурда система дагы эле тандоо жасайт, көбүнчө бүдөмүк.
Dual-write ар кандай аймактарга сагсыз/координатору: фантомдор жана инварианттарды жоготуу.
RYW жок: колдонуучу өзүнүн жаңы жазылган маңызын көрбөйт - ишенимдин төмөндөшү.
Көңүл бурбоо: HLC/TrueTime чек жок, "секирүү" убактысын жана жарыштарын алуу оңой.
Деградация планы жок: P менен башаламан жарым-жартылай мүчүлүштүктөр башталат.
12) Fast Solutions (Recipes)
Төлөмдөр/баланстар: лидер + majority-кворум; транзакциялар strict-serializable; кыска тайм, P. катуу ката
Брондоо (орундар/уячалар): лидер аркылуу write-strong, окуу - RYW менен кэш; TTL-камдар + TCC.
Global SaaS: geo-partition 'tenant/region'; үй аймагында катуу иш, отчеттор/издөө - проекциялар аркылуу.
Аудит/журнал: append-only CP-журнал; окууларды кэштоого болот, бирок контролдук чекиттер менен текшерүүгө болот.
13) Азык-түлүктүн алдындагы чек-тизме
- strong талап invariants жазылган; калгандары АР/проекцияда.
- Режим тандалып алынган: бирдиктүү лидер/региондор аралык кворум/geo-partition.
- Критикалык жолдор үчүн 'W = majority', 'R = leader' majority 'орнотулган.
- UX үчүн RYW/monotonic менен камсыз; так белгиленген "stale-ok" окуу.
- Кворум, лагдар, латенттик метриктер киргизилген; p95/p99 жана кайра шайлоо.
- Degrade планы бар: read-only, коркунучтуу мутацияларды өчүрүү, "бороондон кийин" кезек.
- Башаламандык-тесттер: бөлүнүү, clock-skew, лидер баш тартуу; текшерилген safety-инварианттар.
- Келишим документтери: "артта калышы мүмкүн", продукт/колдоо үчүн байланыш.
Корутунду
Strong Consistency - ката кабыл алынгыс жерде чындыкты коргоо куралы. Аны катуу инварианттардын айланасында так колдонуңуз, жашыруун жана бороон-чапкындын жеткиликтүүлүгүн координациялоо үчүн атайылап төлөңүз. Айкалыштыруу: CP ядро үчүн критикалык, AP окуу жана ылдамдыгы үчүн проекция. Туура телеметрия, деградация жана тесттер менен сиз туура жана колдонуучу тажрыйбасын сактап каласыз.