Spring Cloud Sleuth消息追踪原理
来源:互联网 发布:马良中国软件下载 编辑:程序博客网 时间:2024/06/06 04:00
发博词
是Spring Cloud Sleuth的原理不是zipkin的原理。
追踪原理
Spring Cloud Sleuth可以追踪10种类型的组件,async、Hystrix,messaging,websocket,rxjava,scheduling,web(Spring MVC Controller,Servlet),webclient(Spring RestTemplate)、Feign、Zuul。下面是常用的八种类型。
Scheduled
原理是AOP处理Scheduled注解
TraceSchedulingAspect可以带出,只要是在IOC容器中的Bean带有@Scheduled注解的方法的调用都会被sleuth处理。
Messaging
原理是基于spring messaging的ChannelInterceptor。
TraceChannelInterceptor/IntegrationTraceChannelInterceptor
MessagingSpanTextMapExtractor和MessagingSpanTextMapInjector
Hystrix
原理是使用HystrixPlugins添加trace相关的plugin,自定义了一个HystrixConcurrencyStrategy的实现SleuthHystrixConcurrencyStrategy
具体参考TraceCommand和SleuthHystrixConcurrencyStrategy
Feign
原理是实现了两个Feign Client实例,一个不带Ribbon TraceFeignClient、一个带Ribbon,TraceLoadBalancerFeignClient
TraceFeignAspect AOP里面的逻辑是,有地方想获取Client实例,就拦截返回自己封装的Client。
Async
@Async注解和ThreadPoolTaskExecutor下面的类
具体参看TraceAsyncAspect
RestTempate
原理是spring client的Interceptor机制。具体参看TraceRestTemplateInterceptor。
Zuul
原理是zuul的Filter机制,ZuulFilter
实现了三个TracePreZuulFilter、TracePostZuulFilter两个Filter。
示例代码
示例代码提供了上述八种组件的追踪示例,项目结构如下:
1. zipkin stream server
2. eureka server
3. Segment1[定时消息->消息中间件->监听消息中间件->feign+hystrix->feign+hystrix]
->Segment2[controller+async+webclient,controller2(让zuul调用)]->Segment3[zuul]
具体请查看示例代码:
github spring-cloud-sleuth-samples
注意:
zipkin stream server 的${spring.sleuth.stream.group}配置需要放到外部指定,不然不管用。
spring.kafka.consumer.group-id=xxx,内外配置都不管用
spring.cloud.stream.bindings.seluth.group=xxx ,内外配置都不管用
spring.sleuth.stream.group=xxx,在内配置不管用,在外配置管用
具体原因参看:StreamEnvironmentPostProcessor
- Spring Cloud Sleuth消息追踪原理
- Spring Cloud Sleuth消息追踪测试
- Spring Cloud学习--服务追踪(Sleuth)
- Spring Cloud Sleuth Zipkin 展示追踪数据
- Spring Cloud Sleuth 链路追踪
- Spring Cloud(六):链路追踪Sleuth与Zipkin结合
- SpringCloud: 服务链路追踪(Spring Cloud Sleuth)
- Spring Cloud Sleuth 教程
- Spring Cloud Sleuth
- Spring cloud sleuth
- Spring Cloud应用进行服务追踪分析(Zipkin和spring cloud Sleuth)
- Spring Cloud Sleuth基于消息中间件收集时自定义topic
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- Spring Cloud(七):链路追踪Sleuth-Zipkin与Mysql数据的持久化
- 史上最简单的SpringCloud教程 | 第九篇: 服务链路追踪(Spring Cloud Sleuth)
- 面试总结之select和epoll
- .Net Reactor 5脱壳教程
- 读书笔记:机器学习实战【第3章 决策树】
- java中hashcode的作用
- Ubuntu /etc目录下profile、bash.bashrc文件和用户目录下.profile、.bashrc文件的作用和区别
- Spring Cloud Sleuth消息追踪原理
- HTML 页面的前进与后退
- Android开发之如何保证Service不被杀掉
- 单点登录
- Matlab——imfilter函数
- android studio 与手机连接调试
- 由盛转衰·《论中国》·三
- 剑指offer_二叉树---之字形打印二叉树
- 【GDOI2018模拟8.12】区间第k小