基于AOP的调用跟踪组件实现.doc

上传人:hw****26 文档编号:3099428 上传时间:2019-05-21 格式:DOC 页数:15 大小:5.27MB
下载 相关 举报
基于AOP的调用跟踪组件实现.doc_第1页
第1页 / 共15页
基于AOP的调用跟踪组件实现.doc_第2页
第2页 / 共15页
基于AOP的调用跟踪组件实现.doc_第3页
第3页 / 共15页
基于AOP的调用跟踪组件实现.doc_第4页
第4页 / 共15页
基于AOP的调用跟踪组件实现.doc_第5页
第5页 / 共15页
点击查看更多>>
资源描述

1、Copyright 2014 福富软件 版权所有基于 AOP 的调用跟踪组件实现审 核: 日 期:批 准: 日 期:版 本 号 A-0密 级 内部基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 2 of 15修改履历版本号 日期 作者 修订要点A-0 2014-11-20 陈知 ,饶庆伟 新作成基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 3 of 15目录1 前言 .51.1 背景 .52 AOP 介绍 .62.1 应用

2、范围 .62.2 实现方式及优缺点 .62.3 基本概念 .63 调用轨迹跟踪实现 .73.1 调用轨迹组件项目命名 .73.2 CRM 技术现状 .73.3 应用需求 .73.4 解决方案 .83.5 拓扑结构 .83.6 技术方案及埋点 .93.7 采集数据定义 .93.8 组件结构 .103.8.1 数据采集组件 .103.8.2 调用轨迹服务组件 .113.9 环绕增强实现 .123.10 异常增强实现 .123.11 CRM 切入点 .123.11.1 业务逻辑切入点 .123.11.2 异常切入点 .133.11.3 规则切入点 .133.12 调用轨迹注入 .133.13 轨迹数

3、据查询 .144 使用案例 .14基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 4 of 155 优缺点 .146 非功能性要求 .147 当前进展 .148 后续计划 .14基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 5 of 151 前言1.1 背景多样的需求,复杂的业务处理,庞大的数据关系,使得现有的 CRM 系代码快速的增长,而开发和维护难度不断的增大,这些困难主要体现在业务流程复杂,业务代码分散,数据关系的多

4、样上。当业务和代码异常时,问题定位困难,CRM 的特点,往往一次业务过程的数据造成不可逆的数据还原,研发人员大部分只能通过阅读代码,全程业务单步跟踪来查找问题,效率低下。若问题的描述能够获取到业务执行的过程及过程中使用的参数数据,那么可以根据这些信息,能够快速的定位到问题的代码,通过相关的开发工具,比如单元测试方式,能够快速的解决问题,很大的提高了开发的效率。当性能问题出现时,一次业务执行的过程,涉及到大量的 API 函数调用,要怎样才能从大量的 API 中定位到造成了整个业务性能执行效率问题函数,传统的方式是通过阅读和调试代码,往往是定位不到问题,特别是大业务量,大并发的时候。当系统维护人员

5、与研发人员之间的问题沟通时,往往由于双方信息的不对称,造成理解偏差,误解,解决问题费时费力。当问题发生时能够提供有力的数据,减少了沟通的障碍,快速解决问题。在分布式系统下,不断增加的业务节点,如何有效的去跟踪各个业务节点之间的执行关系和执行效率。上述的种种问题依靠传统的开发方式,要想通过阅读代码,调试代码来解决问题,越来越困难。在这个问题背景下,需求一套工具来跟踪系统内容的运行情况,各个 API 执行的情况,使用的参数,执行的效率,在出现异常情况时候,能够捕获异常时点的现场信息,并能够快速告警。在对外围系统交互过程,需要了解各个交互系统之间的调用关系,各个系统间执行的过程,及执行的效率,当出现

6、问题,可以通过这些跟踪的数据快速分析和定位问题。在现有行业应用环境下,已知 google,阿里都有自己的解决方案,goolge的 dapper 技术,阿里的鹰眼应用都取到比较好的效果,应用技术比较成熟,在基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 6 of 15这些背景下,结合了 CRM 现有的系统特点,提出了开发一套适合 CRM 系统的调用跟踪应用,即基于 AOP 的调用跟踪组件应用。2 AOP 介绍AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编

7、译方式和运行期动态代理方式实现程序功能的统一维护的一种技术。AOP也是 Action Oriented Programming 的缩写,意为:面向切面编程,是函数式编程的一种衍生范型。2.1 应用范围面向将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,将它们独立到非业务逻辑的方法中,使得业务逻辑各部分之间的耦合度降低。2.2 实现方式及优缺点机制 原理 优缺点 案例静态织入在编译期,切面直接以字节码的形式织入到目标字节码文件中。优点:对系统加载时无性能影响。缺点:灵活性不够。Lombok动态代理在运行期,动态构建目标类的子类,将切面逻辑加

8、入到代理类中。优点:能够获取到运行时类的信息。缺点:影响系统加载性能。SpringJVM 方式在类加载前,通过向目标字节码注入相关的实现代码。优点:JVM 级 ,影响 JVM范围的所有应用。缺点:粒度大,不能获取类运行信息。基于应用容器的组件方式实现。2.3 基本概念 Joinpoint:连接点,也可以称为拦截点,通常用来描述每个执行方法前,后,抛出异常时的位置。基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 7 of 15 Pointcut:切面,Joinpoint 的表达式,表示拦截哪些方法。一个 Poi

9、ntcut 对应多个 Joinpoint。 Advice: 增强,表达的是要切入的逻辑,主要以下几种方式:1. Before Advice 在方法前切入。2. After Advice 在方法后切入,抛出异常时也会切入。3. After Returning Advice 在方法返回后切入,抛出异常则不会切入。4. After Throwing Advice 在方法抛出异常时切入。5. Around Advice 在方法执行前后切入,可以中断或忽略原有流程的执行。各个概念之间的关系 3 调用轨迹跟踪实现3.1 调用轨迹组件项目命名参考阿里的命名,将调用轨迹组件项目命名为“鹰眼” 。3.2 CRM

10、 技术现状以 ZK+Spring+Hiberate 组成的 UI 层,业务逻辑层,数据访问存储的三层基本的技术架构,在核心的业务逻辑层,绝大部分采用了面向接口的开发方式,符合 JVM 在动态代理上要求以接口实现方式的要求,同时也适用于通过字节码方式动态注入的方式,减少了不必要的兼容性问题。3.3 应用需求1. 性能跟踪及分析基于集团要求的 5 分钟竣工率等性能指标考核,需要采集 API 执行的耗时等效率信息,便于定位在哪个 API,哪个环节出现执行异常。2. 运行时调用参数CRM 的代码量大,业务多样,数据关系复杂,且业务执行后很难精确到定位到具体的数据和具体 API 函数的执行情况,特别在定

11、位问题的时候,往往需要了解在问题发生时点的数据状况。3. 异常信息捕获CRM 后台大量运行程序,如工作流,轮询,接口交互等业务过程,当发基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 8 of 15生异常时,很难及时的发现问题。其次在异常发生时,需要快速的定位到异常点,特别在后台运行程序,往往无法及时和直接获取异常的信息,当要定位时,需要在日志文件中不断搜索异常信息,耗时费力。3.4 解决方案1. 实时采集 API 信息。2. 通过注入异常轨迹 ID 来快速定位问题,异常注入轨迹 ID 后,可以通过界面,交互

12、的外围系统等方式获取轨迹 ID。3. 采集运行时调用参数,输出参数,异常堆栈等信息,通过单元测试等软件方法及工具调试问题信息,同时可以通过调用参数,输入参数等信息进行增值的业务统计信息。3.5 拓扑结构调用跟踪组件以中间件方式运行,不依赖于各个宿主系统,主要有一下节点构成。deployment 调 用 轨 迹 部 署 图 -2服 务 控 制 中 心调 用 日 志 服 务Crm:服 务 组 件:服 务 组 件消 息 中 心Apache ActiveMQ调 用 跟 踪 系 统调 用 跟 踪 服 务心 跳 /负 载消 费注 册 /监 控 (心 跳 )调 用 /生 产 者心 跳 /负 载构成说明:应用

13、节点 功能描述 备注基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Copyright 2014 福富软件 版权所有 Page 9 of 15服务控制中心 负责监控 AOP 组件的运行信息,及远程控制 AOP 组件的信息。CRM 系统 宿主系统消息中心 采集调用跟踪轨迹信息调用日志服务 调用跟踪信息落档,实时监控及统计业务。3.6 技术方案及埋点1. 以 Spring 的 IOC 容器为基础的集成方式为主。2. 应用层面,基于 Schema 配置的 Aop 实现,通过 SPIRNG 的 AOP 实现动态代理实现 API 跟踪。用于采集 API 实时运行信息。环绕增强方

14、式,切入点为 API 执行前,后及异常抛出。3. Web 应用容器层面,比如 WebLogic 容器组件注入 JVM 层面。用于采集基于服务调用的信息,主要是性能信息,比如服务调用的耗时等。3.7 采集数据定义字段 功能 说明ID 标识唯一记录TRACK_ID UUIDSPAN_ID 从 1 开始累加,展现是从小到大,表示执行的过程TRACK_HOST 运行主机计算机名TRACK_IP 运行组件 IP 或者 urlTRACK_PORT 运行主机端口号,目前未有使用场景,也获取不到TRACK_FILE 调用文件及路径基于 AOP 的调用跟踪组件实现(讨论稿) 文件编号:SF-100-078Cop

15、yright 2014 福富软件 版权所有 Page 10 of 15SERVICE_NAME 完整的类名,包含包路径IN_PARAM 入参param1|param2.OUT_PARAM 出参ERR_MSG 异常信息STACK_TRACE 异常堆信息JOIN_POINT最后执行的接入点状态,调用前(before),调用后(after),异常(exception)START_TIME 调用起始时间END_TIME 调用结束时间ELAPSED_TIME 总耗时,为 0 时通常表示执行异常TRACK_VER 协议版本RESERVE1 预留字段RESERVE2 预留字段RESERVE3 预留字段3.8 组件结构3.8.1 数据采集组件嵌入到宿主系统中,入 CRM 中,通过 Schem 配置方式。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 精品笔记

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。