基于类加载的多插件下发方法、系统、设备及存储介质与流程

文档序号:36232395发布日期:2023-12-01 06:08阅读:32来源:国知局
基于类加载的多插件下发方法与流程

所属的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。图4是本发明的基于类加载的多插件下发设备的结构示意图。下面参照图4来描述根据本发明的这种实施方式的电子设备600。图4显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。如图4所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图1中所示的步骤。存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任一总线结构的局域总线。电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的基于类加载的多插件下发方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。如上所示,该实施例本发明的基于类加载的多插件下发系统能够通过设计和实现分层的类加载方式,兼容多种不同功能插件织入业务代码的需求,降低插件和业务代码间的冲突;其次,通过构建细粒度的插件的分级控制机制、插件下发机制,实现大规模插件的合理管控,增强系统的健壮性,降低使用java agent技术引入的系统风险。图5是本发明的计算机可读存储介质的结构示意图。参考图5所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品可以采用一个或多个可读介质的任一组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任一以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任一合适的组合。计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任一合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任一合适的组合。可以以一种或多种程序设计语言的任一组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任一种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。综上,本发明的目的在于提供基于类加载的多插件下发方法、系统、设备及存储介质,能够通过设计和实现分层的类加载方式,兼容多种不同功能插件织入业务代码的需求,降低插件和业务代码间的冲突;其次,通过构建细粒度的插件的分级控制机制、插件下发机制,实现大规模插件的合理管控,增强系统的健壮性,降低使用java agent技术引入的系统风险。以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。


背景技术:

1、java agent(java类文件)技术被广泛用于增强java应用的能力。通过此种方式可以显著降低功能性代码对业务程序的侵入性,但是目前相关实现方案多关注单独的功能增强,当多个agent插件同时下发时,不同插件和业务代码间存在类和方法的冲突等问题,从而影响字节码增强技术的可拓展性及应用的稳定性;其次,目前在大规模应用环境中,缺少完善的插件下发及稳定性保障方案。因此急需一种针对大规模应用环境、复杂场景的javaagent能力增强和插件管理的系统及技术来增强java agent技术的拓展能力并提高应用系统稳定性。

2、目前的java agent应用技术多为使用此技术进行单一功能增强的实现,当多个功能增强插件下发后,插件和业务代码、插件之间会因为类、方法间存在的类型转换异常等依赖冲突,使得整个应用无法正常运行;此外,在多插件下发场景中,目前的解决方案无法针对这些插件提供细粒度的管控能力,而且在大规模应用场景中,现有的插件下发模式会大大增加插件下发的风险性,从而导致服务长时间无法使用等事故。

3、因此,本发明提供了一种基于类加载的多插件下发方法、系统、设备及存储介质。


技术实现思路

1、针对现有技术中的问题,本发明的目的在于提供基于类加载的多插件下发方法、系统、设备及存储介质,克服了现有技术的困难,能够通过设计和实现分层的类加载方式,兼容多种不同功能插件织入业务代码的需求,降低插件和业务代码间的冲突,增强系统的健壮性。

2、本发明的实施例提供一种基于类加载的多插件下发方法,包括以下步骤:

3、s110、移动终端启动应用程序时,通过java虚拟机加载java类文件;

4、s120、当应用程序的字节码载入后,通过字节码增强库修改框架容器对载入的应用程序字节码进行变更;

5、s130、根据功能增强插件定义的匹配逻辑匹配待修改的目标类及目标方法,并将能力增强代码织入到目标方法中;以及

6、s140、在平台侧至少基于场景开关进行插件的能力的下发。

7、优选地,所述步骤s120还包括:所述字节码增强库至少包括功能增强插件,所述应用程序被配置为功能增强插件的框架容器。

8、优选地,所述步骤s130包括:

9、s131、当功能增强插件加载完成后,根据所述功能增强插件定义的匹配逻辑匹配待修改的目标类及目标方法;以及

10、s132、将增强实现中的能力增强代码通过修改字节码的方式织入到目标方法中。

11、优选地,所述步骤s130还包括:

12、加载增强实现的类加载器包括使用双亲委派模式的第一代理类加载器以及使用非双亲委派模式的第二代理类加载器,第一代理类加载器加载的增强实现可以使用用户空间的类加载器加载的类;第二代理类加载器加载的增强实现屏蔽插件中引入的依赖和用户空间中引入的依赖带来之间的冲突。

13、优选地,所述步骤s140包括:

14、s141、平台侧在应用启动阶段,根据所述应用的插件下发策略拉取插件下发列表,所述下发策略基于场景开关的状态和插件开关的状态获得;

15、s142、当插件下发后,根据所述应用侧的加载逻辑加载相应的功能;以及

16、s143、将加载功能后的所述插件打包后上传到平台侧,然后在平台侧设置该版本插件的灰度发布比例或者添加需要下发的白名单应用。

17、优选地,所述步骤s141,还包括:

18、所述场景开关被配置为提供该场景下的插件默认开启或关闭控制,所述插件开关被配置为控制插件的下发,其中,每个所述场景映射至少一插件,每个所述插件包含至少一个能力增强代码,应用程序根据场景和插件的控制组合,拉取到对应的能力增强插件。

19、优选地,所述步骤s142,还包括:

20、使能开关被配置为当开启时,会同步将加载功能后的所述插件到满足分布式一致性的配置平台。

21、本发明的实施例还提供一种基于类加载的多插件下发系统,用于实现上述的基于类加载的多插件下发方法,所述基于类加载的多插件下发系统包括:

22、加载指针模块,移动终端启动应用程序时,通过java虚拟机加载java类文件;

23、字节变更模块,当应用程序的字节码载入后,通过字节码增强库修改框架容器对载入的应用程序字节码进行变更;

24、能力增强模块,根据所述功能增强插件定义的匹配逻辑匹配待修改的目标类及目标方法,并将能力增强代码织入到目标方法中;以及能力下发模块,在平台侧至少基于场景开关进行插件的能力的下发。

25、本发明的实施例还提供一种基于类加载的多插件下发设备,包括:

26、处理器;

27、存储器,其中存储有所述处理器的可执行指令;

28、其中,所述处理器配置为经由执行所述可执行指令来执行上述基于类加载的多插件下发方法的步骤。

29、本发明的实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现上述基于类加载的多插件下发方法的步骤。

30、本发明的目的在于提供基于类加载的多插件下发方法、系统、设备及存储介质,能够通过设计和实现分层的类加载方式,兼容多种不同功能插件织入业务代码的需求,降低插件和业务代码间的冲突;其次,通过构建细粒度的插件的分级控制机制、插件下发机制,实现大规模插件的合理管控,增强系统的健壮性,降低使用java agent技术引入的系统风险。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1