Tehnologiýalar we infrastruktura → Kesh derejeleri we maglumatlary saklamak
Kesh derejeleri we maglumatlary saklamak
1) Näme üçin köp gatlakly keş gerek?
Keş - "gymmat" kiçi ulgamlara (DB, daşarky API, torlar) gitmezden jogap bermegiň gysga ýoludyr. Köp gatlakly ýük paýlaýar: brauzer → CDN/edge → amaly gatlak → paýlanan kesh → DB/ammar. Maksatlar: P95/P99 azaltmak, origini düşürmek, piklere has berk çydam etmek we baýtyň bahasyny arzanlatmak.
2) Keşiň derejeleriniň kartasy
1. Браузер: `Cache-Control`, `ETag`, `Last-Modified`, `stale-while-revalidate`.
2. CDN/Edge: TTL/ключ, Vary, Signed URLs, image-resize; tiered/shield.
3. API Gateway/Service Mesh: howpsuz GET üçin gysga möhletli jogap keşi.
4. Programma (in-process): LRU/LFU, "gyzgyn" açarlar üçin near-cache, millisekundlar.
5. Paýlanan kesh (Redis/Memcached): dinamika üçin esasy gatlak.
6. Keshler DB: Pg/Innodb buferleri, PgBouncer multiplexing, materialized views.
7. Disk/obýekt hekaýalary: precomputed snapshots, blob-kesh (mysal üçin, S3 + CDN).
Prinsipi: "Ulanyja näçe ýakyn bolsa, TTL şonça gysga we az şahsylaşdyrylýar; maglumatlara näçe ýakyn bolsa, şonça-da tutanýerlilik syýasaty baý bolýar".
3) Kesmek patternleri
Cache-Aside (Lazy): okaýarys → MISS-de çeşmeden ýükleýäris → kese salýarys. Ýönekeý, TTL-e gözegçilik edýär.
Read-Through: Programma çeşmeden özüne çekýän keş arkaly okaýar. Syýasaty merkezleşdirmek amatly.
Write-Through: Giriş birbada kesele we çeşmä gidýär. Has tutanýerli, ýöne ýazga görä has gymmat.
Write-Back (Write-Behind): kese ýazýarys, çeşme asinxron täzelenýär (nobat). Ýokary tizlik, eltip bermek kepilligi we idempotentlik talap edilýär.
Refresh-Ahead: "top" açarlarynda TTL gutarýança bahany täzeleýäris.
Nirede: oýun kartoçkalary/kataloglar - cache-aside/read-through; hasaplaýjylar/liderbordlar - write-back + CRDT/agregasiýalar; walýuta/çäk gollanmalary - gözegçilik edilýän TTL bilen read-through.
4) Açarlar, segmentasiýa we neýming
Шаблон: `domain:entity:{id}:v{schema}|region={R}|currency={C}|lang={L}`.
Diňe jogaby üýtgedýän zady açara goşuň (sebit, walýuta, dil, shema görnüşi).
Shemalaryň wersiýasy: gabat gelmeýän üýtgeşmeler bilen, köpçülikleýin purge-den gaça durup, açarda 'vN' -ni ýokarlandyryň.
Önümler/tenantlar boýunça namespacing: 'tenant: {t}:...' - multi-tenant üçin möhüm.
"Açaryň barlygy" üçin Bloom süzgüç çeşmä syýahaty azaldyp biler.
5) TTL, täzelik we maýyplyk
TTL matrisi:- statika (kesilen faýllar): 30-365 gün + 'immutable';
- kataloglar/bannerler: 5-60 minut + 'stale-while-revalidate';
- öňdebaryjy tagtalar/sitatalar: 2-15 sekunt;
- gollanmalar (walýutalar/çäkler): 1-10 minut.
- Wakalar bilen maýyplyk: 'product. updated '→ nokat açarynyň/prefiksiniň maýyplygy.
- Tag-based purge: taglar boýunça toparlaýyn arassalamak (mahabat/katalogyň çykmagy).
- Soft-Expiry: TTL gutarandan soň, köne 'stale' diýip berýäris, şol bir wagtyň özünde täzelenýäris (SWR/SIE).
- Versioned Keys> köpçülikleýin purge: arzan we has ygtybarly.
6) Stampede, "gyzgyn" açarlar we bäsdeşlik
Dogpile/Stampede goragy:- Single-flight (request coalescing): bir lider açary täzeleýär, galanlary garaşýar.
- TTL jitter: bir wagtyň özünde çökmekden gaça durup, akymlary ýuwýarys.
- SWR lokal: ulanyja möhleti geçen bahany berýäris, fonda täzelenýäris.
- "gyzgyn" açaryň okamak arkaly paýlanan birnäçe 'key # 1.. N' slotlaryna göçürilmegi;
- prosesiň ýadynda near-cache;
- iň ýokary derejeden öň prewarm/refresh-ahead (ýaryşlar/oýunlar).
- Agyr açarlar üçin konkarrensi täzelenmeleriniň çäkleri.
7) Yzygiderlilik we çapraz gatlaklar
Write-invalidate: çeşmä ýazylanda - degişli açarlary sinhronly maýyp ediň (pub/sub).
Read-repair: gapma-garşylyklar ýüze çyksa, keseki dogry baha bilen täzeläň.
Eventual vs Strong: möhüm pul amallaryny göni/gysga TTL bilen okaýarys; UI-vitrinler we statistika - eventual.
CRDT/agregatorlar: paýlanan hasaplaýjylar/reýtingler üçin - "merge-safe" (akymlarda G-Counter, Top-K) gurluşlary.
Kaskadly maýyplyk: "oýnuň" täzelenmegi kartoçkany maýyp edýär + sanaw + ulanyjy teklipleriniň keşi.
8) Serial, gysyş we format
Formatlar: Protobuf/MessagePack JSON-dan has çalt; CDN/brauzer üçin - Brotli JSON.
Redisdäki gysyş: obýektler üçin peýdaly> 1-2 KB, ýöne CPU-ny yzarlaň.
Partial responses/meýdanlar talap boýunça: az bayt → az TTFB we RAM.
9) Çalyşmak syýasaty we möçberi
LRU (standart) - howpsuz; LFU - "meşhur" mazmun üçin has gowudyr.
Açarlaryň ululygy: gözegçilikde saklaň (metrikler 'avg value size', 'max').
Bir önümiň ähli keşi "iýmezligi" üçin namespace/tenant boýunça kwotalar.
10) Howpsuzlyk we PII/PCI
Şahsy/maliýe maglumatlary - CDN/edge we umumy gatlaklarda kesmezlik; bellikleri/proýeksiýalary ulanyň.
Client-side crypto (TTL gözegçiliginiň ýitmegine seresaplylyk bilen) arkaly Redisdäki duýgur gymmatlyklary şifrlemek.
Berk ACL we tor izolýasiýasy; üpjün edijilere egress üçin kesgitlenen NAT/IP.
11) Synlamak we SLO kesh
Metrikler:- Hit Ratio (gatlaklara we prefikslere görä), Origin Offload.
- TTFB/P95/P99 öň/soň, Latency Redis.
- Evictions, OOM, keyspace hits/misses.
- Stampede rate (paralel täzelenmeleriň paýy), refresh time.
- Stale served % и Freshness lag.
- Oýunlaryň katalogy: Hit Ratio ≥ 85%, TTFB P95 ≤ 150 ms (edge).
- API-gollanmalar: Revalidation-hit ≥ 60%, P95 ≤ 200 ms.
- Redis: P99 amal ≤ 5 ms, evictions sagatda 1% -den köp bolmaly däldir.
12) FinOps: nagt pul
$/GB-aý RAM vs $/RPS origin: öwezini dolmak nokadyny hasaplaň.
Offload we egress: CDN + Redis sebit-originden çykýan traffigi azaldar.
Image/WebP/AVIF we denormizasiýa iň köp baýt tygşytlaýar.
"Gymmat MISS" -leri çäklendiriň: "bayt × MISS × sebit" analitigi.
13) Mysallar (bölekler)
13. 1 Cache-Aside with single-flight (psevdokod)
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 Waka boýunça maýyplygy çap etmek
json
{
"event": "game. updated",
"game_id": "g123",
"affected": ["catalog:list:region=TR", "game:card:g123:"]
}
Konsumer kanala ýazylýar we 'DEL '/' PUBLISH' -ni degişli açarlar/bellikler bilen ýerine ýetirýär.
13. 3 Diagramma wersiýasy we lokal açar
game:card:v2:id=g123 region=BR currency=BRL lang=pt-BR
14) Girizmegiň çek-sanawy
1. Kesh derejeleri we TTL-matrisa (statik/ýarym statik/API).
2. Açarlar Naiming: domen, shema görnüşi, lokal/sebit/walýuta, tenant.
3. Pattern per-endpoint (aside/read-through/write-through/back).
4. SWR/SIE, single-flight we TTL-jitter vs stampede.
5. Çäreler bilen maýyplyk (pub/sub), toparlar üçin tag-purge.
6. Iň ýokary derejeden öň "gyzgyn" açarlar we prewarm üçin Near-cache.
7. Formatlar we gysyş (protobuf/MsgPack, Brotli), ululyk gözegçiligi.
8. LRU/LFU syýasaty, namespace/tenant üçin kwotalar.
9. SLO/метрики: hit ratio, latency, evictions, stale %, freshness lag.
10. Howpsuzlyk: şahsy, tokenizasiýa, tor/ACL üçin no-store.
15) Anti-patternler
'no-cache' "we TTL-den ýüz öwürmek - nol offload.
Açar ähli query/başlyklary öz içine alýar → kardinallyk partlamasy.
Her çykarylanda "jemi CDN/Redis" köpçülikleýin purge.
Stampede goragynyň ýoklugy we "top açarlarynyň" bir gezeklik gutarmagy.
Kwotalar/izolýasiýa bolmazdan ýeke-täk umumy Redis; "gyzgyn" tenant ähli keşi iýýär.
edge/CDN-e şahsy jogaplary kesmek.
Telemetriýa ýok freshness/evictions → kör dolandyryş.
16) iGaming/fintech mazmuny: amaly bellikler
Liderbordlar/reýtingler: TTL 2-10 s, aggregate-akymlar + CRDT, SWR şowsuzlyklarda.
Oýun katalogy/bannerleri: CDN + Redis; açar: sebit/walýuta/dil; "promo: update" bellikleri boýunça maýyplyk.
Töleg statuslary: ýazuw ýolunda nagt däl; okamak - gysga TTL (3-5 s ≤) ýa-da göni haýyş.
KYC/AML jogaplary: PII däl emele getirijileri (statuslary) keşpläň, Redisde şekilleri/resminamalary saklamaň.
VIP-ýol: aýratyn namespace/howuz Redis, ileri tutulýan hyzmat.
Jemi
Güýçli nagt strategiýa derejeleriň arhitekturasy, dogry täzelenme patternleri, oýlanyşykly TTL/maýyplyk, stampede garşylyk, arassa açarlar we wersiýalar, şeýle hem gözegçilik we FinOps. Bu ýörelgelere eýerip, P95/P99 guýruklaryňyzy durnuklaşdyrarsyňyz, çeşmelere ýüküňizi azaltarsyňyz we önümiň we işewürligiň iň möhüm ýerinde millisekundyň öňünden aýdyp boljak bahasyny alarsyňyz.