CN103927244A - 一种基于动态代理实现的插件调度过程监控的方法 - Google Patents
一种基于动态代理实现的插件调度过程监控的方法 Download PDFInfo
- Publication number
- CN103927244A CN103927244A CN201410150255.6A CN201410150255A CN103927244A CN 103927244 A CN103927244 A CN 103927244A CN 201410150255 A CN201410150255 A CN 201410150255A CN 103927244 A CN103927244 A CN 103927244A
- Authority
- CN
- China
- Prior art keywords
- module
- monitoring
- plug
- dynamic proxy
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本发明提供一种基于动态代理实现的插件调度过程监控的方法,该监控方法中所有被监控的系统都是基于插件式开发的。监控逻辑的实现包括接口插件模块、创建实现对象模块、策略模块、监控逻辑模块、数据存储模块和返回实现对象模块。所述接口插件模块根据接口类名进入所述创建实现对象模块,实现对象使用所述策略模块分析判断是否进行监控策略,当应用系统设置为监控的时候植入所述监控逻辑模块,对于所述监控逻辑模块在运行过程中产生的数据通过所述数据存储模块进行非结构化的数据存储,同时进入所述返回实现对象模块;如果应用系统设置为不监控,则直接进入所述返回实现对象模块。该方法使用动态代理方式实现了对系统运行逻辑的插件调用关系、错误信息的统一监控。
Description
技术领域
本发明涉及插件监控技术领域,尤其涉及一种基于动态代理实现的插件调度过程监控的方法。
背景技术
在目前的Java开发包中包含了对动态代理的支持,动态代理是在程序运行时,运用反射机制动态创建而成的,其配置文件灵活,但是其只支持对接口的实现。
普通的系统在编译后就不允许进行更改或扩充,如果要进行更改或扩充,就必须要修改逻辑代码后重新编译发布,这样不仅使用不便,还会浪费大量的人力、物力,合理使用插件就可以解决上述的问题。插件是根据系统预定的接口编写的扩展功能模块,基本目的是实现宿主与组件的隔离,核心是作为预定的接口,以便宿主使用及挂载插件。使用插件使系统的扩展性大大地加强了,在扩充系统时就不必重新编译,只要增加或修改插件便可,消耗系统资源少,节约人力资源,重复利用率高。
插件的动态加载方法是指按照OSGi标准,通过JAVA虚拟机技术,实现插件的检测及加载到JAVA虚拟机中,并暴露相应的接口或方法,使对应的主程序或者网页能够调用到控件程序的接口或者方法。由于市场的需求,由动态代理实现的插件系统已经广泛地应用于各个领域,如果没有对插件进行监控,就不能很好地对系统的进行管理,因而为了更好地利用数据,很多情况都需要对实际的业务系统进行监控和管理,在保证数据安全的前提下,针对方法层面的调度监控,任何一个插件的方法执行过程都可以在不修改逻辑代码的前提下,实现对实际业务系统运行逻辑的调用关系、错误信息进行统一监控,因而要有一套完备的监控方法进行统一监控,才能对性能分析做到真正意义上的有据可依。
发明内容
本发明要解决的技术问题,在于提供一种基于动态代理实现的插件调度过程监控的方法。
本发明是这样实现的:一种基于动态代理实现的插件调度过程监控的方法,该监控方法中的所有被监控的系统都是基于插件式开发的,监控逻辑的实现包括接口插件模块、创建实现对象模块、策略模块、监控逻辑模块、数据存储模块和返回实现对象模块;所述接口插件模块根据接口类名称进入所述创建实现对象模块,实现对象使用所述策略模块分析判断是否进行监控策略,当应用系统设置为监控的时候植入所述监控逻辑模块,对于所述监控逻辑模块在运行过程中产生的数据通过所述数据存储模块进行非结构化的数据格式的存储,同时进入所述返回实现对象模块;如果应用系统设置为不监控,则直接进入所述返回实现对象模块;其特征在于:所述监控逻辑模块,使用动态代理方式植入监控逻辑,实现对数据的监控。
进一步地,所述监控逻辑模块实现了对数据的监控,在动态代理对象中,当方法开始执行时记录开始时间,结束后记录结束时间,从而得到耗时信息;在动态代理对象中捕获出现的异常信息,从而记录错误信息;在动态代理对象中监测具体实现方法的运行,从而实现监控插件、类、方法的调用关系。
进一步地,接口插件根据接口类名称创建实现对象的实例时,为每个被代理对象分配一个独立的动态代理对象的Handler,动态代理对象在监测到具体方法运行时,在方法开始执行时记录开始时间,方法执行结束后记录结束时间,从而得到耗时信息,并且在动态代理对象中捕获出现的异常信息,从而记录方法运行过程中的错误信息;方法被调用时,方法本身调用次数加1并记录方法本身的耗时。插件监控数据实现的过程如下:方法调用后触发所在的实现插件,实现插件的调用次数加1;实现插件触发后,对所在的实现类及对应的接口插件调用次数加1;接口插件触发后,对接口插件所在的接口类的调用次数加1;接口类触发后,对应的接口方法调用次数加1。通过动态代理实现插件运行过程的监控,可以在不修改业务逻辑代码的前提下实现监控插件、类、方法的调用关系及各调用产生的耗时、错误信息,可以做到对不同层面、粒度的监控分析需求。
进一步地,基于插件开发方式的基础上,使用策略模块可选择是否需要进行监控策略,用动态代理方式实现插件运行过程的监控。
本发明具有如下优点:
1、一种基于动态代理实现的插件调度过程监控的方法,该监控方法中的所有被监控的系统都是基于插件式开发的,在插件开发方式的基础上,才能在每个插件创建实现对象的统一路口处进行统一的监控处理逻辑而不需要修改业务代码,保证了系统监控与运行逻辑的低耦合性。
2、基于动态代理实现程序运行过程监控,通过面向切面的思想,使用动态代理方式实现插件调用次数、耗时、错误信息的监控。基于这种模式的实现,可以在不修改逻辑代码的前提下,满足对不同层面、粒度的监控分析需求,实现对系统运行逻辑的调用关系、错误信息进行统一监控处理。
3、对于程序运行过程中所有方法的调用记录,所产生的庞大历史数据,通过基于Hadoop大数据存储方式,能够支持每天PB级别的数据流量的处理能力,并提供了MapReduce高性能的数据分析,能在程序运行过程中形成轨迹地图,方便维护阶段的智能快速定位,提高了维护效率,降低了维护成本。
附图说明
下面参照附图结合实施例对本发明作进一步的说明。
图1是插件调度过程监控逻辑结构示意图。
图2是插件监控数据实现结构示意图。
具体实施方式
本发明的基于动态代理实现的插件调度过程监控的方法,其所有被监控的系统包括多个插件,每个插件中含有接口插件模块、创建实现对象模块、策略模块、监控逻辑模块、数据存储模块和返回实现对象模块。该方法中所有被监控的系统都是基于插件式开发的,监控逻辑的实现包括接口插件模块、创建实现对象模块、策略模块、监控逻辑模块、数据存储模块和返回实现对象模块。所述接口插件模块根据接口查找对应的实现插件;所述创建实现对象模块与所述接口插件模块相连接,用于创建接口对应的实现对象;所述策略模块,分析判断创建的实现插件对象是否进行监控策略;所述数据存储模块,对进行监控后输出的数据进行分析处理,并以Hadoop方式进行存储;所述返回实现对象模块,接收进行监控后输出的植入监控逻辑的实现对象或者在确定不实施监控策略时直接返回对应的实现对象。
如图1所示,基于插件开发方式的基础上,接口插件模块根据接口类名称进入创建实现对象模块,实现对象使用策略模块分析判断是否进行监控策略,当应用系统设置为监控的时候就通过策略模式、使用动态代理的方式植入监控逻辑模块,对于程序运行过程中产生的庞大监控数据通过数据存储模块进行非结构化的数据格式的存储,以达到高效的数据分析处理能力,同时进入返回实现对象模块;如果应用系统设置为不监控,则直接返回实现对象模块,就不产生监控逻辑。所述监控逻辑模块,使用动态代理方式植入监控逻辑,实现对数据的监控。
所述监控逻辑模块实现了对数据的监控,在动态代理对象中,当方法开始执行时记录开始时间,结束后记录结束时间,从而得到耗时信息;在动态代理对象中捕获出现的异常信息,从而记录错误信息;在动态代理对象中监测具体实现方法的运行,从而实现监控插件、类、方法的调用关系。
图2是插件监控数据实现的过程,通过动态代理的方式实现对方法的实时监控,以达到记录从方法到类,从类到插件的实时监控过程,结构示意图说明如下:方法被调用时,方法本身调用次数加1并记录方法本身的耗时;方法调用后触发所在的实现插件,实现插件的调用次数加1;实现插件触发后,对所在的实现类及对应的接口插件调用次数加1;接口插件触发后,对接口插件所在的接口类的调用次数加1;接口类触发后,对应的接口方法调用次数加1。这样就可以做到对不同层面、粒度的监控分析需求。
进一步地,基于插件开发方式的基础上,使用策略模块可选择是否需要进行监控策略,用动态代理方式实现插件运行过程的监控。
本发明的重点在于:根据接口类创建实现对象的实例时,为每个被代理对象分配一个独立的动态代理对象的Handler,在动态代理对象中,当方法开始执行时记录开始时间,方法执行结束后记录结束时间,从而得到耗时信息,并且在动态代理对象中捕获出现的异常信息,从而记录方法运行过程中的错误信息;通过动态代理实现插件运行过程的监控,可以在不修改业务逻辑代码的前提下实现监控插件、类、方法的调用关系及各调用产生的耗时、错误信息。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
Claims (4)
1.一种基于动态代理实现的插件调度过程监控的方法,该监控方法中所有被监控的系统都是基于插件式开发的,监控逻辑的实现包括接口插件模块、创建实现对象模块、策略模块、监控逻辑模块、数据存储模块和返回实现对象模块;所述接口插件模块根据接口类名称进入所述创建实现对象模块,实现对象使用所述策略模块分析判断是否进行监控策略,当应用系统设置为监控的时候植入所述监控逻辑模块,对于所述监控逻辑模块在运行过程中产生的数据通过所述数据存储模块进行非结构化的数据格式的存储,同时进入所述返回实现对象模块;如果应用系统设置为不监控,则直接进入所述返回实现对象模块;其特征在于:所述监控逻辑模块使用动态代理方式植入监控逻辑,实现对数据的监控。
2.根据权利要求1所述的一种基于动态代理实现的插件调度过程监控的方法,其特征在于:所述监控逻辑模块实现了对数据的监控,在动态代理对象中,当方法开始执行时记录开始时间,结束后记录结束时间,从而得到耗时信息;在动态代理对象中捕获出现的异常信息,从而记录错误信息;在动态代理对象中监测具体实现方法的运行,从而实现监控插件、类、方法的调用关系。
3.根据权利要求2所述的一种基于动态代理实现的插件调度过程监控的方法,其特征在于:所述监控逻辑模块的监控数据实现的具体过程如下:
步骤30、动态代理对象的Handler监测到具体方法的运行;
步骤31、方法被调用时,方法本身调用次数加1并记录方法本身的耗时;
步骤32、方法调用后触发所在的实现插件,实现插件的调用次数加1;
步骤33、实现插件触发后,对所在的实现类及对应的接口插件调用次数加1;
步骤34、接口插件触发后,对接口插件所在的接口类的调用次数加1;
步骤35、接口类触发后,对应的接口方法调用次数加1;
步骤36、在动态代理对象中捕获出现的异常信息,从而记录方法运行过程中的错误信息。
4.根据权利要求1所述的一种基于动态代理实现的插件调度过程监控的方法,其特征在于:该方法采用策略模块,所述策略模块选择是否需要进行监控策略。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410150255.6A CN103927244B (zh) | 2014-04-15 | 2014-04-15 | 一种基于动态代理实现的插件调度过程监控的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410150255.6A CN103927244B (zh) | 2014-04-15 | 2014-04-15 | 一种基于动态代理实现的插件调度过程监控的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103927244A true CN103927244A (zh) | 2014-07-16 |
CN103927244B CN103927244B (zh) | 2017-06-06 |
Family
ID=51145470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410150255.6A Active CN103927244B (zh) | 2014-04-15 | 2014-04-15 | 一种基于动态代理实现的插件调度过程监控的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103927244B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224375A (zh) * | 2015-11-12 | 2016-01-06 | 用友网络科技股份有限公司 | 管理系统插件的监控系统和方法 |
CN106557691A (zh) * | 2016-10-12 | 2017-04-05 | 北京奇虎科技有限公司 | 监控应用中的第三方sdk方法、装置和加固安装包的装置 |
CN108920206A (zh) * | 2018-06-13 | 2018-11-30 | 北京交通大学 | 一种插件调度方法及装置 |
CN109857628A (zh) * | 2017-11-30 | 2019-06-07 | 北京高德云图科技有限公司 | 动态ui业务端代码性能检测方法及装置 |
CN112783575A (zh) * | 2021-02-03 | 2021-05-11 | 杭州海宴科技有限公司 | 一种插件式弹性云视频图像分析系统和方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162531A1 (en) * | 2007-01-03 | 2008-07-03 | Blue Reference, Inc. | Object-Oriented Framework for Data-Analysis Having Pluggable Platform Runtimes and Export Services |
CN101847116A (zh) * | 2010-05-05 | 2010-09-29 | 中兴通讯股份有限公司 | 一种基于j2ee架构的监控系统和方法 |
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理系统和方法 |
CN103034578A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 一种应用数据监控方法和装置 |
CN103645901A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种基于事件链的用户界面插件化交互方法 |
CN103645919A (zh) * | 2013-12-18 | 2014-03-19 | 用友软件股份有限公司 | 一种通过插件扩展管理信息系统功能的方法 |
-
2014
- 2014-04-15 CN CN201410150255.6A patent/CN103927244B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080162531A1 (en) * | 2007-01-03 | 2008-07-03 | Blue Reference, Inc. | Object-Oriented Framework for Data-Analysis Having Pluggable Platform Runtimes and Export Services |
CN101847116A (zh) * | 2010-05-05 | 2010-09-29 | 中兴通讯股份有限公司 | 一种基于j2ee架构的监控系统和方法 |
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理系统和方法 |
CN103034578A (zh) * | 2011-09-29 | 2013-04-10 | 北京新媒传信科技有限公司 | 一种应用数据监控方法和装置 |
CN103645901A (zh) * | 2013-12-16 | 2014-03-19 | 上海证券交易所 | 一种基于事件链的用户界面插件化交互方法 |
CN103645919A (zh) * | 2013-12-18 | 2014-03-19 | 用友软件股份有限公司 | 一种通过插件扩展管理信息系统功能的方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224375A (zh) * | 2015-11-12 | 2016-01-06 | 用友网络科技股份有限公司 | 管理系统插件的监控系统和方法 |
CN106557691A (zh) * | 2016-10-12 | 2017-04-05 | 北京奇虎科技有限公司 | 监控应用中的第三方sdk方法、装置和加固安装包的装置 |
CN109857628A (zh) * | 2017-11-30 | 2019-06-07 | 北京高德云图科技有限公司 | 动态ui业务端代码性能检测方法及装置 |
CN108920206A (zh) * | 2018-06-13 | 2018-11-30 | 北京交通大学 | 一种插件调度方法及装置 |
CN112783575A (zh) * | 2021-02-03 | 2021-05-11 | 杭州海宴科技有限公司 | 一种插件式弹性云视频图像分析系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103927244B (zh) | 2017-06-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104170323A (zh) | 基于网络功能虚拟化的故障处理方法及装置、系统 | |
CN103927244A (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN103646104A (zh) | 一种强实时故障诊断方法及系统 | |
CN104572290A (zh) | 消息处理线程的控制方法及装置 | |
CN104281906A (zh) | 一种业务流程中的流程引擎实现方法及其流程引擎系统 | |
CN105847088A (zh) | 一种基于云服务的虚拟机性能测试系统 | |
CN103488775A (zh) | 一种用于大数据处理的计算系统及计算方法 | |
CN101707399A (zh) | 电能信息采集方法及系统 | |
CN103309904A (zh) | 一种生成数据仓库etl 代码的方法及装置 | |
CN104965689A (zh) | 一种cpu/gpu的混合并行计算方法及装置 | |
US20220291950A1 (en) | Automated semantic tagging | |
CN104657149A (zh) | 一种存储系统的管理模块的软件框架实现方法 | |
CN102810184A (zh) | 一种动态执行工作流的方法、装置及企业系统 | |
CN103618762A (zh) | 一种基于aop的企业服务总线状态预处理系统及方法 | |
CN102929769A (zh) | 一种基于代理服务的虚拟机内部数据采集方法 | |
CN113254174A (zh) | 一种rpa机器人流程自动化实现系统和方法 | |
WO2023116067A1 (zh) | 面向5g云边端协同的电力业务分解方法及系统 | |
CN103109293A (zh) | 一种用户行为处理系统及方法 | |
US20220182851A1 (en) | Communication Method and Apparatus for Plurality of Administrative Domains | |
CN101216770A (zh) | 一种工作流引擎 | |
CN109376020B (zh) | 多区块链交互并发下的数据处理方法、装置及存储介质 | |
CN113658351A (zh) | 一种产品生产的方法、装置、电子设备及存储介质 | |
CN110908644B (zh) | 状态节点的配置方法、装置、计算机设备和存储介质 | |
CN104123135A (zh) | 一种统一后台接口的方法及装置 | |
CN104731900A (zh) | 一种Hive调度方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |