分布式追踪性能优化全解析
1. 利用跨度表示并发工作
使用跨度(span)来表示并发工作的约定有助于性能分析。当两个或多个线程(或工作进程等)并发处理时,为每个线程使用一个独立于其父跨度的单独跨度。例如,若一个线程进行异步调用后继续处理,应创建两个子跨度。这样做便于理解原始线程是否会在异步调用时阻塞,也能让自动跟踪分析更好地了解运行情况。
2. 提升性能的方法
2.1 单个追踪分析
分布式追踪最基本的应用是分析单个请求,寻找意外行为、常见反模式或改进机会。在优化单个追踪时,可考虑以下问题:
- 是否有关键路径上的操作可以优化?
- 关键路径上的查询能否缓存?
- 请求提供的功能能否重构,将昂贵操作与常用操作分离?
在优化追踪时,还需考虑跨度的相对长度。例如,在图 8 - 2 中,若 D 的长度超过 E 的两倍,对 D 进行 20% 的改进所带来的收益将超过对 E 进行 20% 改进的两倍。应将优化工作重点放在构成关键路径最大部分的跨度上。
以下通过具体例子说明重构对性能的影响。假设图 8 - 2 中,跨度 B 代表身份验证操作,跨度 C 代表计算用户自上次登录以来的变化,跨度 E 代表查找用户的显示偏好。最初,这些操作可能捆绑在一起以减少网络开销,但现在该端点常被用于仅执行显示偏好的查找。此时,将端点重构为两部分:一部分确定变化,另一部分返回偏好,可更快地返回这些偏好。
另外,图 8 - 5 展示了一个常见问题。左侧的追踪显示一个根跨度有六个子跨度(标记为 A 到 F),这些跨度代表对其他服务的顺序调用,可能包括对一个或多个远程数据库的查询。通常,这些调用相互独立
超级会员免费看
订阅专栏 解锁全文
1078

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



