ZipKin是一个链路追踪服务,可以帮助我们追踪、分析多个服务之间调用延迟情况,可到官网了解更多情况 https://zipkin.io/,本文主要通过源码来探析一下ZipKin如何进行抽样统计。
在zipkin客户端采样率是通过Sampler类来完全控制,代码如下,
package com.github.kristofa.brave;
public abstract class Sampler {
public static final Sampler ALWAYS_SAMPLE = new Sampler() {
@Override public boolean isSampled(long traceId) {
return true;
}
@Override public String toString() {
return "AlwaysSample";
}
};
public static final Sampler NEVER_SAMPLE = new Sampler() {
@Override public boolean isSampled(long traceId) {
return false;
}
@Override public String toString() {
return "NeverSample";
}
};
public abstract boolean is

本文深入探讨ZipKin的采样策略,重点关注 BoundarySampler 和 CountingSampler 的实现。BoundarySampler适用于高流量场景,通过取余判断采样,存在浮动误差;CountingSampler适合低流量,准确但不支持大流量。文章通过源码分析这两种策略的工作原理,建议在实际应用中考虑使用BoundarySampler以应对潜在的流量增长。
最低0.47元/天 解锁文章
8523

被折叠的 条评论
为什么被折叠?



