We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
目前主要有两种采样形式
基于头部的采样是现在主流分布式跟踪的框架进行采样的主要模式。在otlp当中就原生实现了采样的配置,并支持了一些原生的采样策略。
主要需要后端平台侧提供配置获取接口 用户需要在应用层或者平台SDK实现以下功能
用户需要自行手动或者自动化程序去修改对应的配置文件例如yaml文件等进行相应的配置文件修改,应用需要支持以下功能
和第一类类似,主要是业务侧自己的配置服务或者其他类似服务可以进行配置的下发或者拉取
尾部采样主要是在上报之后由接收侧服务进行采样,这样做需要进行一定数据的缓存,我们可以在接收端做,也可以在链路中做,但是最主要解决的问题,是需要相同trace_id的span进行缓存主要有以下方式
The text was updated successfully, but these errors were encountered:
zzhutianyu
No branches or pull requests
为什么需要采样
合理的采样可以极大降低成本和整体系统的压力
所以我们对于span的产生需要进行合理采样
怎么进行采样
目前主要有两种采样形式
也就是在根链路的产生的时候来进行采样策略判断是否进行采样,目前主流的分布式跟踪框架都主要使用这一方式,虽然头部采样的形式能比较好降低span的产生,但是在实际生产中,大部分都是正常的链路,少部分才是异常链路,采样策略可能会将错误链路给命中,导致异常被遗漏。基于头部的采样,是需要在TRACE-SDK进行配置,它直接在应用程序生效,所以管控这个配置是有成本的。如果在微服务更个服务比较独立的时候还存在一些服务开启了采样,一些服务没有开启采样,这就会导致某几个未开启服务产生大量span对整个上下游服务进行了传播,导致后端服务压力大增。
基于尾部的采样能很好的将异常的链路进行保留,而且基于尾部的采样是允许在接收服务中的,这就意味着,应用程序只需要关注上报服务是谁,而不在需要关注额外的配置和配置变更。但是尾部采样也存在的一些问题,就是当span跨度过大时,进行的采样的时候,可能会遗漏部分长尾span.而且过大的全量流量对于上报服务来说也有着一定的压力考验。
基于头部的采样
基于头部的采样是现在主流分布式跟踪的框架进行采样的主要模式。在otlp当中就原生实现了采样的配置,并支持了一些原生的采样策略。
这些都是配置的头部采样的配置。
如果支持头部采样,我们还需要实现能够让用户进行应用运行时的一些配置的修改。
平台SDK-api配置拉取或者直接api获取配置
主要需要后端平台侧提供配置获取接口
用户需要在应用层或者平台SDK实现以下功能
用户配置文件读取
用户需要自行手动或者自动化程序去修改对应的配置文件例如yaml文件等进行相应的配置文件修改,应用需要支持以下功能
用户自定义配置服务更新
和第一类类似,主要是业务侧自己的配置服务或者其他类似服务可以进行配置的下发或者拉取
基于尾部的采样
尾部采样主要是在上报之后由接收侧服务进行采样,这样做需要进行一定数据的缓存,我们可以在接收端做,也可以在链路中做,但是最主要解决的问题,是需要相同trace_id的span进行缓存主要有以下方式
Trace-Lb
集群一致性转发
The text was updated successfully, but these errors were encountered: