CN116594717B - 一种类加载隔离方法、装置、设备及介质 - Google Patents

一种类加载隔离方法、装置、设备及介质 Download PDF

Info

Publication number
CN116594717B
CN116594717B CN202310592297.4A CN202310592297A CN116594717B CN 116594717 B CN116594717 B CN 116594717B CN 202310592297 A CN202310592297 A CN 202310592297A CN 116594717 B CN116594717 B CN 116594717B
Authority
CN
China
Prior art keywords
executed
class
task
loading
tasks
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.)
Active
Application number
CN202310592297.4A
Other languages
English (en)
Other versions
CN116594717A (zh
Inventor
李兵
凌永志
徐业鼎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Hanshuo Information Technology Co ltd
Original Assignee
Shanghai Hanshuo Information Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Hanshuo Information Technology Co ltd filed Critical Shanghai Hanshuo Information Technology Co ltd
Priority to CN202310592297.4A priority Critical patent/CN116594717B/zh
Publication of CN116594717A publication Critical patent/CN116594717A/zh
Application granted granted Critical
Publication of CN116594717B publication Critical patent/CN116594717B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种类加载隔离方法、装置、设备及介质,包括:根据待执行任务加载类加载器;基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码;获取隔离容器运行期间所需要的Wrapper参数;根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定;基于所述Wrapper参数以及所述处理后的代码,执行执行器线程。本发明能够实现了同一执行进程内不同业务对应由各自绑定的执行器执行,能够避免不同业务的上下文干扰,适应于业务测试、细粒度并行计算等场景。

Description

一种类加载隔离方法、装置、设备及介质
技术领域
本发明涉及计算机软件开发技术领域,尤其涉及一种类加载隔离方法、装置、设备及介质。
背景技术
在Java开发领域,应用的某项或多项功能的实现需要用到多个组件,每个组件内部又有多个类构成,也就是说,应用的功能实现依靠调用不同组件的不同类实现。
在现有的开发过程中,应用在隔离器中以微服务为主的粗粒度并行计算模式执行,虽然达到了进程之间无干扰的效果,但是无法实现在同一执行进程内不同业务上下文之间无干扰的效果,进而也就无法实现在业务测试、细粒度并行计算等场景下,不同用例或执行任务之间的上下文隔离和可控资源共享的效果。因此,亟需一种隔离效果更加好的类加载隔离方法。
发明内容
本发明提供一种类加载隔离方法、装置、设备及介质,用以解决上述问题。
本发明提供一种类加载隔离方法,包括:
根据待执行任务加载类加载器;
基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码;
获取隔离容器运行期间所需要的Wrapper参数;
根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定;
基于所述Wrapper参数以及所述处理后的代码,执行执行器线程。
根据本发明提供的一种类加载隔离方法,在所述根据待执行任务加载类加载器之前,方法还包括:
根据全局缓存信息为待执行任务确定隔离容器版本;
相应地,所述根据待执行任务加载类加载器,包括:
基于确定的隔离容器版本,加载待执行任务对应的类加载器。
根据本发明提供的一种类加载隔离方法,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程,包括:
根据资源路径获取公共资源,并将所述公共资源注入至与所述确定的隔离容器版本对应的隔离容器中;
根据所述全局缓存为注入公共资源的隔离容器关联共享资源;
根据所述Wrapper参数为待执行任务注入消息处理回调函数,以实现关联共享资源的隔离容器的内外通讯;
基于内外通讯的隔离容器,通过与所述待执行任务对应的类加载器执行执行器线程。
根据本发明提供的一种类加载隔离方法,在所述基于内外通讯的隔离容器,通过与所述待执行任务对应的类加载器执行执行器线程之后,方法还包括:
对任务入参的Wrapper参数所对应的对象进行序列化,并保存序列化结果;
记录待执行任务对应的任务编号;
在所述内外通讯的隔离容器发生故障的情况下,根据序列化结果以及任务编号确定待执行任务对应的Wrapper参数以及执行节点,从而实现隔离容器的快照。
根据本发明提供的一种类加载隔离方法,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程,包括:
在获得绑定的类加载器的情况下,执行所述绑定的类加载器;
在未获得绑定的类加载器的情况下,执行注入业务的类加载器,并在执行完毕后,将注入业务的类加载器恢复为默认类加载器。
根据本发明提供的一种类加载隔离方法,所述基于确定的隔离容器版本,加载待执行任务对应的类加载器,包括:
根据确定的隔离容器版本并通过黑名单和白名单的方式,在与所述确定的隔离容器版本对应的隔离容器中加载与所述待执行任务对应的类加载。
根据本发明提供的一种类加载隔离方法,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程还包括:
根据待执行任务的优先级、提交时间、在任务队列中所处的位置以及参数权重,计算得到待执行任务对应的综合得分;
基于所述综合得分确定待执行任务的执行顺序,根据所述执行顺序依次执行待执行任务。
本发明还提供一种类加载隔离装置,包括:
加载模块,用于根据待执行任务加载类加载器;
预解析与热加载模块,用于基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码;
参数获取模块,用于获取隔离容器运行期间所需要的Wrapper参数;
执行器绑定模块,用于根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定;
执行模块,用于基于所述Wrapper参数以及所述处理后的代码,执行执行器线程。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如上述任一种类加载隔离方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一种类加载隔离方法。
本发明提供的类加载隔离方法、装置、设备及介质,在用户修改动态表单时会触发数据点监控事件,并根据触发的数据点监控事件将修改信息写入原因列表,通过修改原因组件展示修改的原因以供用户选择。在用户确定修改的原因之后,对修改前的数据与修改后的数据进行可视化展示,上述修改过程简单,且对修改的用户并没有局限性,可以多个用户对同一份动态表单进行修改,展示前后的修改记录,不需要用户从数据库或者日志中查看,省时省力,修改过程更高效。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的类加载隔离方法的流程示意图之一;
图2是本发明实施例提供的类加载隔离方法的流程示意图之二;
图3为本发明实施例提供的类加载隔离装置结构示意图;
图4为本发明实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的类加载隔离方法的流程示意图之一;图2是本发明实施例提供的类加载隔离方法的流程示意图之二;如图1以及图2所示,该类加载隔离方法,包括:
S101,根据待执行任务加载类加载器。
在本步骤中,先根据配置文件加载程序包,循环读取配置文件的内容,将程序包路径放入缓存,封装后返回给加载主进程。
在完成上述的程序包加载之后,进行类加载器的加载,具体地,根据确定的隔离容器版本并通过黑名单和白名单的方式,在与所述确定的隔离容器版本对应的隔离容器中加载与所述待执行任务对应的类加载。也即,根据类路径模式进行过滤,通过黑名单及白名单的方式,保证只有业务沙盒(即隔离容器)所需要的必要类使用本沙盒内的特定类加载器;并且将需要例外处理的类通过执行器外部默认的类加载器进行加载;
S102,基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码。
在本步骤中,在实现main函数开始之前,对代码进行加载、初始化、编译,以避免jvm的解释型处理方式带来的效率下降;使用JIT编译器将Java字节码编译成本地机器码,提高应用程序的执行效率。
S103,获取隔离容器运行期间所需要的Wrapper参数。
其中,隔离容器运行期间所需要的Wrapper参数具体是指根据待执行任务的优先级设置的优先级入参、设置的超时入参、设置的计算资源使用CPU或是GPU的选项、设置的动态表达式、设置的临时任务名称、设置的沙盒版本、设置的客户端标识、设置的沙盒输入流和输出流的内存地址、设置的沙盒执行异常的回调方法等等。
S104,根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定。
由于在Java中,每个线程都与一个类加载器相关联。当线程需要加载类时,它会使用与它相关联的类加载器来查找类。这种机制可以使不同的线程使用不同的类加载器,从而实现类隔离。
基于上述机制,本发明首先通过任务版本号在缓存中查找已缓存的对应于本任务的类加载器;并将其通过setcontextloader的方式固化到本执行器线程,实现执行器线程与任务个性化定义的类加载器的绑定。
S105,基于所述Wrapper参数以及所述处理后的代码,执行执行器线程。
在本步骤中,基于前述提到的Wrapper参数以及经过预解析与热加载处理后的代码,执行前述完成执行器绑定的执行器线程,以实现待处理任务的执行。
根据本发明实施例提供的类加载隔离方法,通过根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,从而完成了执行器的绑定,实现了同一执行进程内不同业务对应由各自绑定的执行器执行,能够避免不同业务的上下文干扰,适应于业务测试、细粒度并行计算等场景。
进一步地,在上述实施例的基础上,在所述根据待执行任务加载类加载器之前,方法还包括:
根据全局缓存信息为待执行任务确定隔离容器版本。
相应地,所述根据待执行任务加载类加载器,包括:
基于确定的隔离容器版本,加载待执行任务对应的类加载器。
在本实施例中,在加载类加载器之前,还基于MD5算法对沙盒版本进行管理,具体地,通过将每种任务的业务字节包进行MD5摘要处理,生成任务的唯一ID;将该版本沙盒对应的类加载器、公共资源放入全局缓存;任务执行时,从全局缓存中根据ID进行加载,实现任务上下文的高效保存和唤醒。
进一步地,在上述实施例的基础上,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程,包括:
根据资源路径获取公共资源,并将所述公共资源注入至与所述确定的隔离容器版本对应的隔离容器中。
根据所述全局缓存为注入公共资源的隔离容器关联共享资源。
根据所述Wrapper参数为待执行任务注入消息处理回调函数,以实现关联共享资源的隔离容器的内外通讯。
基于内外通讯的隔离容器,通过与所述待执行任务对应的类加载器执行执行器线程。
在本实施例中,先通过路径表达式指定公共资源地址;进而通过公共资源路径找到相应的公共资源;将所需的公共资源拷贝到沙盒指定的公共目录,并过滤掉非包类的资源;在沙盒执行过程中,通过类加载器将资源注入到当前上下文,实现公共资源与业务沙盒的有机结合和运行期注入。
在完成公共资源的注入之后,根据任务ID、版本生成唯一的全局缓存;生成沙盒待使用共享资源实例;调用业务任务中实现的共享资源处理类进行实例化;设置宿主沙盒;沙盒任务执行完毕后,调用处理类进行上下文清理。
进一步地,完成公共资源的注入与共享资源的关联之后,通过在任务wrapper中注入消息处理回调函数来实现沙盒内外的通讯;判断消息类型为任务结果时,调用沙盒外部的任务结果处理句柄函数;判断消息类型为分配沙盒时,从队列中获取得分值最高的任务,使用沙盒;判断消息类型为任务取消时,从队列中删除对应的任务。
进一步地,在上述实施例的基础上,在所述基于内外通讯的隔离容器,通过与所述待执行任务对应的类加载器执行执行器线程之后,方法还包括:
对任务入参的Wrapper参数所对应的对象进行序列化,并保存序列化结果。
记录待执行任务对应的任务编号。
在所述内外通讯的隔离容器发生故障的情况下,根据序列化结果以及任务编号确定待执行任务对应的Wrapper参数以及执行节点,从而实现隔离容器的快照。
在本实施例中,为了实现任务执行过程中的持久化、暂停、恢复动作,通过将任务入参的wrapper对象进行序列化,并保存入本地文件;通过在任务新增入队列时,将对应的wrapper进行序列化;通过将记录沙盒当前执行的任务编号落地到文件实现;当沙盒发生故障并恢复时,从文件中加载任务列表,从文件中加载每个任务对应的入参wrapper,从文件中加载队列当前执行的节点;以此实现沙盒快照机制。
进一步地,在上述实施例的基础上,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程,包括:
在获得绑定的类加载器的情况下,执行所述绑定的类加载器。
在未获得绑定的类加载器的情况下,执行注入业务的类加载器,并在执行完毕后,将注入业务的类加载器恢复为默认类加载器。
在本实施例中,获取上下文绑定的类加载器,执行绑定的类加载器。若没有绑定的类加载器,则使用注入的业务处理类加载器;调用业务代码执行完毕后,恢复沙盒中设置的默认类加载器。
进一步地,在上述实施例的基础上,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程还包括:
根据待执行任务的优先级、提交时间、在任务队列中所处的位置以及参数权重,计算得到待执行任务对应的综合得分。
基于所述综合得分确定待执行任务的执行顺序,根据所述执行顺序依次执行待执行任务。
在本实施例中,为了实现在沙盒内待执行任务的流量控制,可以通过获取任务执行的同步控制锁;增加队列长度;执行完毕后释放锁;基于任务优先级、提交时间、当前所处队列位置、各参数权重,在任务分配时综合计算得分;得分加大者在沙盒资源释放时优先获得执行资格,从而实现了在先进先出基础上,兼顾新任务的现实场景需要。
图3为本发明实施例提供的类加载隔离装置结构示意图,如图3所示,一种类加载隔离装置,包括:
加载模块301,根据待执行任务加载类加载器。
在本模块中,先根据配置文件加载程序包,循环读取配置文件的内容,将程序包路径放入缓存,封装后返回给加载主进程。
在完成上述的程序包加载之后,进行类加载器的加载,具体地,根据确定的隔离容器版本并通过黑名单和白名单的方式,在与所述确定的隔离容器版本对应的隔离容器中加载与所述待执行任务对应的类加载。也即,根据类路径模式进行过滤,通过黑名单及白名单的方式,保证只有业务沙盒(即隔离容器)所需要的必要类使用本沙盒内的特定类加载器;并且将需要例外处理的类通过执行器外部默认的类加载器进行加载;
预解析与热加载模块302,基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码。
在本模块中,在实现main函数开始之前,对代码进行加载、初始化、编译,以避免jvm的解释型处理方式带来的效率下降;使用JIT编译器将Java字节码编译成本地机器码,提高应用程序的执行效率。
参数获取模块303,获取隔离容器运行期间所需要的Wrapper参数。
其中,隔离容器运行期间所需要的Wrapper参数具体是指根据待执行任务的优先级设置的优先级入参、设置的超时入参、设置的计算资源使用CPU或是GPU的选项、设置的动态表达式、设置的临时任务名称、设置的沙盒版本、设置的客户端标识、设置的沙盒输入流和输出流的内存地址、设置的沙盒执行异常的回调方法等等。
执行器绑定模块304,根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定。
由于在Java中,每个线程都与一个类加载器相关联。当线程需要加载类时,它会使用与它相关联的类加载器来查找类。这种机制可以使不同的线程使用不同的类加载器,从而实现类隔离。
基于上述机制,本发明首先通过任务版本号在缓存中查找已缓存的对应于本任务的类加载器;并将其通过setcontextloader的方式固化到本执行器线程,实现执行器线程与任务个性化定义的类加载器的绑定。
执行模块305,基于所述Wrapper参数以及所述处理后的代码,执行执行器线程。
在本模块中,基于前述提到的Wrapper参数以及经过预解析与热加载处理后的代码,执行前述完成执行器绑定的执行器线程,以实现待处理任务的执行。
根据本发明实施例提供的类加载隔离装置,通过根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,从而完成了执行器的绑定,实现了同一执行进程内不同业务对应由各自绑定的执行器执行,能够避免不同业务的上下文干扰,适应于业务测试、细粒度并行计算等场景。
图4为本发明实施例提供的一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器410(processor)、通信接口420(CommunicationsInterface)、存储器430(memory)和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行类加载隔离方法,所述类加载隔离方法,包括:根据待执行任务加载类加载器;基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码;获取隔离容器运行期间所需要的Wrapper参数;根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定;基于所述Wrapper参数以及所述处理后的代码,执行执行器线程。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述个方法所提供的类加载隔离方法,所述类加载隔离方法,包括:根据待执行任务加载类加载器;基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码;获取隔离容器运行期间所需要的Wrapper参数;根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定;基于所述Wrapper参数以及所述处理后的代码,执行执行器线程。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种类加载隔离方法,其特征在于,包括:
根据全局缓存信息为待执行任务确定隔离容器版本,所述隔离容器版本包括基于MD5算法确定的任务ID;
基于确定的隔离容器版本,加载待执行任务对应的类加载器;
基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码;
获取隔离容器运行期间所需要的Wrapper参数;
根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定;
基于所述Wrapper参数以及所述处理后的代码,执行执行器线程;
其中,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程,包括:
在获得绑定的类加载器的情况下,执行所述绑定的类加载器;
在未获得绑定的类加载器的情况下,执行注入业务的类加载器,并在执行完毕后,将注入业务的类加载器恢复为默认类加载器。
2.根据权利要求1所述的类加载隔离方法,其特征在于,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程,包括:
根据资源路径获取公共资源,并将所述公共资源注入至与所述确定的隔离容器版本对应的隔离容器中;
根据所述全局缓存为注入公共资源的隔离容器关联共享资源;
根据所述Wrapper参数为待执行任务注入消息处理回调函数,以实现关联共享资源的隔离容器的内外通讯;
基于内外通讯的隔离容器,通过与所述待执行任务对应的类加载器执行执行器线程。
3.根据权利要求2所述的类加载隔离方法,其特征在于,在所述基于内外通讯的隔离容器,通过与所述待执行任务对应的类加载器执行执行器线程之后,方法还包括:
对任务入参的Wrapper参数所对应的对象进行序列化,并保存序列化结果;
记录待执行任务对应的任务编号;
在所述内外通讯的隔离容器发生故障的情况下,根据序列化结果以及任务编号确定待执行任务对应的Wrapper参数以及执行节点,从而实现隔离容器的快照。
4.根据权利要求1所述的类加载隔离方法,其特征在于,所述基于确定的隔离容器版本,加载待执行任务对应的类加载器,包括:
根据确定的隔离容器版本并通过黑名单和白名单的方式,在与所述确定的隔离容器版本对应的隔离容器中加载与所述待执行任务对应的类加载。
5.根据权利要求2所述的类加载隔离方法,其特征在于,所述基于所述Wrapper参数以及所述处理后的代码,执行执行器线程还包括:
根据待执行任务的优先级、提交时间、在任务队列中所处的位置以及参数权重,计算得到待执行任务对应的综合得分;
基于所述综合得分确定待执行任务的执行顺序,根据所述执行顺序依次执行待执行任务。
6.一种类加载隔离装置,其特征在于,包括:
加载模块,用于根据全局缓存信息为待执行任务确定隔离容器版本;基于确定的隔离容器版本,加载待执行任务对应的类加载器;所述隔离容器版本包括基于MD5算法确定的任务ID;
预解析与热加载模块,用于基于加载后的类加载器,对待执行任务对应的字节包进行字节码预解析与热加载,获得处理后的代码;
参数获取模块,用于获取隔离容器运行期间所需要的Wrapper参数;
执行器绑定模块,用于根据待执行任务对应的版本信息从全局缓存中获取与待执行任务对应的类加载器,并将所述与待执行任务对应的类加载器固化到执行器线程中,以完成执行器线程与所述待执行任务对应的类加载器之间的绑定;
执行模块,用于基于所述Wrapper参数以及所述处理后的代码,执行执行器线程;
其中,所述执行模块具体用于:
在获得绑定的类加载器的情况下,执行所述绑定的类加载器;
在未获得绑定的类加载器的情况下,执行注入业务的类加载器,并在执行完毕后,将注入业务的类加载器恢复为默认类加载器。
7.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5任一所述的类加载隔离方法。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-5任一所述的类加载隔离方法。
CN202310592297.4A 2023-05-24 2023-05-24 一种类加载隔离方法、装置、设备及介质 Active CN116594717B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310592297.4A CN116594717B (zh) 2023-05-24 2023-05-24 一种类加载隔离方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310592297.4A CN116594717B (zh) 2023-05-24 2023-05-24 一种类加载隔离方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN116594717A CN116594717A (zh) 2023-08-15
CN116594717B true CN116594717B (zh) 2024-03-08

Family

ID=87611306

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310592297.4A Active CN116594717B (zh) 2023-05-24 2023-05-24 一种类加载隔离方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN116594717B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116974653B (zh) * 2023-09-21 2024-01-09 阿里云计算有限公司 类加载方法及系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101105757A (zh) * 2007-08-31 2008-01-16 金蝶软件(中国)有限公司 一种类装载隔离的方法及一种类装载隔离的装置
CN105404524A (zh) * 2014-09-15 2016-03-16 阿里巴巴集团控股有限公司 Java应用中的类加载隔离方法及装置
CN108279940A (zh) * 2016-12-30 2018-07-13 华为软件技术有限公司 一种web容器中的模块加载方法和装置
US10402191B1 (en) * 2018-07-17 2019-09-03 Morgan Stanley Services Group Inc. Fault resistant 24×7 topology for business process management ecosystem
CN110941528A (zh) * 2019-11-08 2020-03-31 支付宝(杭州)信息技术有限公司 一种基于故障的日志埋点设置方法、装置及系统
CN111443959A (zh) * 2020-03-27 2020-07-24 北京金山云网络技术有限公司 任务的执行方法、装置和服务器
CN113778445A (zh) * 2021-09-15 2021-12-10 树根互联股份有限公司 一种跨平台组件生成方法、装置、电子设备及存储介质
CN114153512A (zh) * 2020-08-18 2022-03-08 阿里巴巴集团控股有限公司 资源加载方法、装置、电子设备和存储介质
CN115858014A (zh) * 2022-12-20 2023-03-28 中国联合网络通信集团有限公司 应用程序的运行方法、终端设备、介质和计算机程序产品

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9747438B2 (en) * 2015-11-02 2017-08-29 Red Hat, Inc. Enabling resource access for secure application containers
LU101362B1 (en) * 2019-08-26 2021-03-12 Microsoft Technology Licensing Llc Computer device including process isolated containers with assigned virtual functions

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101105757A (zh) * 2007-08-31 2008-01-16 金蝶软件(中国)有限公司 一种类装载隔离的方法及一种类装载隔离的装置
CN105404524A (zh) * 2014-09-15 2016-03-16 阿里巴巴集团控股有限公司 Java应用中的类加载隔离方法及装置
CN108279940A (zh) * 2016-12-30 2018-07-13 华为软件技术有限公司 一种web容器中的模块加载方法和装置
US10402191B1 (en) * 2018-07-17 2019-09-03 Morgan Stanley Services Group Inc. Fault resistant 24×7 topology for business process management ecosystem
CN110941528A (zh) * 2019-11-08 2020-03-31 支付宝(杭州)信息技术有限公司 一种基于故障的日志埋点设置方法、装置及系统
CN111443959A (zh) * 2020-03-27 2020-07-24 北京金山云网络技术有限公司 任务的执行方法、装置和服务器
CN114153512A (zh) * 2020-08-18 2022-03-08 阿里巴巴集团控股有限公司 资源加载方法、装置、电子设备和存储介质
CN113778445A (zh) * 2021-09-15 2021-12-10 树根互联股份有限公司 一种跨平台组件生成方法、装置、电子设备及存储介质
CN115858014A (zh) * 2022-12-20 2023-03-28 中国联合网络通信集团有限公司 应用程序的运行方法、终端设备、介质和计算机程序产品

Also Published As

Publication number Publication date
CN116594717A (zh) 2023-08-15

Similar Documents

Publication Publication Date Title
CN105574411B (zh) 一种动态脱壳方法、装置和设备
WO2010041467A2 (en) USING TRANSIENT PCRs TO REALISE TRUST IN APPLICATION SPACE OF A SECURE PROCESSING SYSTEM
Fouquet et al. An eclipse modelling framework alternative to meet the models@ runtime requirements
US9767007B2 (en) Efficient method data recording
CN108229107B (zh) 一种Android平台应用程序的脱壳方法及容器
JP2005293578A (ja) 属性を介して制御されるテストケース継承
CN116594717B (zh) 一种类加载隔离方法、装置、设备及介质
US20090249311A1 (en) Sharing a native module of compiled code using an abstraction module of interpreted code in a virtual machine environment
CN108429787B (zh) 容器部署方法及装置、计算机存储介质、终端
US11907296B2 (en) Method and system for traversing an object graph using traversal context objects
US20230401058A1 (en) Semantic functional wrappers of services
CN115335806A (zh) 以模块粒度的影子堆栈违规强制
US11861364B2 (en) Circular shadow stack in audit mode
WO2001084303A1 (fr) Procede et systeme de traitement d'informations
CN109388770B (zh) Web页面生成方法及装置
CN115220873A (zh) 一种在Android系统中运行Open Harmony应用的方法
CN112015436A (zh) 短信平台部署方法及装置、计算设备、计算机存储介质
CN116010112B (zh) 钩子函数的调用方法、装置、计算机设备及可读存储介质
CN110955462B (zh) 一种资源获取方法、装置及计算机可读存储介质
CN117076004B (zh) 微服务打包合并方法、装置和电子设备
US20240069927A1 (en) Nanoservice computing and architecture
CN110879747B (zh) 资源管理方法及装置
CN117931374A (zh) 基于容器隔离的应用处理方法、装置、设备及存储介质
EP4356247A1 (en) Circular shadow stack in audit mode
CN118193392A (zh) 一种任务验证的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant