sleuth 和底层brave 都有很多instrument,根据协议不同instrument实现方式也不同。
对于Feign ,在consumer及producer实现也不一样,在consumer端,依托feign client 实现,主要是在feign header加入trace相关信息。
在consumer 端,如果失败,会自动产生一个fallback Span,无论是否使用ribbon,最后调用feign进行组装、发送的代码在TracingFeignClient类。
在producer 端,是按servlet来处理,依托brave servlet tracing filter来实现,sleuth基本没有什么代码。