GH GambleHub

Kesmek strategiýalary

1) Näme üçin kesmek we nirede etmek

Kesh, gymmat bahaly çeşmelere (CPU/BD/daşarky API) gizlinligi we ýüküni azaldýan çalt ýat gatlagydyr. Möhüm maksatlar:
  • Tizlik (p95/p99 pes), çykdajy (egress/CPU az), durnuklylyk (pik aşagyndaky az garaşlylyk).
  • Iň ýokary nokatlary tekizlemek we "şowhunly goňşulardan" izolýasiýa etmek.
Adaty derejeler:

1. Müşderi (brauzer/jübi) - HTTP-kesh, IndexedDB, local storage.

2. Edge/CDN - POP düwünleri ulanyja has ýakyn, statikany we API-iň bir bölegini açýar.

3. L7-şlýuzy/Reverse-proxy - Nginx/Envoy/Varnish (mikrokeş, SWR).

4. Hyzmat keşi - Klasteriň içinde Redis/Memcached.

5. Prosessor içi - in-memory (Caffeine/Guava/LRU-map).

6. DB-daky nagt pul - maddy pikirler, ikinji derejeli indeksler.

Düzgün: sarp edijä mümkin boldugyça ýakynlaşyň, ýöne hakykaty bir gezek saklaň.

2) Kesmek patternleri

2. 1 Cache-aside (“lazy loading”)

Programma ilki bilen kesden okaýar; sypdyran ýagdaýynda - çeşmeden, soň bolsa kese ýazýar.
Artykmaçlyklary: ýönekeýlik, gözegçilik. Minuslar: sowuk başlangyçlar, gabat gelmeýän penjireler.

2. 2 Read-through

Okamak elmydama sypdyrylanda çeşmä gidýän keş arkaly (kitaphana/proks gatlagy).
TTL/serilizasiýa syýasatlaryny merkezleşdirmek amatly.

2. 3 Write-through / Write-back (write-behind)

Write-through: kese ýazmak we çeşme sinhron → has ýokary yzygiderlilik, has ýokary gizlinlik.
Write-back: nagt ýazgy, çeşmä asinxron fleş ýazgy → çalt, ýöne ýitgiler we gapma-garşylyklar töwekgelçiligi.

2. 4 Refresh-ahead (proactive)

"TTL ýakyn wagtda gutarar" diýip çaklaýar we stampede öňüni alyp, fonda açary täzeleýär.

2. 5 Negative caching

Gysga TTL-de "maglumat ýok/404/boş" kesmek çeşmäniň ýüküni azaldar.

2. 6 Micro-caching

Örän gysga TTL (0. 5-5 s) L7-de "dinamika diýen ýaly" (sanawlar, esasy) - guýruklaryny düýpgöter peseldýär.

3) HTTP-kesh: sözbaşylar we gözegçilik

3. 1 Esasy sözbaşylar

`Cache-Control`: `max-age`, `s-maxage` (для shared кэшей), `public/private`, `no-store`, `stale-while-revalidate`, `stale-if-error`.
Tassyklaýjylar: 'ETag', 'Last-Modified'.
"If-None-Match", "If-Modified-Since" → 304 Not Modified.

3. 2 Wary we açarlar

'Vary: Accept-Encoding, Authorization, Cookie, Accept-Language' - keşiň dürli görnüşlerini emele getirýär. Kardinallygy "partlatmazlyk" üçin "Wary" -ni azaldyň.

3. 3 HTTP jogap mysaly


Cache-Control: public, max-age=60, s-maxage=300, stale-while-revalidate=60
ETag: "a1b2c3"
Vary: Accept-Encoding

4) Açar dizaýny we TTL

4. 1 Açarlar

Gurluş: 'tenant: user: {id}: profile: v3' (shema wersiýasyny goşuň).
Açarda PII-den gaça duruň.
Kolleksiýalar üçin - açar + haýyş parametrleri (kadaly we tertipli).

4. 2 TTL we sazlaşyk

Gysga TTL düşünişmezligi azaldýar, ýöne ýalňyşlyklary artdyrýar.
Möhüm maglumatlar üçin - walidatorlar ('ETag') we SWR (stale-while-revalidate).
Seýrek üýtgeýän adamlar üçin - maýyplygyň uzyn TTL "bombalary".

4. 3 Wersiýalaşdyrmak/basting

Gabat gelmeýän üýtgeşmeler - açaryň prefiksini/wersiýasyny üýtgediň ('v2 → v3').
Statik çeşmeler üçin - faýlyň adynda content hash.

5) Maýyplyk: strategiýalar we amallar

5. 1 Göni aýyrmak

'DEL key '/' PURGE' proxy. Howp: aýyrmak bilen köp okyjylaryň arasyndaky ýaryş.

5. 2 Bellikler/Surrogate keys

Resminamany taglar toplumy bilen baglanyşdyryň (kategoriýa/awtor). Maýyplyk - tagt boýunça.
В Varnish/Edge — `Surrogate-Key: article:42 tag:author:7` + `BAN tag:author:7`.

5. 3 Event-driven maýyplyk

Pub/Sub (Kafka/NATS): çeşme üýtgese - "invalidate" wakasyny çap edýäris.
Keş müşderileri açarlary diňleýärler we pozýarlar/täzeleýärler.

5. 4 Iki fazaly

Ilki bilen açary köne diýip belleýäris (soft TTL), stale hyzmat edýäris, fonda täzelenýäris we atom bilen çalyşýarys.

6) Stampede/dogpile we gyzgyn açarlar bilen göreşmek

6. 1 Request coalescing (singleflight)

Bir prodýuser açary täzeleýär, galanlary netijä garaşýarlar ("täzelenýär").

6. 2 Jitter к TTL

Sinhron çişmezlik üçin TTL-e tötänlik (10-20% ±) goşuň.

6. 3 Soft-TTL + hard-TTL

Soft-TTL-e çenli kesişden hyzmat edýäris, paralel refresh triggerimi; hard-TTL boýunça - ýalňyşlyk hasaplaýarys.

6. 4 Gyzgyn açarlar

Umumylaryň üstündäki ýerli keşler (two-tier).
Gyzgyn açary birnäçe şarda we random saýlamakda köpeltmek (diňe read-only üçin).
Belli bir açary täzelemek üçin rate limit.

6. 5 Redis + Lua mysaly (singleflight-eskiz)

lua
-- SETNX lock with TTL to avoid deadlocks local ok = redis. call("SET", KEYS[1], "1", "NX", "EX", ARGV[1])
if ok then return "LOCKED"
else return "WAIT"
end

7) Göçürmek we nagt pul kabul etmek syýasaty

7. 1 Eviction

LRU: ýerli ýer üçin aňsat we gowy.
LFU: "uzak ömürli" gyzgyn açarlar bilen has gowudyr.
ARC/TinyLFU: balans recency/frequency.

7. 2 Admission (giriş)

Ullakan seýrek zatlary (TinyLFU/Bloom süzgüçleri) goýbermäň.
"Ululyk/gizlinlik" serhedinde uly gymmatlyklaryň (LZ4/Zstd) gysylmagy.

8) Şardlamak we topologiýalar

8. 1 Consistent hashing

Açarlary nodalar boýunça yzygiderli paýlaýar, klaster ulalanda/gysylanda hereketleri azaldar.

8. 2 Topologiýalar Redis/Memcached

Redis Cluster (slotlar/toplar), Sentinel (feýlower), replikasiýa read-only.
Memcached - serwer derejesinde göçürme bolmazdan, müşderi-saýd şarding (ketama hashing).

8. 3 Lokal + paýlanan

Kaskad: in-proc (mikro-TTL/LRU) → Redis (TTL has uzyn) → çeşme.
TTL iki nokatlaryna we keş tassyklaýjylaryna seresap boluň.

9) Edge, CDN we L7-kesh

9. 1 Micro-cache на Nginx

nginx proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=api:100m inactive=10m;
map $request_method $skip_cache { default 0; POST 1; PUT 1; DELETE 1; }

server {
location /api/list {
if ($skip_cache) { add_header Cache-Control "no-store"; }
proxy_cache api;
proxy_cache_valid 200 2s;       # micro-cache proxy_cache_use_stale error timeout updating;
proxy_cache_background_update on;   # SWR add_header X-Cache $upstream_cache_status;
proxy_pass http://upstream;
}
}

9. 2 Envoy (SWR we şertler)

yaml http_filters:
- name: envoy. filters. http. cache typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. cache. v3. CacheConfig typed_config:
"@type": type. googleapis. com/envoy. extensions. http. cache. file_system_http_cache. v3. FileSystemHttpCacheConfig cache_path: "/var/cache/envoy"

9. 3 Varnish (Surrogate keys)

Bukjaly maýyplyk üçin 'Surrogate-Key' we 'ban' belliklerini ulanyň.

10) Maglumatlaryň keş we utgaşdyrylmagy

10. 1 Read-your-writes

Ulanyjy profilleri/sebetleri üçin gysga TTL-leri ýa-da keş arkaly ýazgyny (write-through) ýa-da müşderi belligini (ýazgydan soň N sekuntda bypass) beriň.

10. 2 Eventual vs Strong

Maslahat beriş/seljeriş üçin - eventual + uzyn TTL.
Pul/sargyt statusy üçin - gysga TTL, tassyklama, käwagt möhüm ýollarda nagt däl.

10. 3 Üýtgeşik

Berk TTL we gaýtadan barlamazdan, howpsuzlyga/ACL täsir edýän meýdanlary kesip almaň.

11) Gözegçilik, SLO we dolandyryş

11. 1 Metrikler

hit_ratio (общий и per-route), byte_hit_ratio, miss_rate.
stampede_prevented_total, refresh_ahead_total, ban/purge_total.
Gizlinlik: p50/p95/p99 keş çeşmesi vs.
hot_keys_topN we olaryň QPS/baýtlary.

11. 2 Ýazgylar we yzarlamalar

Login 'X-Cache: HIT/MISS/STALE/UPDATING'.
Treklerde jogap çeşmesini belläň ('cache = true', 'tier = edge' service 'local').

11. 3 SLO çemeleşmesi

Mysal: "API/catalog p99 ≤ 250 ms, cache hit ≥ 85%, stampede ≤ 0. Soraglaryň% 1".

11. 4 Runbooks

"Sypdyrmalar artýar" → TTL, gyzdyrmak/maýyplyk, hot-keys, nagt pul ululygy we kabul ediş syýasatyny barlamak.

12) Howpsuzlyk we köp tenantlyk

Tenant-id-i açarlara salyň (we HTTP-de 'Vary' -de).
Şahsy jogaplaryňyzy 'public' diýip gizlemäň.
Duýgur maglumatlar bilen keseki şifrläň ýa-da diňe PII/ID saklamaň.

13) Adaty reseptler

13. 1 Katalog/lenta (dinamika diýen ýaly)

Edge-mikrokeş 1-3 s + SWR, içinde - Redis 15-60 s, täzeleniş wakalary boýunça maýyplyk.

13. 2 Ulanyjy profili

Cache-aside with TTL 30-120 s, bypass 5-10 s profil täzelenenden soň (cookie/heder) ýa-da write-through.

13. 3 Walýuta hümmetleri/gollanmalar

Uzyn TTL (minut-sagat) + täze maglumatlar çap edilende maksatly maýyplyk; şertli GET üçin 'ETag'.

13. 4 Gözleg netijesi

Edge-mikrokeş 1-2 s, içinde - refresh-ahead we coalescing, açarda query-parametrleriň kadalaşmagy.

14) Anti-patternler

Maýypsyz nagt pul: diňe TTL-de umyt → uzak penjireler ähmiýetsizdir.
Ullakan 'Wary': "partlama" wariantlary → pes hit-rate.
Prod/experiments → hapalanma üçin ýekeje keş.
TTL gutaranda çeşmede stampede → piklerden gorag ýok.
Berk kepilliksiz pul/hukuk/ACL nagt pul.
"Yzly-yzyna hemme zady" gysmak - goşmaça CPU, ownuk obýektlerde p99-yň ýaramazlaşmagy.

15) Girizmegiň çek-sanawy

  • Keshiň derejesini we maksatlaryny kesgitläň (edge/service/local).
  • Açarlary düzüň (wersiýa, tenant, parametrleriň kadalaşmagy).
  • Desen saýlaň (cache-aside/read-through/refresh-ahead).
  • TTL/soft-TTL/jitter sazlaň, SWR-i açyň.
  • coalescing/singleflight, stampede garşy goragy durmuşa geçiriň.
  • Maýyplygy guraň (wakalar, bellikler, purge/ban).
  • Hit-ratio/latentlik ölçeglerini we 'X-Cache' dashbordlaryny giriň.
  • Gyzgyn açarlar bilen ýük synaglaryny geçiriň.
  • SLO we runbooks belläň.
  • Howpsuzlyk/tenant-izolýasiýa we 'Vary' barlaň.

16) FAQ

Q: Näme saýlamaly - cache-aside ýa-da read-through?
A: Ýönekeý hyzmatlar üçin - cache-aside. Merkezleşdirmek we bitewi syýasat gerek - read-through.

Q: Iň amatly TTL-e nädip düşünmeli?
A: Rugsat berilýän köne, täzelenme ýygylygy we maksat hit-rate; jitter goşuň we p95/p99/bahasyna syn ediň.

Q: write-back haçan ýerlikli?
A: eventual-yzygiderlilik kabul edilip bilinjek we "goşmaça ýazmak" üçin ygtybarly nobat/log bar bolan ýokary ýüklenen akymlar üçin.

Q: Ygtyýarly jogaplary kesmek mümkinmi?
A: Hawa, ýöne 'private' we/ýa-da tenant/user belgisini/' Vary 'düwmesine goşuň. truly-private üçin - müşderi keşi.

Q: Keşi nädip gyzdyrmaly?
A: Meşhur açarlaryň sanawlary, arka aýlawly wormer, jülgelerden aglamak, çykmazdan ozal gyzdyrmak/iň ýokary (gara anna we ş.m.).

17) Netijeler

Netijeli kesmek - açar dizaýny + akylly TTL + wakalar boýunça maýyplyk, SWR/refresh-ahead we stampede garşy gorag bilen güýçlendirilen başarnykly saýlanan pattern. Nagt pullary (müşderi/edge/hyzmat) derejelere bölüň, syn edilişini we SLO-ny goşuň we durnukly gizlinlik guýruklaryny, öňünden aýdyp boljak bahany we iň ýokary ýüklere garşylygy alyň.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.