静态调用链路发现在APM中的应用.pptx

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
静态调用链路发现在APM中的应用 技术创新,变革未来 大纲 APM发展历程 动态调用链路的模式及“优缺点” 原理 实现技术及手段 与动态调用链路(及监控)的结合 应用场景分析 APM的前世今生 APM2.0 APM1.0 APM3.0 企业级 移动互联网 互联网 物联网 人工智能 APM的核心能力:调用链路监控 服务化后系统运维的新难题 服务化拆分是系统发展的必然趋势 Google Dapper 动态调用链路监控的典型实现手段 基于调用链的全链路分析及监控 日志平台 S1-T1-T1’ S2-T2-T2’ S3-T3-T3’ …. 统计分析 中心 T T1 T5 T6 T7 T2 T3 T8 T4 缺少埋点 网络延时 缓存调用 数据库调用 调用链A 调用链B 调用链C 调用链D Total DB1 Read/m 28453 544 12821 9987 51805 write/m 4421 22 0 2233 6676 DB2 Read/m 19611 500 12821 5521 38453 write/m 43643 1022 25642 13276 83582 T Action S5 S6 Cache T1 S1 T5 T6 T7 DB T2 T3 T4 S2 S3 S4 T8 request response traceId “动态调用链路分析”的缺陷 基于埋点、或基于线程堆栈技术,只能发现实际调用的业务逻辑。大量没有埋点或 未被触发的调用逻辑则成了“失落的世界”,无法触碰。 我们看到的,只是冰山的一角 换个角度看问题的解决之道 业务 产品 架构 需求 设计 设计 软件研发是一项协作性的智力行为,所有的思考、意图、策略最终 都体现在了代码上。因此,一个系统的代码就是一本“书”,读懂 它,我们就能知道系统的“前世今生”。 问题是,我们如何“读懂”这本“书”。 入口 关系 继承 实现 代码关系 链路关系 我们的应对之道 一切源于源代码… “静态调用链路发现”的原理及实现 Eclipse JDT 引用(import) 变量 方法 继承、实现 注释 Method代码 扫描 方法内变量 其它类方法调用 本类方法调用 方法内Block(IF-END IF、FOR-END FOR、WHILE…) 调用关系 (层级) 主动调用关系 被动调用关系 过滤 利用JDT获得源代 码的基本结构 通过逐行解析获 取代码块对外部 方法的调用详情 生成方法调用 矩阵 “静态调用链路”的基本形态 正向调用关系: 实现关系 代码Block 注释自动提取 “静态调用链路”的基本形态 逆向调用关系: 实现关系 注释自动提取 多种日志收集方式并存的采集端架构 Service Method Spring Method Interceptor 调用 调用 内存消息队列 Dao plugin 调用 Dao Method 预统计 Message traceID 方法名 耗时 错误信息 u 日志文件拉取 通过log4j的MDC添加traceID Logstash增量拉取日志数据 u 批量消息推送 纯内存操作,无磁盘IO 预统计 批量发送 u 定期采集系统性能日志 CPU、磁盘、内存、SWAP、系统负载 JVM堆栈、线程、GC ① 单机每秒12W消息处理效率,资源占用不超过10% ② 内存消息队列采用快速抛弃方式,防止堆积 ③ 单线程消息处理,避免资源锁 Cache Sender 系统日志采集 监控数据接收服务端整体架构 日志消息接收器 时间片管理器 (Thread) 时间片 存 队 内 消 息 列 分析器集合 统计分析器 存储分析器 链路分析器 告警分析器 预警分析器 … … … 存储 DB DB RDB ES SLA定义 日志 内 存消 息队 列 代码仓库 扫描 可视化 调用关系矩阵 全内存异步操作(避免磁盘IO、避免资源锁冲突) 查询 “静态调用链路”与监控数据的结合 离散监控数据关系化 与普通监控数据结合(可视化) 调用关系完整化 与调用链监控数据结合(完善) 应用场景:故障定界定位 1.故障现象 2.异常分析 3.逆向排查 4.原因定位 比例异常 多处调用 定时任务 API 业务服务 挤占 应用场景:架构优化(冗余链路清理) 多余的业务逻辑链路 异常处理链路 旧版本兼容 无触发逻辑 静态调用链路的额外应用场景(工程效能) 设计稿 实际链路 设计稿校验 设计稿 接口文档 调用关系文档 •… 文档 接口文档 调用关系文档 校验 总结 1. 回顾了APM发展的3个阶段; 分析了动态调用链路的实现模式及“优缺点”; 提出了扫描代码库来获取方法级别的调用链路的思路; 介绍了基于Eclipse JDT的代码结构解析及调用关系分析 的技术及手段; 介绍了静

文档评论(0)

智慧IT + 关注
实名认证
内容提供者

微软售前技术专家持证人

生命在于奋斗,技术在于分享!

领域认证该用户于2023年09月10日上传了微软售前技术专家

1亿VIP精品文档

相关文档