一种基于字节码的数据处理方法、装置、设备及系统制造方法及图纸

技术编号:25947495 阅读:11 留言:0更新日期:2020-10-17 03:39
本说明书提供了一种基于字节码的数据处理方法、装置、设备及系统。所述方法包括将目标服务对应的类加载到Java虚拟机;启动JavaAgant,从JavaAgant对应的JAR文件中获取不同插件对应的修改信息,所述修改信息包括进行字节码修改的目标名称和与所述目标名称对应的字节码修改内容;利用所述不同插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得修改后的执行方法;其中,不同插件对应的目标名称相同,不同插件对应的字节码修改内容不同;将所述修改后的执行方法对应的类实例化为对象,以使所述目标服务调用。利用本说明书实施例可以以对应用无入侵的方式实现字节码修改,从而减少工作量。

【技术实现步骤摘要】
一种基于字节码的数据处理方法、装置、设备及系统
本申请涉及分布式监控
,特别涉及一种基于字节码的数据处理方法、装置、设备及系统。
技术介绍
在分布式体系中,链路追踪、请求限流在故障预警定位、系统高可用层面发挥着重要作用,其实现思路主要是对请求进行埋点,然后在请求前后插入链路采集、流量控制等逻辑。然而在请求前后插入链路采集、流量控制等逻辑通常采用侵入式实现,这种方式通常需要修改应用代码,从而会导致工作量加大。
技术实现思路
本说明书实施例提供了一种基于字节码的数据处理方法、装置、设备及系统,可以以对应用无入侵的方式实现对字节码的处理,从而减少工作量。本说明书提供的基于字节码的数据处理方法、装置、设备及系统是包括以下方式实现的。一种基于字节码的数据处理方法,包括:将目标服务对应的类加载到Java虚拟机;其中,所述目标服务对应的类中包括所述目标服务调用的执行方法;启动JavaAgant,从JavaAgant对应的JAR文件中获取不同插件对应的修改信息,所述插件用于对执行方法进行字节码修改,所述修改信息包括进行字节码修改的目标名称和与所述目标名称对应的字节码修改内容;利用所述不同插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得修改后的执行方法;其中,不同插件对应的目标名称相同,不同插件对应的字节码修改内容不同;将所述修改后的执行方法对应的类实例化为对象,以使所述目标服务调用。一种基于字节码的数据处理装置,包括:加载模块,用于将目标服务对应的类加载到Java虚拟机;其中,所述目标服务对应的类中包括所述目标服务调用的执行方法;获取模块,用于启动JavaAgant,从JavaAgant对应的JAR文件中获取不同插件对应的修改信息,所述插件用于对执行方法进行字节码修改,所述修改信息包括进行字节码修改的目标名称和与所述目标名称对应的字节码修改内容;获得模块,用于利用所述不同插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得修改后的执行方法;其中,不同插件对应的目标名称相同,不同插件对应的字节码修改内容不同;实例化模块,用于将所述修改后的执行方法对应的类实例化为对象,以使所述目标服务调用。一种基于字节码的数据处理设备,包括处理器及用于存储处理器可执行指令的存储器,所述指令被所述处理器执行时实现包括以下步骤:将目标服务对应的类加载到Java虚拟机;其中,所述目标服务对应的类中包括所述目标服务调用的执行方法;启动JavaAgant,从JavaAgant对应的JAR文件中获取不同插件对应的修改信息,所述插件用于对执行方法进行字节码修改,所述修改信息包括进行字节码修改的目标名称和与所述目标名称对应的字节码修改内容;利用所述不同插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得修改后的执行方法;其中,不同插件对应的目标名称相同,不同插件对应的字节码修改内容不同;将所述修改后的执行方法对应的类实例化为对象,以使所述目标服务调用。一种基于字节码的数据处理系统,包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现本说明书实施例中任意一个方法实施例方法的步骤。本说明书提供的一种基于字节码的数据处理方法、装置、设备及系统。一些实施例中通过以非侵入方式对同一个方法进行多次字节码修改,可以解决侵入式需要修改应用代码、应用落地困难问题。由于不同插件可共存且功能不冲突,通过利用不同插件对同一执行方法进行多次字节码修改,不仅可以达到功能叠加的效果,增强对应的功能,而且可以有效减少冗余代码,提高服务性能。采用本说明书提供的实施方案,可以以对应用无入侵的方式实现字节码修改,方便应用落地的同时,增强应用实现的功能。附图说明此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,并不构成对本说明书的限定。在附图中:图1是本说明书提供的基于字节码的数据处理方法的一个实施例的流程示意图;图2是本说明书提供的基于字节码的数据处理方法的一个具体实施例的流程示意图;图3是本说明书提供的一种基于字节码的数据处理装置的一个实施例的模块结构示意图;图4是本说明书提供的一种基于字节码的数据处理系统的一个实施例的结构示意图;图5是本说明书提供的一种基于字节码的数据处理服务器的一个实施例的硬件结构框图。具体实施方式为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书中的一部分实施例,而不是全部的实施例。基于本说明书中的一个或多个实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书实施例保护的范围。在分布式体系中,链路追踪、请求限流在故障预警定位、系统高可用保障层面发挥着必不可少的作用,实现思路本质上是对请求进行埋点,在请求前后插入链路采集、流量控制等逻辑。然而在请求前后插入链路采集、流量控制等逻辑通常需要修改应用代码,应用落地比较困难。本说明书提供的一种基于字节码的数据处理方法、装置、设备及系统,以非侵入式的方式对某个方法同时落地链路追踪和限流组件,且两种组件可共存,不仅可以解决侵入式需要修改应用代码、应用落地困难问题,而且可以对同一个方法达到功能叠加效果,从而增强应用实现的功能。下面以一个具体的应用场景为例对本说明书实施方案进行说明。具体的,图1是本说明书提供的基于字节码的数据处理方法的一个实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。需要说明的是,下述实施例描述并不对基于本说明书的其他可扩展到的应用场景中的技术方案构成限制。具体的一种实施例如图1所示,本说明书提供的一种基于字节码的数据处理方法的一种实施例中,所述方法可以包括以下步骤。S0:将目标服务对应的类加载到Java虚拟机;其中,所述目标服务对应的类中包括所述目标服务调用的执行方法。其中,Java虚拟机(JavaVirtualMachine简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境。由于JVM可以屏蔽与具体操作系统平台相关的信息,使得Java程序只需生成在JVM上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。JVM也可以理解为是一个可运行的程序,其可以全部用软件方式来实现,也可本文档来自技高网
...

【技术保护点】
1.一种基于字节码的数据处理方法,其特征在于,包括:/n将目标服务对应的类加载到Java虚拟机;其中,所述目标服务对应的类中包括所述目标服务调用的执行方法;/n启动JavaAgant,从JavaAgant对应的JAR文件中获取不同插件对应的修改信息,所述插件用于对执行方法进行字节码修改,所述修改信息包括进行字节码修改的目标名称和与所述目标名称对应的字节码修改内容;/n利用所述不同插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得修改后的执行方法;其中,不同插件对应的目标名称相同,不同插件对应的字节码修改内容不同;/n将所述修改后的执行方法对应的类实例化为对象,以使所述目标服务调用。/n

【技术特征摘要】
1.一种基于字节码的数据处理方法,其特征在于,包括:
将目标服务对应的类加载到Java虚拟机;其中,所述目标服务对应的类中包括所述目标服务调用的执行方法;
启动JavaAgant,从JavaAgant对应的JAR文件中获取不同插件对应的修改信息,所述插件用于对执行方法进行字节码修改,所述修改信息包括进行字节码修改的目标名称和与所述目标名称对应的字节码修改内容;
利用所述不同插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得修改后的执行方法;其中,不同插件对应的目标名称相同,不同插件对应的字节码修改内容不同;
将所述修改后的执行方法对应的类实例化为对象,以使所述目标服务调用。


2.根据权利要求1所述的方法,其特征在于,所述不同插件至少包括链路追踪插件和限流插件。


3.根据权利要求2所述的方法,其特征在于,当所述插件为链路追踪插件时,所述字节码修改内容包括在与所述目标名称对应的执行方法前增加链路ID获取信息,在与所述目标名称对应的执行方法后增加链路耗时获取信息、执行结果获取信息、链路发送信息。


4.根据权利要求2所述的方法,其特征在于,当所述插件为限流插件时,所述字节码修改内容包括增加调用次数统计信息,次数超过阈值后抛出异常信息。


5.根据权利要求1所述的方法,其特征在于,所述从JavaAgant对应的JAR文件中获取不同插件对应的修改信息,包括:
从JavaAgant对应的JAR文件中获取不同插件;
将所述不同插件对应的路径注册到缓存中;
从所述缓存中获取与所述不同插件对应的修改信息。


6.根据权利要求5所述的方法,其特征在于,所述利用所述不同插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得修改后的执行方法,包括:
利用第一插件对应的字节码修改内容对与所述目标名称对应的执行方法进行字节码修改,获得第一修改后的执行方法;
将所述第一插件从所述缓存中删除;
判断所述缓存中是否存在与所述目标名称对应的第二插件;
确认存在时,利用所述第二插件对应的字节码修改内容对所述第一修改后的执行...

【专利技术属性】
技术研发人员:曹辉健刘慕雨王泽洋黄镜澄
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1