Cómo lidiar con la acumulación de datos de millones de niveles de MQ

inserte la descripción de la imagen aquí

análisis del problema

Si, si ha, RabbitMQ o Kafka, estas colas de mensajes tienen una gran cantidad de datos acumulados, incluso decenas de miles, como ingeniero de desarrollo o arquitecto, ¿cómo resolvemos esta situación inesperada? Puede pensar, cómo se pueden acumular tantos datos, démosle algunos ejemplos, los siguientes son algunos ejemplos de escenarios reales donde pueden ocurrir millones de acumulación de datos:

  1. Actividades promocionales de comercio electrónico: cuando se llevan a cabo actividades promocionales a gran escala en la plataforma de comercio electrónico, los usuarios pueden realizar una gran cantidad de pedidos al mismo tiempo, lo que resulta en la acumulación de colas de procesamiento de pedidos.

  2. Puntos de acceso de redes sociales: las plataformas de redes sociales pueden generar una gran cantidad de comentarios, me gusta y operaciones de reenvío cuando ocurren eventos importantes, lo que resulta en la acumulación de colas de mensajes.

  3. Sistema de transacciones financieras: en un sistema de transacciones financieras altamente concurrente, las solicitudes de transacciones pueden llegar a millones en un instante, lo que genera una acumulación de colas de procesamiento de transacciones.

  4. Análisis de datos en tiempo real: en escenarios en los que es necesario analizar una gran cantidad de datos en tiempo real, como la colocación de anuncios en línea, el análisis del comportamiento del usuario, etc., las tareas de análisis pueden hacer que se acumulen colas de procesamiento de datos.

  5. Sincronización de datos a gran escala: en un sistema distribuido, cuando los datos deben sincronizarse con diferentes nodos o centros de datos, se puede generar una gran cantidad de tareas de sincronización, lo que resulta en la acumulación de colas de sincronización de datos.

  6. Procesamiento de datos por lotes: en las tareas de procesamiento por lotes programadas, como la limpieza de datos, la generación de informes, etc., se puede activar una gran cantidad de tareas al mismo tiempo, lo que genera una acumulación de colas de procesamiento de tareas.

  7. Datos de dispositivos de IoT: en escenarios de IoT, una gran cantidad de dispositivos que cargan datos puede causar un retraso en la cola de procesamiento de datos, especialmente cuando los dispositivos se conectan en línea repentinamente o ocurren eventos a gran escala.

  8. Sistema de publicación de suscripción: en el sistema de publicación de suscripción de mensajes, cuando una gran cantidad de suscriptores se suscriben a un tema candente al mismo tiempo, los mensajes publicados pueden acumularse en la cola.

  9. Recopilación y procesamiento de registros: en un sistema de recopilación y procesamiento de registros a gran escala, los registros del sistema, los registros de aplicaciones, etc. pueden generar una gran cantidad de datos de registro durante las horas pico, lo que genera la acumulación de colas de procesamiento de registros.

  10. Envío de aplicaciones móviles: cuando una gran cantidad de usuarios necesitan recibir mensajes de notificación al mismo tiempo que una aplicación móvil envía notificaciones, la cola de envío de mensajes puede acumularse.

Estos escenarios son solo ejemplos. De hecho, la acumulación de datos de millones de niveles puede ocurrir en cualquier aplicación de alta concurrencia que necesite procesar una gran cantidad de datos.

Resolución de problemas - mecanismo de preprocesamiento:

(anticipar la ocurrencia de posibles eventos)

  1. Control de flujo y limitación de flujo: realice el control de flujo en el lado del productor de mensajes, limite la tasa de generación de mensajes y evite generar una gran cantidad de mensajes en un período corto de tiempo. Utilice un algoritmo de limitación de la tasa (como un cubo de fichas o un algoritmo de cubo con fugas) para suavizar la tasa de envío de mensajes.

  2. Estimación y planificación de mensajes: calcule la posible acumulación de mensajes en función de los datos históricos y las condiciones comerciales. Formule una estrategia razonable de procesamiento de mensajes, como procesamiento por lotes, aumento del número de consumidores, etc., establezca umbrales y reglas de alarma, y ​​active una alarma cuando la acumulación de mensajes exceda el valor preestablecido, para que se puedan tomar medidas oportunas.

Resolución de problemas - Mecanismo de gestión provisional:

(Manejo de emergencia)

  1. Procesamiento paralelo: use el procesamiento paralelo de subprocesos o procesos múltiples en el lado del consumidor para mejorar la velocidad de procesamiento de mensajes. Asegúrese de que la lógica del consumidor sea eficiente y no bloquee para que no afecte el rendimiento general.

  2. Partición y agrupación de mensajes: divida los mensajes en múltiples particiones o grupos, cada partición o agrupación es manejada por un consumidor diferente. Esto mejora el paralelismo y el equilibrio de carga.

  3. Optimización del consumidor: Optimice el código del consumidor para reducir el consumo de recursos innecesarios y la complejidad. Evite largas operaciones de base de datos, solicitudes de red u operaciones computacionalmente intensivas.

  4. Expansión y contracción automática: de acuerdo con la situación de carga real, realice el mecanismo automático de expansión y contracción y ajuste dinámicamente el número de consumidores para hacer frente a diferentes situaciones de acumulación de mensajes.

Resolución de problemas - mecanismo de posprocesamiento:

(principalmente en análisis y prevención)

  1. Recuperación de fallas: tenga en cuenta la idempotencia de los mensajes y asegúrese de que, incluso si el procesamiento de mensajes falla o se repite, no se producirán inconsistencias en los datos. Implemente un mecanismo de reintento o un mecanismo de compensación cuando falle el procesamiento de mensajes.

  2. Monitoreo y alarmas: configure un sistema de monitoreo para monitorear el estado de las colas de mensajes y la salud de los consumidores en tiempo real. Cuando los mensajes se acumulan o los consumidores son anormales, activa notificaciones de alerta.

  3. Migración y clasificación de datos: limpie, clasifique y migre los datos de los mensajes con regularidad, elimine los mensajes caducados o que ya no necesite y reduzca la carga de las colas de mensajes.

  4. Optimización del rendimiento: optimice regularmente el rendimiento del sistema de procesamiento de mensajes, incluida la optimización del índice de la base de datos, la refactorización de código, etc., para garantizar la estabilidad y la eficiencia del sistema.

En general, el mecanismo de procesamiento detallado previo al evento, durante el evento y posterior al evento puede manejar de manera efectiva la acumulación de millones de datos. Cada etapa tiene medidas y estrategias específicas, que se pueden ajustar y optimizar de acuerdo con la situación real, para lograr un proceso de procesamiento de mensajes más eficiente y estable. Aquí no apuntamos específicamente qué middleware de mensajes, RabbitMQ, ActiveMQ, Kafka son todos aplicables, lo que proporcionamos es una idea de solución, ¡cómo darse cuenta de que aún debe implementarse en investigación y desarrollo! Por ejemplo, cómo lograr la expansión, ¡podemos hacer una arquitectura elástica y una implementación de clúster para K8! ¡Con todo, tenemos que hacer lo correcto y tomar precauciones antes de que sucedan! ¡vamos!

Supongo que te gusta

Origin blog.csdn.net/weixin_53742691/article/details/132177884
Recomendado
Clasificación