1、全链路跟踪系统设计与实现天机阁目录1. 背景介绍2. 功能介绍3. 总体架构及实现 采集层 计算层 存储层 应用层4. 总结背景分布式系统给开发带来四大挑战故障定位难链路梳理难容量评估难性能分析难业界解决方案链路跟踪系统链路跟踪系统主要处理以下三种数据:1. Tracing数据:按请求的纬度把rpc调用栈跟踪起来。MetricsTrace数据累加请求相关2. Metric数据:也叫模调数据, 特点是可累加。可以统计某个下钻场景的qps、成功率、耗时区间、返回码。3. 日志数据:普通的日志数据。日志数据离散事件业界相关产品Dapper鹰眼2016年,OpenTracing2013,zipkin2
2、012,ZipKin加入 CNCF 基金会阿里鹰眼2010,2016年开源JaegerGoogle2005,Google部署论文DapperskywalkingDapper天机阁主要功能介绍实时告警发现问题容量管理业务整体视图 容量预估调用链调用树业务拓扑图系统优化故障定位功能1告警收敛功能2:调用链功能3调用树功能4:业务拓扑图功能5容量评估链路跟踪总体架构集群状况DB中控服务中控管理实时告警metric s查询Metr ics(habo )心跳/控制统计信息Traceind ex(ES)调用链调用树日志共享内存tjg_apitjg_agen tflin k消息通道指标数据tr ace(Hb
3、ase)log(ES)log查询采集计算存储展示采集层-原理生成traceidCGIsvr1span_ctxspan_ctxsvr2用户请求traceidtraceidtraceidtraceidspanspanspanspanCGIsvr1svr2trace:代表一次完整的请求链路过程span_context:跨服务传输的上下文信息,包括trace_id,span_id,parent_id和采样flag等信息span:埋点上报的结构体,含有trace_id、span_id、caller、callee、func_name,耗时等信息,用于识别一次RPC采集层-Trace上报过程高可用低侵入低开
4、销1 api、 简单可靠2 agent、 自动保活34ack、消息通道 机制+、失败落盘 异步重试5、共享内存+socket采集层-采样策略设计面临的问题:如何用最少的上报展示最多的信息全量上报概率采样动态采样染色上报服务性能影响大,存储成本高怎么办?流量大的服务上报多,流量小的服务难以命中怎么办?针对不同接口,每秒上报数:未染色的请求出错了,且没被采样到怎么办?1,按100%采样率1=且10,不采样重要用户或行为未被采样到怎么办?逆向生成采集层-逆向生成退化成了A-E-F的直线采样后上报量:亿级/分=百万级/分A雪崩如何解决?对错误码再次动态采样BECD计算层集群状况DB中控服务中控管理实时
5、告警metric s查询Metr ics(habo )心跳/控制统计信息Traceind ex(ES)调用链调用树日志共享内存tjg_apitjg_agen tflin k消息通道指标数据tr ace(Hbase)log(ES)log查询采集计算存储展示计算层所处位置及功能1、批量消费队列中的数据。、分2 APPID做统计和监控。中控服务3、异常数据过滤。4、聚合调用链,提高写性能。5、实时生成调用树。Tjg_Agent0消消消计计计Kafka集群1Kafka集群2Tjg_Agent1Tjg_Agent2Tjg_AgentNflink处理集群+条数 时间窗口消费和计算分离哈希汇聚中控服务根据集
6、群复杂调度agent批量写入计算层实时生成调用树span_ctxspan_ctx用户请求:SvrA:ifc1SvrE:ifc3trace_idtrace_idtrace_idtrace_idtra链路生成:Span1cSpan1s Span1.1cSpan0S目的:调用树+边化成依赖Span拆解成顶点 边SvrA:ifc1SvrA:ifc1SvrE:ifc3SvrA:ifc1_SvrE:ifc3SvrE:ifc3_SvrF:ifc2SvrF:ifc2天机阁异地部署上海服务监控服务深圳服务管理端(深圳)管理端SvrSvr SvrSvr Tjg_apiTjg_apiTjg_apiTjg_api特征
7、监控队列监控延迟监控中控服务Tjg_AgentTjg_Agent上海天机阁集群Ckafka集群离线集群深圳天机阁集群Ckafka集群告警收敛DaemonFlink集群Flink集群垮集群调用合成ESHbaseESHbase计算层解决异地部署问题深圳地区问题:SPAN分布在不同地区,没办法实时生成调用树。SvrA : ifc1SvrE : ifc3SvrG: ifc4办法:SvrF: ifc21、找出关键traceID。上海地区2、关键traceID进行离线计算。SvrH: ifc5SvrI: ifc6深圳地区计算层-高效实时处理Flink集群主要策略:trace_idESSpan1c 实时计算
8、方面ckafka 批量拉取,批量发送 有状态路由汇聚,合并写hbaseHash(traceId.sub)Hbasemapreduce3000个 或 2s处理span 23ms140+ms汇聚span0.22ms80ms处理span汇总请求批量发送: ES索引方面策略 舍弃幂等,自动生成id 禁止all、text索引建立 traceId 不建立索引 5s 落盘发送存储发送存储trace_id1trace_id1Span1cSpan2c有状态路由汇聚索引减少寻址:1c2ccctrace_id1Span1s存储和应用层集群状况DB中控服务中控管理实时告警metric s查询Metr ics(habo
9、 )心跳/控制统计信息Traceind ex(ES)调用链调用树日志共享tjg_apitjg_agen tflin k消息通道内存指标数据tr ace(Hbase)log(ES)log查询采集计算存储展示应用层绘制调用链调用链绘制存在时间漂移问题应用层调用链绘制之时间线修复目标是保证每个span的cs,sr,ss,cr四个时间点是严格顺序的,也就是保证:t1t2t3t4修复原则两条:基准原则:同一机器上的时间线是准确的,不应更改,即必有t1t4,t2t2.1t2.2t3;传递原则:时间戳修复应以机器为单位,即若发现t2超前t1,应整体调整svr1的所有时间戳,则偏移从父span(t2、t3所在
10、span)传递到子span(t2.1、t2.2所在span)修复公式:网络耗时nc = (t4-t1)-(t3-t2)/2t2 = t1 + nc 偏移值传递t = t2-t2t2.1= t2.1+tt2.2= t2.2+t时间线修正后的效果严格按照真实调用顺序展示同步/并发显而易见拓扑图的美学标准层级分明, 方向一致避免交叉和急弯保持线条最短主张对称和平衡拓扑图绘制算法用网络单纯形算法找到最佳等等级内局部换位,减少交叉利用排序辅助图找得到最佳绘制连线拓扑图绘制效果容量评估需要的数据机器部署数据入口扩容评估调用关系链压测数据metrics统计数据解决方案调用链路数据统计,得到关联服务、流量传导
11、系数根据入口请求峰值结合压测结果生成扩容结果34容量评估方法2w+1w0.51.9w+0.5w0.51.9w+0.5w1.04w+2wServer1_ifc1Server2_ifc1Server3_ifc1Server4_ifc1Server5_ifc1SSeerrvveerr77_iiffcc11SSeerrvveerr88_iiffcc111.9w+0.5w0.5Server6_ifc135监控1 Agent2 Ckafka关键节点监控 Agent监控:单机上报量 Appid上报量 Ckafka监控磁盘、cpu消费堆积情况 Flink监控3Flink访问存储网络情况 key分 汇总情况合并率等上报延迟情况54HbaseES Hbase监控 ES监控-降低冗余部署成本-降低系统维护成本价值-链路跟踪是刚需
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。