分布式追踪:代码执行追踪
1. 代码重构与上下文管理
再次运行程序,跨度(spans)将像之前一样被打印出来。这次重构后,输出不会改变,但代码看起来更简洁。与之前的示例一样,上下文管理由程序自动处理,我们无需担心与上下文 API 交互。使用装饰器让代码阅读更简单,新接触代码的人在为应用添加代码时,也能轻松按照相同模式实现新方法。
2. 跨度处理器
到目前为止,代码中使用的跨度处理器是 SimpleSpanProcessor 。它在跨度结束时立即进行处理和导出,这意味着代码中添加的每个跨度都会给应用带来延迟,这通常不是我们想要的。不过,在某些情况下,这可能是正确的选择,例如无法保证主线程之外的其他线程在程序中断前完成。
一般建议跨度处理与主线程异步进行, BatchSpanProcessor 就是 SimpleSpanProcessor 的一个替代方案。以下是两者的对比:
| 处理器类型 | 处理方式 | 对应用的影响 |
| ---- | ---- | ---- |
| SimpleSpanProcessor | 跨度结束时立即处理和导出 | 每个跨度都会增加应用延迟 |
| BatchSpanProcessor | 启动单独线程按计划或队列达到一定数量时导出跨度 | 避免给正常应用代码路径增加不必要的延迟 |
2.1 使用 BatchSpanProcessor
以下是使用 BatchSpanProcessor 重构 shopper.py <
超级会员免费看
订阅专栏 解锁全文

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



