Sobes.tech

Golang

Die Verwendung von ScyllaDB vor dem Producer ist ein Antipattern. Wie organisiert man die Duplikatentfernung richtig?

Senior
177

Warum müssen wir Rohdaten im S3-Speicher ablegen? Ist es richtig, eine TTL von 5 Minuten in Redis zu verwenden, oder ist es besser, sie länger zu speichern, z.B. 24 Stunden, und ScyllaDB als Datenüberprüfungsquelle zu verwenden?

Senior
150

Angenommen, wir sind ein großes Werbenetzwerk. Wir platzieren Banner auf Partnerseiten weltweit. Wir müssen ein System entwerfen, um Ereignisse in Echtzeit zu sammeln und zu verarbeiten. Diese Daten sind für zwei Zwecke kritisch: Abrechnung: Geldabzug von Werbetreibenden für Klicks. Analytik: Anzeige der aktuellen Kampagnenleistung (CTR, Impressionen) im Dashboard. Eingabedaten (zur Berechnung der Last) Sie müssen die erforderlichen Kapazitäten selbst einschätzen (RPS, Traffic, Speicher), basierend auf den folgenden Metriken: Partnernetzwerk: 500.000 aktive Websites. Verkehr: Im Durchschnitt erhält jede Website 2 Seitenansichten pro Sekunde. Werbebanner: Auf jeder Seite werden 3 Banner gleichzeitig angezeigt. Konversion: Die durchschnittliche CTR (Click-Through-Rate) beträgt 1%. Unregelmäßigkeit: Die Spitzenlast (Abendstunden) ist 4-mal höher als der Durchschnitt. Größe des Ereignisses: Das Ereignisobjekt (Banner-ID, Website-ID, UserID, Timestamp, Ereignistyp) wiegt etwa 500 Byte. Technische Anforderungen Near Real-Time: Daten in der Analyseoberfläche sollten mit einer Verzögerung von höchstens 10 Sekunden erscheinen. Zuverlässigkeit: Klickverluste sind nicht akzeptabel (das bedeutet direkten Geldverlust). Impressionverluste (Impressions) sind im Rahmen von 0,01% akzeptabel. Skalierbarkeit: Das System sollte bei wachsender Anzahl der Plattformen leicht erweiterbar sein.

Senior
144