#分布式
MDC 是什么?
其实就是 Slf4j 提供的一种便于对用户请求的流程进行归类标记的机制。
因为在大型的分布式系统环境下,一次用户请求的系统调用链可能很长,会涉及到多个上下游系统,那你怎么知道在不同的系统下的日志是属于某一次请求而产生的呢?通过 MDC 就可以做到。
出现的背景?
如今,在 Java 开发中,日志的打印输出是必不可少的,Slf4j + LogBack 的组合是最通用的方式。
关于 Slf4j 的介绍,请参考大神博客
有了日志之后,我们就可以追踪各种线上问题。但是,在分布式系统中,各种无关日志穿行其中,导致我们可能无法直接定位整个操作流程。
因此,我们可能需要对一个用户的操作流程进行归类标记,比如使用线程+时间戳,或者用户身份标识等;
如此,我们可以从大量日志信息中 grep 出某个用户的操作流程,或者某个时间的流转记录。