ImageVerifierCode 换一换
格式:DOC , 页数:15 ,大小:5.27MB ,
资源ID:3099428      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3099428.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于AOP的调用跟踪组件实现.doc)为本站会员(hw****26)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

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

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个工作日内予以改正。