L'utilisation de ScyllaDB avant le producteur est un antipattern. Comment organiser correctement la déduplication?
Golang
Pourquoi devons-nous stocker des données brutes dans le stockage S3 ? Est-il correct d'utiliser un TTL de 5 minutes sur Redis, ou vaut-il mieux les conserver plus longtemps, comme 24 heures, et utiliser ScyllaDB comme source de vérification des données ?
Supposons que nous sommes un grand réseau publicitaire. Nous plaçons des bannières sur des sites partenaires dans le monde entier. Nous devons concevoir un système de collecte et de traitement des événements en temps réel. Ces données sont critiques pour deux objectifs: Facturation : Déduire de l'argent aux annonceurs pour les clics. Analytique : Afficher l'efficacité actuelle des campagnes (CTR, impressions) dans le tableau de bord. Données d'entrée (pour le calcul de la charge) Vous devez estimer vous-même les capacités requises (RPS, trafic, stockage), en vous basant sur les métriques suivantes: Réseau partenaire : 500 000 sites actifs. Trafic : En moyenne, chaque site reçoit 2 vues de pages par seconde. Blocs publicitaires : Sur chaque page, 3 bannières sont affichées simultanément. Conversion : Le taux moyen de clics (CTR) est de 1%. Inégalité : La charge de pointe (heures du soir) est 4 fois supérieure à la moyenne. Taille de l'événement : L'objet de l'événement (ID de la bannière, ID du site, UserID, Timestamp, type d'événement) pèse environ 500 octets. Exigences techniques Presque en temps réel : Les données dans l'interface analytique doivent apparaître avec un retard ne dépassant pas 10 secondes. Fiabilité : La perte de clics n'est pas acceptable (cela entraîne une perte d'argent). La perte d'impressions est acceptable jusqu'à 0,01%. Scalabilité : Le système doit pouvoir s'étendre facilement avec la croissance du nombre de plateformes.