分布式追踪性能优化全解析
1. 利用跨度表示并发工作
在分布式系统中,使用跨度(span)来表示并发工作的约定能带来很大帮助。当有两个或更多线程(或工作进程等)并发处理时,为每个线程使用独立于其父跨度的单独跨度。例如,若一个线程发起异步调用后继续处理,就应创建两个子跨度。这样做便于理解原始线程是否会在异步调用时阻塞,也有助于自动追踪分析了解系统运行情况。
2. 提升性能的途径
在分布式追踪中,我们的重点是将性能问题定位到分布式系统的单个组件。假设你熟悉常规的软件优化方法,能使用调试器、性能分析器等工具优化单个函数、类或模块。而这里介绍的方法旨在帮助你找出需要优化的函数、类或模块。
2.1 单个追踪分析
分布式追踪最基本的用途是分析单个请求,查找意外行为、常见反模式或其他改进机会。优化单个追踪时,可问以下问题:
- 是否有关键路径上的操作可以优化?
- 关键路径上的查询能否缓存?
- 请求提供的功能能否重构,将昂贵操作与常用操作分离?
在优化追踪时,还需考虑跨度的相对长度。例如在某个追踪中,若 D 跨度的长度是 E 跨度的两倍多,那么对 D 进行 20% 的优化所带来的收益将超过对 E 进行 20% 优化的两倍。应将优化工作集中在构成关键路径最大部分的跨度上。
另外,理解重构对性能的影响也很重要。比如在某个追踪中,跨度 B 代表认证操作,跨度 C 代表计算用户上次登录后发生的变化,跨度 E 代表查找用户显示偏好。若最初这些操作捆绑在一起,但现在端点常被用于仅查找显示偏好,那么将端点重构为两部分(一部分确定变化,一部分返回偏好)可更快返回结果。有时,“优化” 就是减少
超级会员免费看
订阅专栏 解锁全文
57

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



