分布式追踪系统的底层原理与挑战应对
1. 跨区域部署的高效解决方案
在分布式追踪系统中,将所有追踪后端组件部署在一个区域并进行复制以确保弹性,虽简单但因网络带宽成本高且效率低。高效的做法是仅对跨区域的追踪产生跨区域带宽成本,其他追踪本地处理。
捕获源区域
- 原理 :捕获追踪开始的区域名称(
origin_zone),并将其作为追踪上下文的一部分在调用图中传播,生成的跨度(span)中始终记录该值。收集器接收跨度后,检查origin_zone字段,通过静态映射判断是本地处理(保存到存储或发送到本地Kafka主题)还是转发到其他区域的收集器。 - 示例 :请求起源于区域X,部分在区域Y执行,按此算法追踪仅在区域X处理。若各区域都运行数据挖掘和聚合作业,希望追踪在X和Y区域都处理,这可通过后处理实现。当追踪完成触发声明追踪结束时,检查追踪中的所有跨度,若有跨度的发出区域不是X,就将该追踪复制到该区域。
- 缺点 :一是请求大小略有增加,因为要在调用图中传播额外值;二是需要有前瞻性地实现能捕获和传播区域信息的追踪库。在已部署的追踪基础设施中启用此方法,需升级许多应用中的追踪库,这可能耗时较长。不过记录跨度实际发出的区域相对容易,可在代理或收集器中丰富跨度信息来实现。
graph LR
A[请求开始] --> B{记录origin_zone}
超级会员免费看
订阅专栏 解锁全文
6万+

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



