El uso de ScyllaDB antes del productor es un antipatrón. ¿Cómo organizar correctamente la deduplicación?
Golang
¿Por qué necesitamos almacenar datos en bruto en el almacenamiento S3? ¿Es correcto usar TTL en Redis de 5 minutos, o es mejor almacenarlos por más tiempo, como 24 horas, y usar ScyllaDB como fuente de verificación de datos?
Supongamos que somos una gran red de publicidad. Colocamos banners en sitios asociados en todo el mundo. Necesitamos diseñar un sistema para recopilar y procesar eventos en tiempo real. Estos datos son críticos para dos propósitos: Facturación: Deducción de dinero a los anunciantes por clics. Analítica: Mostrar la efectividad actual de las campañas (CTR, impresiones) en el panel de control. Datos de entrada (para calcular la carga) Debe evaluar por sí mismo las capacidades requeridas (RPS, tráfico, almacenamiento), basándose en las siguientes métricas: Red de socios: 500,000 sitios activos. Tráfico: En promedio, cada sitio recibe 2 vistas de página por segundo. Bloques publicitarios: En cada página se muestran 3 banners simultáneamente. Conversión: La tasa media de clics (CTR) es del 1%. Irregularidad: La carga pico (horas de la noche) es 4 veces mayor que la media. Tamaño del evento: El objeto del evento (ID del banner, ID del sitio, UserID, Timestamp, tipo de evento) pesa aproximadamente 500 bytes. Requisitos técnicos Casi en tiempo real: Los datos en la interfaz analítica deben aparecer con un retraso no mayor a 10 segundos. Fiabilidad: La pérdida de clics no es aceptable (esto implica pérdida de dinero). La pérdida de impresiones es aceptable en un 0.01%. Escalabilidad: El sistema debe poder ampliarse fácilmente con el crecimiento del número de plataformas.