Obliczenia krawędzi i kontrola opóźnień
1) Dlaczego krawędź i co to jest kontrola opóźnienia
Krawędź to wykonanie logiki bliżej użytkownika (PoP, CDN, operator lokalny PoP, 5G MEC). Celem jest zmniejszenie RTT i ogonów (p95/p99), rozładowanie rdzenia i zapewnienie zgodności geo.
Kontrola opóźnień - zestaw technik architektonicznych i protokołowych, które utrzymują opóźnienie w danych SLO podczas szczytów, utraty pakietów i degradacji zależności.
Kluczowe pomysły: lokalizacja, asynchronia, degradacja z priorytetem wartości.
2) Mapa obwodowa
Static/Assets CDN: buforowanie, image/HTML transformate, Brotli, WebP/AVIF, HTTP/3.
Obliczanie krawędzi: funkcje/pracownicy (Cloudflare Workers, Fast Compute @ Edge, Vercel Edge, Fly. io).
Dane krawędzi: KV/SQLite-na-krawędzi/Trwałe obiekty/Globalne tabele (z zastrzeżeniami spójności).
Bezpieczeństwo krawędzi: WAF/Limit stawki/Bot mgmt/Geo-rules/Kontrole HMAC.
Sieć krawędzi: Anycast, smart-routing, optymalizacja TCP/QUIC.
3) Logiczne wzory rozmieszczenia
Ekranowanie i rozgrzewanie: warstwa tarczy pochodzenia, ocieplenie/przypinanie popularnych kluczy.
Compute-on-read: personalizacja banerów, odgałęzienie A/B, przekierowania geo.
Pre-auth na krawędzi: walidacja JWT/HMAC, zrzucanie śmieci do jądra.
Kolejka do zapisu - Zapisuje niestandardowe zdarzenia do kolejki krawędzi z asynchroniczną dostawą do jądra (idempotencja!).
Flagi funkcji @ edge: szybkie przełączniki degradacji (tryb lekkiej strony/katalogu).
4) Protokoły i transport
HTTP/3 (QUIC): mniejszy uścisk dłoni, odporny na utratę opakowań. Włącz 0-RTT tylko dla idempotenta GET/HEAD.
Dostrajanie TCP (dla HTTP/1. 1/2): BBR/CUBIC, 'tcp _ fastopen', 'keep alive', łączenie połączeń.
TLS: OCSP stapling, ECDSA-серта, wznowienie sesji; HSTS na obwodzie.
DNS: krótki TTL (30-120s) dla dynamiki, split-horizon, rozdzielacze anycast.
5) Kontrola ogona: p95/p99
Żądania zabezpieczane: zduplikować żądanie drugiego backendu po „terminie rozpoczęcia” (na przykład opóźnienie p90) i anulować przegraną.
Rozmnażanie w terminie: Przepuścić 'x-deadline-ms '/' grpc-timeout', aby utrzymać łańcuch przed przekroczeniem SLA.
Współzależność adaptacyjna: Ograniczenie równoczesności roty/najemcy poprzez obserwację opóźnienia (AIMD).
Grodzie i priorytecie: ścieżki krytyczne (login/deposit) otrzymują kwotę i kolejkę powyżej klasy.
6) Timeouts, rekolekcje i idempotencja
Całkowity termin <per-hop timeout × N; rekolekcje tylko na operację idempotentną.
Backoff + jitter (połowa szansy opóźnień), zabezpieczenie zamiast ślepych retras.
Idempotency-Key for POSTs (portfele/płatności/bonusy).
Wiersze retry-After i klient (429/503) z oknami wykładniczymi.
Wysłannik (fragment trasy)
yaml route:
timeout: 300ms retry_policy:
retry_on: "reset,5xx,connect-failure"
num_retries: 1 per_try_timeout: 150ms retry_host_predicate:
- name: envoy. retry_host_predicates. previous_hosts host_selection_retry_max_attempts: 3 hedge_policy:
initial_requests: 1 additional_request_chance: { default_value: 0. 5} # enable after per-timeout
7) Buforowanie i spójność
Dyscyplina klucza pamięci podręcznej: normalizacja nagłówków/zapytań, zróżnicowanie według wymaganych pól.
Stale-while-revalidate: natychmiastowy zwrot „nieco przestarzałej” + aktualizacja tła.
Miękki TTL/Hard TTL: miękka przestarzałość dla ścieżek odczytu, twardy TTL dla konfiguracji krytycznych.
Podpisane wymiany/Podpisane adresy URL: ochrona gorących zasobów, w tym ograniczenia regionalne.
NGINX (przykład SWR)
nginx proxy_cache_valid 200 10m;
proxy_cache_use_stale updating error timeout http_500 http_502 http_504;
add_header Age $upstream_cache_status;
8) Pracownicy krawędziowi: przykłady
Pracownicy w chmurze (JWT + Geo)
js export default {
async fetch(req, env, ctx) {
const url = new URL(req. url);
const { country } = req. cf {};
//Simple geo-policy if (country & &! ["DE, ""PL, ""SE,"" UA"] .includes (country)) {
return new Response("Region not served", { status: 451 });
}
//Easy JWT validation const token = req. headers. get("Authorization")?.replace("Bearer ","");
if (!token! isValid(token, env. JWTPUB)) return new Response("",{status:401});
//Prefetch critical data const resp = await fetch ("https ://origin. internal/api/v1/catalog", { cf:{ cacheTtl: 60, cacheEverything: true }});
return new Response(resp. body, resp);
}
}
Szybkie obliczanie @ Edge (waga Kanaryjczyków)
W salonach/stronach - 5% dla nowej wersji, szybki rollback przez config krawędzi.
9) Priorytety i degradacja
Wskazówki dotyczące priorytetów: priorytety HTTP/2/Wczesne wskazówki HTTP (103) → wczesne przeforsowanie zasobów krytycznych.
Ścieżka degradacji: uproszczony szablon interfejsu użytkownika, wyłączanie ciężkich widżetów, obniżanie jakości obrazu.
Kształtowanie ruchu: ograniczenie animacji, widżety dostawców zewnętrznych w przypadku złej sieci (sygnały RUM).
10) Obserwowalność na obwodzie
RUM + Syntetyczne: Web-Vitals (LCP/CLS/INP), TTFB, RTT, тотера QUIC.
Przykłady: Skojarzyć kolce p99 z konkretnymi trace_id i PoP.
SLO na region/ASN/dostawca: „p95 TTFB ≤ 200 ms”, „p99 API ≤ 400 ms”.
Próbkowanie ogona: zapisz błędy/p99, segmenty 'edge _ pop', 'region', 'lokator'.
Dzienniki krawędzi: hity WAF, bot-score, cache-status, geo-rozwiązania.
11) Zarządzanie skryptami osób trzecich
Polityka integralności CSP i Subresource.
Pobierz przez defer/async, odizolowane domeny, ścieżki krytyczne - bez blokowania third-party JS.
Personalizacja i śledzenie - wykonaj na krawędzi asynchronicznie, bez wpływu na TTFB.
12) Przeciwciała/antyfraud na krawędzi
Odcisk palca i prędkość urządzenia ograniczają się do rdzenia.
Wiązanie tokenu (jednorazowe żetony na formularz/operację), podpis HMAC żądania.
Challenge-step (Turnstile/hCaptcha) tylko przy zwiększonym ryzyku; cache „trust” przez IP/ASN/session.
13) Szczegóły dotyczące iGaming/Finance
Geo-zgodność: blokowanie/przekierowywanie przez jurysdykcję do krawędzi (strony zasad, Responsible Gaming).
Priorytety PSP/KYC: trasa krawędzi do „zdrowego” dostawcy (smart-routing), indywidualne TTL/wagi do DNS dla domen PSP.
Przeciwdziałanie nadużyciom: limity depozytów/rejestracji/premii, z uwzględnieniem sygnałów prędkości na krawędzi; wszystkie operacje pisania są idempotentne.
Pobyt danych: dane osobowe nie są buforowane na krawędzi; Nagłówki PII są edytowane/usuwane, pinning TLS do PSP jest włączony.
CLO dla ścieżek „money”: stricter p95/p99, przydzielone kwoty, indywidualne wpisy.
14) Przepisy architektoniczne
14. 1 „Szybki przód”
Szablon HTML i krytyczny CSS na krawędzi, dane poprzez „stale-while-revalidate”, ciężkie widżety są leniwe.
14. 2 „Droga pieniędzy”
Pre-auth + HMAC na krawędzi, szybkie sprawdzanie reguł/limitów, kolejkowanie, odpowiedź 202/OK, kolejne webhook/ankiety; terminy i zabezpieczenie PSP.
14. 3 „Katalogi/gry”
Katalogi/konfiguracje - global KV/edge cache; dla ceny/wieku regionalnego - obliczanie na krawędzi z przepisami lokalnymi.
15) Wydajność i koszt
Trafienie pamięci podręcznej ≥ 95% dla statycznych i ≥ 70% dla półdynamicznych (fragmenty HTML) - cel.
Ograniczenie „międzyregionalnego wyjścia” poprzez lokalne PE i nieustanne reagowanie.
Reguły śledzenia ograniczają objętość × 10- × 100 przy zachowaniu cennych przypadków.
Protokół QUIC oszczędza RTT, ale zachowaj odwrót na H2.
16) Lista kontrolna gotowości Prod
- HTTP/3/QUIC włączone; 0-RTT tylko dla idempotenta.
- Pracownicy krawędziowi: walidacja JWT/HMAC, zasady geograficzne, degradacja flag funkcji.
- Strategia pamięci podręcznej: klucze, SWR, miękki/twardy TTL; tarcza pochodzenia + rozgrzewka.
- Zabezpieczenie, propagacja terminów, współistnienie adaptacyjne, grodzie.
- Timeouts/Retrays: backoff + jitter, idempotentne powtórzenia tylko.
- RUM + syntetyczny; SLO według regionu/ASN; próbkowanie ogonowe p99/błędy.
- CSP/SRI i kontrola skryptów stron trzecich; Punktacja WAF/bot na krawędzi.
- Dla iGaming: geo-zgodność, inteligentne routing PSP, pisać idempotency, nie PII w pamięci podręcznej.
- Książki startowe: jak włączyć rozkład/przełącznik wagi/rolki z powrotem kanarka.
- Testy: opóźnienie przy stracie 1-3%, opóźnienia chaosu, próba awarii DNS.
17) TL; DR
Dostarcz logikę jak najbliżej użytkownikowi (pracownicy krawędzi + pamięć podręczna), porozmawiaj o HTTP/3/QUIC, ściśle kontroluj terminy/terminy, „wyciąć ogony” p99 zabezpieczenia i grodzie/priorytet. Ścieżki krytyczne - oddzielne kwoty i SLO, wszystkie rekordy - są idempotentne. Obserwowalność - RUM + syntetyczne + śledzenie ogona. Dla iGaming - geo-zgodność, inteligentny routing PSP/KYC, zerowy wyciek PII na obwodzie i tryby szybkiej degradacji.