Utilizarea ScyllaDB înainte de producător este un antipattern. Cum se organizează corect deduplicarea?
Golang
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?
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.