Sobes.tech

Golang

Utilizarea ScyllaDB înainte de producător este un antipattern. Cum se organizează corect deduplicarea?

Senior
178

De ce trebuie să stocăm datele brute în stocarea S3? Este corect să folosim TTL de 5 minute pe Redis, sau este mai bine să păstrăm mai mult timp — 24 de ore, și să folosim ScyllaDB ca sursă de verificare a datelor?

Senior
150

Să presupunem că suntem o rețea mare de publicitate. Plasăm bannere pe site-uri partenere din întreaga lume. Trebuie să proiectăm un sistem de colectare și procesare a evenimentelor în timp real. Aceste date sunt critice pentru două scopuri: Facturare: Suma de bani dedusă de la advertiseri pentru clicuri. Analitică: Afișarea performanței curente a campaniilor (CTR, afișări) în panoul de control. Datele de intrare (pentru calcularea încărcăturii) Trebuie să estimați singur capacitățile necesare (RPS, trafic, stocare), bazându-vă pe următoarele metrici: Rețeaua parteneră: 500.000 de site-uri active. Trafic: În medie, fiecare site primește 2 vizualizări de pagină pe secundă. Blocuri publicitare: Pe fiecare pagină sunt afișate simultan 3 bannere. Conversie: Rata medie CTR (Click-Through Rate) este de 1%. Neregularitate: Vârful de încărcare (orele de seară) este de 4 ori mai mare decât media. Dimensiunea evenimentului: Obiectul evenimentului (ID banner, ID site, UserID, Timestamp, tip eveniment) cântărește aproximativ 500 de bytes. Cerinte tehnice Near Real-Time: Datele din interfața analitică trebuie să apară cu o întârziere de cel mult 10 secunde. Fiabilitate: Pierderea clicurilor nu este acceptabilă (aceasta înseamnă pierdere directă de bani). Pierderea de afișări (impressions) este acceptabilă în limitele de 0,01%. Scalabilitate: Sistemul trebuie să poată fi extins cu ușurință odată cu creșterea numărului de platforme.

Senior
144