zipkin是否适合跟踪方法调用?

时间:2013-06-07 10:17:47

标签: java trace zipkin

我读过zipkin,但据我了解,zipkin适用于跟踪网络请求和时间的历史记录(通过Finagle)。但是,我可以使用zipkin来跟踪java方法调用的时间和位置吗?例如,我想跟踪foobar()执行所需的时间,以及foobar()内部调用的其他方法及其执行时间等等。

3 个答案:

答案 0 :(得分:1)

这不合适,Zipkin是关于在分布式系统中进行跟踪的。我想你会想要像Visual VM这样的分析器,免费并包含在JDK中,或YourKit。其他分析器可用。

答案 1 :(得分:1)

不,根本不适合。为什么?因为Zipkin的架构有多层间接:你必须将你的跨度发送到收集器服务,即使收集器在你自己的机器上运行也会有巨大的开销 - 想象你是从欧洲某个地方的两个邻近城市旅行建议你不要直接从A到B,从A飞到美国纽约,然后回到B.这简直太荒谬了。

至于可能满足您需求的工具:@Jonathan提到的VisualVM和Yourkit适合查看程序中的平均情况 - 如果您需要仔细检查程序中的低级路径InTrace是一个更好的选择。

答案 2 :(得分:1)

Zipkin最重要的是为复杂的分布式服务网络(又称微服务架构)提供可观察性。它并不打算仅支持单个应用程序。

因此,分析器通常是更好的方法,特别是如果您有一个紧急问题需要诊断。

尽管如此,大多数剖析器只会提供Zipkin持续存在的实时数据,允许对大型数据集进行分析。

如果Zipkin已经在您的堆栈中,使用特定方法调用作为子跨度来丰富更高级别的Zipkin跨度(即完整的REST请求)并不是一个坏主意,特别是那些执行I / O的方法。这样,您可以在Zipkin中向下钻取,以更快地确定瓶颈。

否则,您必须首先查看Zipkin范围以获取高级别瓶颈,然后分别查看其他日志或运行分析器,这是低效的。

**如果它已经在您的堆栈中**