Sobes.tech

Golang

A ScyllaDB használata a producer előtt antipattern. Hogyan szervezzük meg helyesen a deduplikációt?

Senior
151

Tegyük fel, hogy egy nagy reklámhálózat vagyunk. Bannereket helyezünk el partneroldalakon világszerte. Olyan rendszert kell terveznünk, amely valós idejű eseménygyűjtést és feldolgozást végez. Ezek az adatok két célból kritikusak: Számlázás: A kattintásokért pénzt vonunk le a hirdetőktől. Elemzés: A kampányok aktuális hatékonyságának (CTR, megjelenítések) megjelenítése a személyes irányítópulton. Bemeneti adatok (a terhelés kiszámításához) Önnek kell saját magának értékelnie a szükséges kapacitásokat (RPS, forgalom, tárolás), az alábbi metrikák alapján: Partnerhálózat: 500.000 aktív oldal. Forgalom: Átlagosan minden oldal 2 oldalmegtekintést kap másodpercenként. Hirdetési blokkok: Minden oldalon egyszerre 3 banner jelenik meg. Átváltás: Az átlagos CTR (Click-Through Rate) 1%. Eltérés: A csúcsterhelés (esti órák) négyszerese az átlagosnak. Esemény mérete: Az esemény objektuma (Banner ID, Oldal ID, UserID, Timestamp, eseménytípus) kb. 500 bájt. Műszaki követelmények Near Real-Time: Az analitikai felületen az adatok legfeljebb 10 másodperces késleltetéssel jelenjenek meg. Megbízhatóság: A kattintások elvesztése nem elfogadható (ez közvetlen pénzveszteséget jelent). A megjelenések elvesztése (impressions) legfeljebb 0,01% lehet. Skálázhatóság: A rendszernek könnyen bővíthetőnek kell lennie a platformok számának növekedésével.

Senior
139

Miért kell nyers adatokat tárolni az S3 tárolóban? Helyes-e 5 perc TTL-t használni a Redis-ben, vagy jobb-e hosszabb ideig — 24 óráig, tárolni, és a ScyllaDB-t használni az adatellenőrzés forrásaként?

Senior
131