Evaluări în timp real: arhitectură tehnică
Ratingul în timp real este un pachet de servicii care transformă milioane de evenimente de jocuri în poziții actualizate în sute de milisecunde, menținând în același timp onestitatea, auditabilitatea și gestionarea economică. Mai jos este un constructor practic de la cerințe la funcționare.
1) Cerințe și obiective
Latență la UI: ≤ 200-300 ms p95 de la sosirea evenimentului la actualizarea poziției.
Precizie: compensarea corectă a „celor mai bune N „/diviziuni/cravate-pauze în timpul sarcinii și eșecuri.
Disponibilitate: ≥ 99. 9% pentru perioada turneului; degradarea fără pierderea integrității.
Idempotența: „exact o dată” la nivel de angajament „, cel puțin o dată” în transport.
Scară: creștere orizontală pe regiuni/diviziuni/echipe (top-K pe minge).
Audit: jurnale neschimbabile de reguli, evenimente, taxe și probleme.
2) Diagrama sistemului (nivel de 10.000 ft)
Event Ingest Scoring Engine Stream Aggregator (Top-K/Top-M) Write-Optimized Store
Фоново: Snapshotter, Anti-fraudă/RG, Analytics & A/B, Audit/Observabilitate.
3) Ingerarea evenimentelor
Sarcini: protecție împotriva duplicatelor, exploziilor, pierderilor din rețea.
Idempotency: fiecare eveniment are un 'event _ uuid'; „văzut/acumulat” verifica.
Semantica de livrare: transport - cel puțin o dată, contabilitate puncte - exact o dată.
Backpressure: cozi cu loturi dinamice; la supraîncărcare - prioritizarea tururilor „active”.
Ferestre de timp: permite evenimente târzii (de exemplu, până la 90 de secunde) - traseul către „fereastra de recalculare”.
Timp: server UTC, pe client - numai cartografiere locală.
4) Scoring motor
Principii: reguli versionate, anti-pay-to-win, rollback ușor.
Versioning: 'rule _ set _ id' + feature-flags per-region/division.
Modele: multiplicator ('Scor = rundă (100log2 (Win/Bet + 1))'), win-based with log-curve, bager-based (numai ca fundal meta).
Offset „cel mai bun N „: păstrați structura de top-N pe jucător/zi/tur; sumare/mediană după format.
Excepții: coef _ bonus pentru fonduri bonus ≤ 0. 5 "sau" 0 "; capac per rotire/zi; cote per furnizor.
Tie-break: 1) atingerea anterioară a vitezei finale; 2) o mai mare diversitate; 3) seminţe deterministe.
5) Agregarea fluxului și K de top
Scopul: recalcularea rapidă a pozițiilor fără scanarea întregului set.
6) Stocare: scrie vs citit
Write-optimized store: accrual log, best-N states, tie-breaks, metadate (înregistrare/actualizări numai).
Magazin optimizat pentru citire (interogare): „vitrine” denormalizate pentru UI: top 100, „poziția mea”, „partea de sus a zilei/divizie”, contribuție la echipă.
Snapshotter: „instantanee” orare ale consiliului de conducere; rollback/reluare rapidă, rapoarte și audituri.
Consecvență: eventual pentru liste largi, citiți-vă-scrie pentru „poziția mea”.
7) Cash și Edge
Cache fierbinte: ultimele poziții și scorul jucătorilor pe ciob; TTL 1-5 sec; handicap după eveniment.
Strat de margine/CDN: blocuri statice, pagini rezultate „reci”, dar nu logica acumulată.
Rezervă: în timpul degradării - „modul bronz”: UI actualizați fiecare X secunde + bloc widget greu.
8) Timp, ferestre și fusul orar
Timp unic „adevărat”: UTC privind serviciile; termene limită în UTC.
Localizare - Conversia timpului pe client (fusul orar al utilizatorului).
Borduri: „fereastră moale” de închidere 1-3 min pentru lag-uri de rețea (în T&C).
Noi mergem clasa cuvânt: ceas-skew de monitorizare, alerte NTP, drift de măsurare.
9) Confruntarea cu evenimente târzii și duplicate
Evenimente târzii: păstrați „fereastra de reconciliere”; recalcularea la nivel local + ajustarea „calmă” a pozițiilor din fluxul de notificare.
Doubles: 'event _ uuid' + (jucător, joc, pariu, ts) într-o fereastră îngustă; revista „văzut”.
Accrual idempotence - Evenimentul → schimba tranzacția cu starea applied/rolled_back
10) Antifraudă și RG (încorporate în conductă)
Notare comportamentală: intervale uniforme, super-viteză, „fără zgomot” - steaguri.
Grafic de conectare: dispozitive comune/IP/plăți → clustere; dețin premii, verificare manuală.
Cote și capace: N cele mai bune încercări/zi, cote pentru un slot/furnizor, puncte de plafonare per rotire/zi.
Fonduri bonus: cote/eliminare.
RG: punctele sunt acordate numai în limite voluntare (timp/depozite/pierderi); pauză memento-uri.
11) Multi-regiune și toleranță la erori
Active-active pe regiuni: cioburi regionale + seif global; rutare proximitate.
RTO/RPO: RTO <15 min (folback pe instantanee), RPO = 0 pentru accruals (reluare jurnal idempotent).
Partiție-toleranță: în cazul unui decalaj de rețea - placa de lider local, consolidarea ulterioară și corecția poziției soft.
FX și valute: dacă premiile sunt în valute diferite, fixăm momentul conversiei, tampon FX 1-3%.
12) Securitate și confidențialitate
Date: minimizare (pseudonime, fără PII în agregator), criptare „în zbor” și „în repaus”.
Acces: principiul celor mai mici privilegii, secrete în KMS, audit de acces.
T & C/jurisdicții: jurnale de regulă/versiune, geo-blocuri, restricții de vârstă.
13) Observabilitatea și practicile SRE
SLO: UI lag ≤ 300 ms p95, Timp de revendicare ≤ 10 min p95, uptime ≥ 99. 9%.
Valori: evenimente/sec, proporția de ia/respinge, late-rate, top-K heap-growth, stream lag, erori acumulate, claim-rate.
Urmărirea: ingera → marcarea → memoria cache → UI.
Alerte: butonul de oprire (dezactivați experimentele grele/reduceți N cel mai bun), degradarea automată.
Post-mortem: RCA pentru 24-48 de ore, lista elementelor de acțiune, politica de eroare-buget.
14) Recompense și revendicări
Premiul auto: în cazul unui eveniment apropiat - calcularea pozițiilor, emiterea, încasările.
Cerere-fereastră: ≤ 72 de ore, livrare retray, ordinea deterministă a plăților.
Transparență: istoria premiilor în profil: regulă, timp, sumă, sursă.
Deține: pentru premii rare/valoroase înainte de KYC/AML.
15) Experimente A/B și evoluția circuitului
Ce se testează: N cel mai bun (10/20), capac per rotire (pornit/oprit), bonus diversitate (0/50/100), tip agregare (cantitate/mediană).
Randomizare: pe regiuni/canale/clustere - evitarea revărsărilor.
Guardrails: RTP, reclamații/10k, semnale RG - nu degradate.
Migrații: compatibilitatea schemei de stocare, scrierea dublă pe durata migrației.
16) UX-modele de rating în timp real
Rating center: regula victoriei, cronometrul, scorul, încercările rămase, următoarea recompensă.
Feedback-ul live: „+ 40 de puncte pentru x3”, „2 încercări din 20 au rămas”, „ai urcat 3 locuri”.
Vitrine: total top 100, „poziția mea”, „partea de sus a zilei/divizie”, contribuția la echipa.
A11y: contrast, număr mare, stări de focalizare, exprimarea progresului.
Localizare: termene limită/cronometre în TZ local, multilingvism.
17) Eșecuri frecvente și scenarii de degradare
18) Lista de verificare lansează evaluări în timp real
Reguli/Economie
- Formula, top N, tiebreaker, diviziuni
- Rată de recompensă, lățime de plată, pariuri, cerere ≤ 72 h
Echipament
- Idempotent Ingera, fereastră târzie, Sharding
- Stream-Aggregator (топ -K/Top-M), Snapshotter
- Hot Cache/Edge, Sănătate/API de stare, buton de oprire
Siguranță/RG
- Notare comportamentală, grafic de legătură, gurmanzi/cote
- Limite RG, memento-uri, KYC/AML pentru premii mari
Date/A/B
- Tablouri de bord: lag, late-rate, duble, valori corecte
- Design experimental și parapete, scriere dublă în timpul migrațiilor
UX
- Centru de evaluare, micro-feedback, A11y, localizare
- Reguli scurte în 1 ecran + full T&C
Un rating fiabil în timp real nu este un serviciu, ci un ecosistem disciplinat: recepție idempotentă, notare versionată, agregare a fluxului de top-K, memorie cache rapidă, instantanee de stare și mecanisme anti-fraudă/RG încorporate. Adăugați strict SLO/SLA, UX ușor de înțeles și verificarea schimbării prin A/B - și veți obține clasamente în care jucătorii au încredere, iar produsul obține o creștere previzibilă de retenție, Stickiness și LTV.