Red de conocimiento informático - Aprendizaje de programación - Selección de TraceId de seguimiento del enlace de registro de Dubbo

Selección de TraceId de seguimiento del enlace de registro de Dubbo

El método más común para solucionar fallas del sistema en el desarrollo es ver los registros del sistema. Sin embargo, todavía es problemático usar registros para localizar problemas en un entorno distribuido. Debe confiar en el seguimiento de enlaces completos. Encadene el ID de contexto a Together, este artículo compartirá las ideas de selección de programas para implementar el ID de seguimiento de enlaces de registro basado en el marco Spring Boot Dubbo.

La mayoría de los modelos ideológicos actuales de sistemas de seguimiento distribuido provienen del artículo Dapper de Google

La idea central del seguimiento de enlaces completos:

Este es el complemento de registro de SkyWalking, que puede generar

traceId

Configurar dependencias y agregar el siguiente contenido al archivo pom

p >

?

Configurar la plantilla de registro y cambiar el codificador del elemento Appender en el archivo logback-spring.xml al siguiente contenido

?

Sleuth es un componente de Spring Cloud que proporciona soluciones de seguimiento distribuidas para Spring Cloud y es compatible con Zipkin, HTrace y otros sistemas de seguimiento de registros

Configure las dependencias principales en pom. archivo Agregue el siguiente contenido en el archivo pom para administrar los números de versión

Configure las dependencias y agregue el siguiente contenido en el archivo pom

Adapte Dubbo, para que sleuth sea compatible con el marco de dubbo, debe agregar los dos pasos siguientes:

Primero, agregue la dependencia del complemento de dubbo

Configurar el filtro de dubbo

Configure la plantilla de registro y cambie el codificador del elemento Appender en el archivo logback-spring.xml al siguiente

<. p> ?

Utilice el mecanismo MDC de Logback para agregar el identificador traceId a la plantilla de registro y su valor es X{traceId}.

Resuelve el problema de pérdida de traceId entre subprocesos

Dado que MDC usa ThreadLocal internamente, solo es válido para el subproceso actual, subprocesos secundarios y posteriores. servicios El valor en el MDC se perderá;

Necesitamos resolver el problema de la transferencia de valor entre varios grupos de subprocesos en Spring y los subprocesos padre-hijo de métodos asincrónicos.

Solución: reescriba MDCAdapter para usar TransmittableThreadLocal de Ali para reemplazar el objeto ThreadLocal original, resolviendo así el problema de transferencia de subprocesos padre-hijo de varios grupos de subprocesos (ExecutorService / ForkJoinPool / TimerTask).

TimerTask puede resolver el problema de pasar valores entre el proceso padre y el proceso hijo.

Resuelva el problema de la pérdida de traceId entre procesos

El servicio dubbo utiliza org.apache.dubbo.rpc.Filter

?