Qué hacer si el mensaje del sistema de distribución es anormal

imagen

Modelo de procesamiento asincrónico

Cuando se trata de distribuidos, microservicios y otros pronombres altamente convincentes, siempre puede destacarse en la entrevista, no porque la traducción al inglés de estas palabras sea buena, sino que la Internet moderna e incluso el desarrollo a nivel empresarial sí están distribuidos. Se han logrado buenos efectos de arquitectura bajo los microservicios y otros modos. Ya se trate de microservicios o de la SOA anterior, siempre es inseparable del modelo de procesamiento asincrónico, desde el procesamiento de IO en el programa hasta el intercambio de mensajes entre sistemas, hay cifras asincrónicas en todas partes.

Cuando se trata del procesamiento asincrónico de mensajes entre sistemas, uno tiene que hablar de colas de mensajes (MQ). En la actualidad, los tipos de MQ más populares en la industria, por favor haga su propio suplemento cerebral Baidu. Pero debo recordar que MQ es solo una solución para lograr el procesamiento de datos asincrónico ¿Se puede lograr el procesamiento asincrónico sin MQ? Por supuesto, la forma más sencilla y grosera es usar el método de la base de datos. El productor del mensaje inserta directamente los datos en la base de datos y el consumidor usa el método de lectura de la base de datos para obtener los datos, por lo que MQ no significa procesamiento asincrónico.

El procesamiento de mensajes asincrónico desacopla cada sistema en la mayor medida posible y proporciona más espacio para la expansión independiente de cada sistema. Sin embargo, el procesamiento de mensajes asincrónico también enfrenta algunos desafíos, como: el rendimiento de la canalización de mensajes y la alta disponibilidad de las canalizaciones de mensajes, entre los cuales se encuentran los más Cerca de la capa empresarial puede no estar el "manejo de excepciones de datos" Básicamente, este es el final del modelo de procesamiento de datos, el final del flujo de datos, pero a menudo es una parte más importante del negocio.

Si se utiliza un mensaje asincrónico como parte de una transacción distribuida, también se diseña la retroalimentación del resultado del procesamiento del mensaje, y el coordinador distribuido determinará el resultado de la transacción de acuerdo con el éxito del resultado del mensaje.

En lo que respecta al consumidor de mensajes asincrónicos, existen las siguientes soluciones de manejo de excepciones según los diferentes escenarios comerciales

Ignorar

Esta es la más cruda y simple de todas las soluciones de procesamiento de datos de excepción: cuando ocurre una excepción, simplemente ignórela y no haga nada.

No tome ninguna medida ante las anomalías, esto puede parecer una muy mala solución a primera vista, pero en el negocio real, esto puede ser completamente aceptable. Si la pérdida causada por el error es pequeña o incluso insignificante, el costo de establecer un conjunto de mecanismos de corrección de errores es mucho mayor que ignorar la excepción En este escenario, optar por ignorarlo es a menudo una mejor solución. Y cuando el mecanismo de corrección de errores esté diseñado para requerir una intervención manual, el costo será mayor, y también introducirá la posibilidad de afectar a otras empresas. Lo que es aún más aterrador es que si hay un problema con el mecanismo de corrección de errores en sí, el costo será aún mayor ... .

Tomemos un ejemplo muy simple: al igual que algunas operaciones estadísticas en los registros de inicio de sesión, si hay una anomalía en los datos procesados ​​por una determinada persona, a menudo optarán por ignorarla. Debido a que la propia empresa estadística tiene un mecanismo de tolerancia a fallos de datos, no hay diferencia entre 100.000 y 100001 en términos de requisitos estadísticos.

Rever

Cuando la solución ignorada directamente no sea factible, es posible que deba volver a intentar la operación. Si hay una tasa de éxito lo suficientemente alta en el caso de volver a intentarlo, volver a intentarlo es una opción razonable. Aunque volver a intentarlo puede corregir errores indirectos, no puede hacer nada con los datos que violan las reglas comerciales y los modelos de datos.

En el caso más ideal, si la operación de reintento es idempotente, ¿qué es el rendimiento idempotente (vaya a Baidu usted mismo)? Las cosas serán mucho más sencillas y las operaciones de reintento se pueden implementar con confianza. Sin embargo, si la operación de reintento no se ha realizado correctamente después de un período de tiempo o una cierta cantidad de veces, en la mayoría de los casos, es posible que se requiera una cierta estrategia de seguimiento, como por ejemplo: si aún falla después de reintentar 10 veces, abandone.

maquillaje

Esta estrategia se usa a menudo en transacciones distribuidas, no tanto en compensación, ya que es una operación de reversión. Especialmente en el escenario donde el programa recibe datos y tendrá una serie de operaciones, la operación de compensación es similar al concepto de reversión de transacciones, permitiendo que el sistema vuelva al estado anterior a la serie de operaciones. Este mecanismo de compensación es muy adecuado para escenarios con requisitos de "transacción".

¿Cuáles son los escenarios de demanda de "transacciones" en su negocio? Bienvenidos a reflexionar en el mensaje, y permítanme mencionar un poco, la actividad semanal de enviar libros de arquitectura aún continúa, bienvenidos a prestar atención

imagen

Artículos más interesantes

imagen

Supongo que te gusta

Origin blog.51cto.com/zhanlang/2532766
Recomendado
Clasificación