Технология ва инфрасохтор → Сатҳҳои кэш ва нигаҳдории маълумот
Сатҳҳои кэш ва нигоҳдории маълумот
1) Чаро ба шумо кэши бисёрқабата лозим аст
Кэш роҳи кӯтоҳ ба ҷавоб бидуни рафтан ба зерсистемаҳои "гарон" (пойгоҳи додаҳо, API-ҳои беруна, шабакаҳо) мебошад. Layering сарбориро тақсим мекунад: браузер → CDN/edge → қабати барномавӣ → кэши тақсимшуда → пойгоҳи додаҳо/анбор. Ҳадафҳо: кам кардани P95/P99, борфарорӣ, тоб овардан ба қуллаҳо ва кам кардани арзиши байтҳо.
2) Харитаи сатҳи кэш
1. Браузер: 'Кэш-Назорат', 'ET' ag ',' Last-Modified ',' Кӯҳна-ҳангоми бозсозӣ '.
2. CDN/Edge: TTL/klüch, Vary, URL-ҳои имзошуда, андозаи андоза; сатҳ/сипар.
3. API Gateway/Service Mesh: кэши посухи кӯтоҳмуддат барои бехатар GET.
4. Ариза (дар ҷараён): LRU/LFU, кэш барои калидҳои гарм, миллисекундҳо.
5. Кэши тақсимшуда (Redis/Memcached): қабати асосӣ барои динамика.
6. Кэшҳои DB: буферҳои Pg/Innodb, мултиплекссияи PGBouncer, назари моддӣ.
7. Дӯкони диск/ашё: лаҳзаҳои пешакӣ ҳисобшуда, кэши blob (масалан, S3 + CDN).
Принсип: "ба корбар наздиктар, TTL кӯтоҳтар ва фардикунонӣ камтар; ба маълумот наздиктар бошад, сиёсати пайдарҳамӣ бойтар мешавад"
3) Намунаҳои кэш
Кэш-Ғайр аз (Lazy): мо § -ро бо MISS мехонем, ки аз манбаъ § онро ба кэш мегузорем. Оддӣ, назорати TTL медиҳад.
Хондан: барнома тавассути кэше мехонад, ки аз худи манбаъ мебарояд. Мутамарказ кардани сиёсат қулай аст.
Навиштан: сабт фавран ба кэш ва ба манбаъ меравад. Дар сабт мувофиқтар, аммо гаронтар аст.
Навиштан-Бозгашт (Навиштан-Дар паси): мо ба кэш менависем, манбаъ асинхронӣ нав карда мешавад (навбат). Суръати баланд, кафолати интиқол ва номутобиқатӣ талаб карда мешавад.
Навсозӣ-Дар пеш: барои калидҳои "боло", пеш аз ба охир расидани мӯҳлати TTL арзиши нав кунед.
Дар куҷо: кортҳои бозӣ/феҳристҳо - кэш-канор/хондан-ба воситаи; ҳисобкунакҳо/пешсафон - навиштани бозгашт + CRDT/маҷмӯа; феҳристҳои асъор/маҳдудият - хондан бо TTL назоратшаванда.
4) Калидҳо, сегментатсия ва номгузорӣ
Шаблон: 'домен: субъект: {id}: v{schema}|region={R}|currency={C}|lang={L}'.
Ба калид танҳо он чизеро дохил кунед, ки ҷавобро тағир медиҳад (минтақа, асъор, забон, нусхаи схема).
Тарҷумаи схема: барои тағиротҳои номувофиқ - 'v' -ро дар калид баланд бардошта, аз тозакунии оммавӣ канорагирӣ кунед.
Номнависӣ аз рӯи маҳсулот/иҷорагир: 'иҷорагир: {t}:'... - барои бисёр иҷорагир муҳим аст.
Филтри балоғат барои "мавҷудияти калидӣ" метавонад сафарҳоро ба манбаъ коҳиш диҳад.
5) TTL, тару тоза ва маъюбӣ
TTL-матритса:- статикӣ (файлҳои hashed): 30-365 рӯз + 'тағйирнопазир';
- каталогҳо/баннерҳо: 5-60 дақиқа + 'кӯҳна-ҳангоми бозсозӣ';
- пешсафӣ/иқтибосҳо: 2-15 сония;
- феҳристҳо (асъор/маҳдудиятҳо): 1-10 дақиқа.
- Чорабиниҳои маъюбӣ: нашр 'маҳсулот. таҷдидшуда '→ dot калид/маъюбии префикс.
- Тозакунии барчаспҳо: тозакунии гурӯҳӣ аз рӯи барчасп (нашри promo/каталог).
- Soft-Expiry: пас аз ба охир расидани мӯҳлати TTL, мо кӯҳнаро ҳамчун "кӯҳна" медиҳем, онро мувозӣ навсозӣ мекунем (SWR/SIE).
- Калидҳои санҷидашуда> тозакунии оммавӣ: арзонтар ва бехатартар.
6) Мӯҳр, калидҳои гарм ва рақобат
Муҳофизати Dogpile/Stampede:- Парвози якдафъаина (ҳамоҳангсозии дархост): як роҳбар калидро нав мекунад, боқимонда интизор мешаванд.
- TTL jitter: ҷараёни обро халалдор кунед ва аз шикасти яквақта канорагирӣ кунед.
- SWR ба таври маҳаллӣ: мо арзиши истифодашударо ба корбар медиҳем, онро дар замина навсозӣ мекунем.
- Такрори калидҳои гарм ба якчанд 'калиди № 1.. Ҷойҳои N 'аз тарафи хондан тақсим карда мешаванд
- наздик-кэш дар хотираи раванд;
- пеш аз интихоб (мусобиқаҳо/мусобиқаҳо) пешакӣ/тароватбахш.
- Маҳдудиятҳои навсозиҳои мувофиқати калидҳои вазнин.
7) Мутобиқат ва қабатҳои салиб
Навиштан-беэътибор кардан: ҳангоми навиштан ба манбаъ - синхронӣ хомӯш кардани калидҳои мувофиқ (паб/зер).
Хондан-таъмир: дар ҳолати номувофиқатӣ, кэшро бо арзиши дуруст нав кунед.
Натиҷаи vs Strong: амалиётҳои интиқодӣ мустақиман/бо TTL кӯтоҳ хонда мешаванд; Намоишҳои UI ва омор - оқибат.
CRDT/агрегаторҳо: барои ҳисобкунакҳо/рейтингҳои тақсимшуда - сохторҳои "якҷоя-бехатар" (G-Counter, Top-K дар ҷараёнҳо).
Маъюбии каскадӣ: Навсозии "бозӣ" корт + рӯйхати + кэши тавсияҳои фармоиширо ғайрифаъол мекунад.
8) Сериализатсия, фишурдасозӣ ва формат
Форматҳо: protobuff/Message- Pack тезтар аз JSON; барои CDN/браузер - JSON бо Brotli.
Фишурдасозӣ дар Редис: барои объектҳо> 1-2 КБ муфид аст, аммо ба CPU нигоҳ кунед.
Ҷавобҳои қисман/майдонҳои дархостӣ: камтар байтҳо → камтар TTFB ва RAM.
9) Сиёсатҳо ва андозаи пешакӣ
LRU (пешфарз) - бехатар; LFU барои мундариҷаи "маъмул" беҳтар аст.
Андозаи калид/арзиш: зери назорат нигоҳ доред (ченакҳои 'андозаи avg', 'max').
Квотаҳои номӣ/иҷорагир, то ки як маҳсулот тамоми кэшро "нахӯрад".
10) Амният ва PII/PCI
Маълумоти шахсӣ/молиявӣ - дар CDN/канор ва дар қабатҳои умумӣ кэш накунед; нишонаҳо/пешгӯиҳоро истифода баред.
Рамзгузории арзишҳои ҳассос дар Редис тавассути криптои муштарӣ (бо эҳтиёт дар бораи талафоти назорати TTL).
ACL-ҳои қатъӣ ва ҷудокунии шабака; собит NAT/IP барои egress ба провайдерҳо.
11) Мушоҳида ва кэши SLO
Нишондиҳандаҳо:- Таносуби Хит (аз рӯи қабат ва префикс), Сарбории пайдоиш.
- TTFB/P95/P99 пеш/пас аз кэш, Latency Redis.
- Кӯчонидан, OOM, hits/пазмонҳои калидӣ.
- Меъёри штамп, вақти тароват.
- Stale хизмат кард% i ақибмонии Freshness.
- Каталоги бозӣ: Таносуби Хит ≥ 85%, TTFB P95 ≤ 150 мс (канор).
- Феҳристҳои API: Таҷдиди назар ≥ 60%, P95 ≤ 200 ms.
- Редис: Амалиёти P99 ≤ 5 мс, кӯчдиҳӣ на бештар аз 1% дар як соат.
12) Файлҳо: арзиши кэш
$/GB моҳи RAM против $/RPS: нуқтаи баргардониданро ҳисоб кунед.
Сарборӣ ва саркашӣ: CDN + Redis трафики берунаро аз минтақа коҳиш медиҳад.
Тасвир/Веб/AVIF ва denormalization бузургтарин пасандозҳои байтро таъмин мекунанд.
Маҳдудияти "MISS гаронбаҳо": таҳлил "байтҳо × MISS × минтақа".
13) Намунаҳо (пораҳо)
13. 1 Кэш-Ғайр аз парвоз (псевдокод)
python def get(key, ttl, loader):
val = redis. get(key)
if val: return val with single_flight (key): # only one updates val = redis. get (key) # double check if val: return val data = loader () # request to source redis. setex(key, ttl_with_jitter(ttl), serialize(data))
return data
13. 2 Нашри маъюбӣ аз рӯи ҳодиса
json
{
"event": "game. updated",
"game_id": "g123",
"affected": ["catalog:list:region=TR", "game:card:g123:"]
}
Истеъмолкунанда ба канал обуна мешавад ва калидҳо/барчаспҳоро 'DEL '/' PUBLISH' месозад.
13. 3 Калид бо версияи схема ва маҳал
game:card:v2:id=g123 region=BR currency=BRL lang=pt-BR
14) Рӯйхати назорати амалисозӣ
1. Харитаи сатҳи кэш ва матритсаи TTL (статикӣ/нимстатикӣ/API).
2. Номи калидӣ: домен, версияи схема, маҳаллӣ/минтақа/асъор, иҷорагир.
3. Намунаи ҳар як нуқтаро интихоб кунед (пурсидан/хондан/навиштан/бозгашт).
4. SWR/SIE, як парвоз ва TTL jitter против штампед.
5. Ғайрифаъол аз рӯйдодҳо (паб/зер), тозакунии барчасбҳо барои гурӯҳҳо.
6. Кэш наздик барои калидҳои гарм ва пеш аз қуллаҳо.
7. Форматҳо ва фишурдасозӣ (protobuf/Msgpack, Brotli), назорати андоза.
8. Сиёсати LRU/LFU, квотаҳои ном/иҷорагир.
9. SLO/metriki: таносуби зарба, ниҳонӣ, кӯчдиҳӣ, кӯҳна%, ақибмонии тару тоза.
10. Амният: мағозаи шахсӣ, токенизатсия, шабака/ACL.
15) Анти-намунаҳо
'no-cache' "танҳо дар ҳолати" ва нокомии TTL сарбории сифрӣ мебошанд.
Калид ҳамаи дархостҳо/сарлавҳаҳо → таркиши кардиналиро дар бар мегирад.
Тозакунии яклухти "умумии CDN/Redis" бо ҳар як нашр.
Набудани муҳофизат аз мӯҳр ва мӯҳлати яквақтаи "калидҳои боло".
Редиси ягонаи умумӣ бидуни квота/ҷудокунӣ; Иҷорагири "гарм" тамоми кэшро мехӯрад.
Caching посухҳои шахсӣ ба канор/CDN.
Не телеметрияи тару тоза/кӯчонидан → назорати нобино.
16) Контексти бозӣ/fintech: қайдҳои амалӣ
Пешсафон/рейтингҳо: TTL 2-10 s, ҷараёнҳои умумӣ + CRDT, SWR дар садама.
Феҳристи бозиҳо/баннерҳо: CDN + Redis; калид: минтақа/асъор/забон; маъюбӣ аз ҷониби барчаспҳои "promo: update".
Ҳолати пардохт: дар роҳи навиштан кэш нест; хонед - TTL кӯтоҳ (≤ 3 - 5 сония) ё дархости мустақим.
Ҷавобҳои KYC/AML: ҳосилаҳои ғайридавлатии PII (статусҳо), тасвирҳо/ҳуҷҷатҳоро дар Редис нигоҳ намедоранд.
Роҳи VIP: фазои алоҳидаи ном/ҳавзи Редис, хадамоти афзалиятнок.
Ҷамъ
Стратегияи қавии кэш ин меъмории сатҳ, шакли дурусти навсозӣ, TTL/маъюбӣ, муқовимати мӯҳр, калидҳо ва версияҳои тозаву озода ва мушоҳидаҳо ва FIN мебошад. Бо риояи ин принсипҳо, шумо думҳои P95/P99 ба эътидол меоред, сарбориро ба манбаъҳо кам мекунед ва арзиши пешгӯишавандаро барои як миллисекунд ба даст меоред - маҳз дар куҷо он барои маҳсулот ва тиҷорат муҳим аст.