[链路追踪] 老生常谈方案的选择

2022-09-17 13:07:25 +08:00
 RedBeanIce

当前公司使用的是 sofa-trace (非 boot 版本,只是 sofa-core ),mybatis 与 feign 插件等都算是 copy 的基础上修改了一下

由于领导要求我写一个工具,于是我研究了一下 sofa-trace-stratr-boot ,发现有很多缺点,例如报错没有 traceid ,线程池情况没有 traceid ,feign 调用依赖兼容问题也不小,等等

问题:
1 ,请问大家公司都是使用的什么方案,Spring-Cloud-Sleuth 及其自带的 Zinkin ?还是基于什么方案制作的,请指教
2 ,不知道有什么办法可以解决线程池没有 traceid 的问题,agent 代理所有的多线程东西嘛,

2684 次点击
所在节点    Java
9 条回复
putaozhenhaochi
2022-09-17 13:12:05 +08:00
蚂蚁开源的这些是不是他们真实环境在用的。 还是开源的是单独一套代码
swuzjb
2022-09-17 14:14:47 +08:00
@putaozhenhaochi 开源版本和内部版本不一样 真实环境的很多东西拿不出来
BBCCBB
2022-09-17 14:22:28 +08:00
pinpoint.. 代码较少, 也比较清晰? 好改一点..
4kingRAS
2022-09-17 14:27:03 +08:00
http://icyfenix.cn/distribution/observability/tracing.html

基本就两种,一种是注入字节码的,影响性能。一种是代理模式,请求的出口带上 traceid ,线程池这种地方你不应该用 trace 而应该用 metric 。
wolfie
2022-09-17 14:47:40 +08:00
我们用 skywalking 。

跨线程池 trace: https://skywalking.apache.org/docs/skywalking-java/next/en/setup/service-agent/java-agent/application-toolkit-trace-cross-thread/。

如果只是 log 的话,spring 的 ThreadPoolTaskExecutor 线程池,可以添加 TaskDecorator ,去操作 MDC 上下文。
jiajianjava
2022-09-17 17:43:55 +08:00
可以看看 TLog
collery
2022-09-17 19:23:07 +08:00
这些年的几家公司 skywalking pinpoint zipkin 都用过。 都差不多。
issakchill
2022-09-18 17:51:57 +08:00
简单使用的话 TLog 确实不错
Aresxue
2022-10-09 10:05:53 +08:00
链路用 skywalking ( pinpoint 要能接受比较高的性能损耗),线程池和父子线程的问题用 TransmittableThreadLocal + mdc 解决了,zipkin 是侵入式方案个人不是很喜欢,trace 、metric 、log 还是非侵入式的用起来更舒服,业务也没有感知。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/880789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX