分布式请求跟踪系统设计

分布式请求跟踪系统设计,第1张

分布式请求跟踪系统设计

设计需求

* 基于日志的分布式请求跟踪系统

        业务侵入小

        将每个系统分散的日志聚合起来,并进行海量日志分析,从而生成有价值的数据

* 核心 -- 调用

        每次请求都生产一个全局唯一的ID(TraceId),通过它讲不同系统生成的日志串在一起,重组成调用链,使其价值达到1+1>2的效果

        开发人员通过分布式请求跟踪链排查问题

        也可以对多个请求统计和分析

设计目标

* 低侵入性 - 作为非业务组件,尽可能少侵入或者无侵入其它业务系统,对于使用方透明,减少业务开发人员的负担

* 灵活的应用策略 - 使用方可以根据需求,自定义收集数据的范围和粒度(开关和采样)

* 时效性 - 从数据的产生和收集,到数据的分析与处理,再到最终的页面展现,尽可能快

* 决策支持 - 分析数据可以在决策支持层面发挥作用

* 可视化 - 使用场景友好的用户视角,丰富的展现方式,可读性高

使用场景

场景一:调用链跟踪 - 一次请求调用过程的展示,以图形化的方式梳理出各个个微服端集群之间的调用关系,并记录整个调用过程的耗时情况,协助开发人员分析整个系统的瓶颈点和热点,从未优化系统。

场景二:调用链路径分析  -  对多条调用链进行分析,整理出集群间的调用关系,计算出整个调用链路链路的关键节点、直接依赖、简介依赖强度等。

场景三:调用来源分析  -  针对某一特定集群,整理出其它集群对其的调用情况,防止错误调用情况的发生

场景四:调用量统计  -  实时统计各个集群的调用次数、QPS、平均耗时、最大耗时等信息,开发人员可以根据相关信息进行容量规划

场景五:监控请求调用量  -  开发人员通过自定义的正则表达式,对匹配该正则URL的请求进行实时监控,包括调用次数、QPS、平均耗时、最大耗时、最小耗时等等

 

 开源选型

 * Apache SkyWalking:        https://github.com/apache/skywalking

* Pinpoint :         https://github.com/pinpoint-apm/pinpoint

Introduction - Pinpoint

 

调用追踪 - 采样

1. Dapper表明:在高QPS时,千分之一的抽样率足以发现问题,放在网关层进行采样

2. 采样时机: 无Trace上下文的最早结点

3. 时机采样率: 生产环境 1%,测试环境 100% 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5696054.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存