CN112099921A - 基于JVM的Java应用系统预热方法及系统 - Google Patents

基于JVM的Java应用系统预热方法及系统 Download PDF

Info

Publication number
CN112099921A
CN112099921A CN202011036379.3A CN202011036379A CN112099921A CN 112099921 A CN112099921 A CN 112099921A CN 202011036379 A CN202011036379 A CN 202011036379A CN 112099921 A CN112099921 A CN 112099921A
Authority
CN
China
Prior art keywords
java application
service
application system
preheating
processor
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
Application number
CN202011036379.3A
Other languages
English (en)
Other versions
CN112099921B (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.)
China Construction Bank Corp
Original Assignee
China Construction Bank Corp
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 China Construction Bank Corp filed Critical China Construction Bank Corp
Priority to CN202011036379.3A priority Critical patent/CN112099921B/zh
Publication of CN112099921A publication Critical patent/CN112099921A/zh
Application granted granted Critical
Publication of CN112099921B publication Critical patent/CN112099921B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • 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

本发明提供了一种基于JVM的Java应用系统预热方法及系统,所述方法包括:将接收的任务请求报文通过通讯适配器输入请求处理栈;通过请求处理栈对所述任务请求报文进行框架级处理,其中,在对所述任务请求报文进行报文处理之前,对JAVA应用系统进行预热;将请求处理栈处理完成的任务请求报文进行业务逻辑处理,本发明解决了JAVA应用系统启动后的流控现象,提高了系统可用性。

Description

基于JVM的Java应用系统预热方法及系统
技术领域
本发明涉及JAVA应用系统技术领域,尤其涉及一种基于JVM的Java应用系统预热方法及系统。
背景技术
Java应用在Java虚拟机JVM(Java Virtual Machine)之上运行时,由于引入了Just-in-Time(JIT)即时编译技术,程序代码第一次被执行时才会进行编译,并且当虚拟机发现某个方法或代码块运行的热别频繁时会把这些代码认定为“热点代码”,为提高这些代码执行效率,虚拟机会将这些代码编译成与本地平台相关的机器码并进行各种层次的优化,因此Java应用程序在运行一段时间后性能会达到最佳状态。
JIT机制不可避免的导致了Java应用重启后会有一段预热过程,在预热阶段接入的交易处理响应时间会显著增加,降低系统处理能力。对于商业银行处理借记卡消费、快捷支付、联机代理交易、本外币转账汇划和借记卡转账等高并发交易的系统来说,应用版本发布、服务器宕机重启后的预热过程会使系统处理能力降低,将会对业务产生不可控的影响。
发明内容
本发明的一个目的在于提供一种基于JVM的Java应用系统预热方法,解决了JAVA应用系统启动后的流控现象,提高了系统可用性。本发明的另一个目的在于提供一种基于JVM的Java应用系统预热系统。本发明的再一个目的在于提供一种计算机设备。本发明的还一个目的在于提供一种可读介质。
为了达到以上目的,本发明一方面公开了一种基于JVM的Java应用系统预热方法,包括:
将接收的任务请求报文通过通讯适配器输入请求处理栈;
通过请求处理栈对所述任务请求报文进行框架级处理,其中,在对所述任务请求报文进行报文处理之前,对JAVA应用系统进行预热;
将请求处理栈处理完成的任务请求报文进行业务逻辑处理。
优选的,所述对JAVA应用系统进行预热具体包括:
确定预热完成标志是否为预热完成;
若否,确定接收的任务请求报文是否达到预设阈值;
若是,启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热。
优选的,所述启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热具体包括:
获取异步进程信号量;
形成注册信息并发送至注册中心以修改注册中心服务目录JAVA应用系统的服务权重;
释放信号量。
优选的,所述形成注册信息并发送至注册中心以修改注册中心服务目录的服务权重具体包括:
确定注册中心服务目录的最后修改时间是否为空;
若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重;若否,确定当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间;
若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重,若否,认为JAVA应用系统预热完成。
优选的,进一步包括:
若服务目录JAVA应用系统的服务权重修改失败;
确定修改失败的次数是否已经达到预设失败次数阈值,若是,将预热完成标志修改为预热完成;
若否,每隔预设时间间隔重新向注册中心发送注册信息以修改服务目录JAVA应用系统的服务权重。
优选的,在对所述任务请求报文进行报文处理之前,通过请求处理栈对所述任务请求报文进行框架级处理具体包括:
依次通过接入扩展处理器、服务安全头处理器、流水查询处理器、一致性保护处理器、渠道流水响应处理器和数据服务转换处理器对所述任务请求报文进行框架级处理。
优选的,所述对所述任务请求报文进行报文处理具体包括:
依次通过渠道流水请求处理器、国际化处理器、异常处理器、日志处理器、外呼流水查询处理器、同步冲正处理器、接入流控扩展处理器、流控处理器和监控信息处理器对任务请求报文进行报文处理。
优选的,所述将请求处理栈处理完成的任务请求报文进行业务逻辑处理具体包括:
将请求处理栈处理完成的任务请求报文进行服务调度;
输入服务调度确定的组合服务/应用逻辑处理模块以进行本地逻辑处理或外呼交易处理。
本发明还公开了一种基于JVM的Java应用系统预热系统,包括:
报文接收模块,用于将接收的任务请求报文通过通讯适配器输入请求处理栈;
系统预热模块,用于通过请求处理栈对所述任务请求报文进行框架级处理,其中,在对所述任务请求报文进行报文处理之前,对JAVA应用系统进行预热;
报文处理模块,用于将请求处理栈处理完成的任务请求报文进行业务逻辑处理。
优选的,所述系统预热模块具体用于确定预热完成标志是否为预热完成;若否,确定接收的任务请求报文是否达到预设阈值;若是,启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热。
优选的,所述系统预热模块进一步用于获取异步进程信号量;形成注册信息并发送至注册中心以修改注册中心服务目录JAVA应用系统的服务权重;释放信号量。
优选的,所述系统预热模块进一步用于确定注册中心服务目录的最后修改时间是否为空;若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重;若否,确定当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间;若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重,若否,认为JAVA应用系统预热完成。
优选的,所述系统预热模块进一步用于若服务目录JAVA应用系统的服务权重修改失败;确定修改失败的次数是否已经达到预设失败次数阈值,若是,将预热完成标志修改为预热完成;若否,每隔预设时间间隔重新向注册中心发送注册信息以修改服务目录JAVA应用系统的服务权重。
本发明还公开了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,
所述处理器执行所述程序时实现如上所述方法。
本发明还公开了一种计算机可读介质,其上存储有计算机程序,
该程序被处理器执行时实现如上所述方法。
本发明通过在请求处理栈处理任务请求报文的同时,对JAVA应用系统进行预热。使得JAVA应用系统在高并发情况下依然能够实现高并发任务请求报文的处理,同时与注册中心通信以实现JAVA应用系统的预热。本发明可实现JAVA应用系统从启动到完整提供服务之间的平滑过渡。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出本发明基于JVM的Java应用系统预热方法一个具体实施例的流程图;
图2示出本发明基于JVM的Java应用系统预热方法一个具体实施例S200的流程图;
图3示出本发明基于JVM的Java应用系统预热方法一个具体实施例S230的流程图;
图4示出本发明基于JVM的Java应用系统预热方法一个具体实施例S232的流程图;
图5示出本发明基于JVM的Java应用系统预热方法一个具体实施例S400的流程图;
图6示出本发明基于JVM的Java应用系统预热方法一个具体实施例S300的流程图;
图7示出本发明基于JVM的Java应用系统预热方法一个具体例子的流程图;
图8示出本发明基于JVM的Java应用系统预热系统一个具体实施例的结构图;
图9示出适于用来实现本发明实施例的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
Java使用的JIT编译技术使得执行编译后的代码更快,很好地解决了应用巅峰性能的问题,使得应用在运行一段时间后可以达到性能较好状态,但是JIT技术具有首次编译时耗时较长的天然缺点使得应用刚启动时性能较差,更为严重的有可能导致JVM的CPU负载升高从而使得系统直接宕机,无法提供服务。
在商业银行系统中,服务发现、服务寻址、负载均衡等均通过企业级服务目录即注册中心实现,当应用服务器正常启动后注册到服务目录,此时该服务器可被服务目录发现并开始提供服务,同时发送心跳交易检测服务器存活状态,但此种方式仅可知道服务器是否提供服务,无法得知服务器提供服务的能力。因此,现有技术中应用启动后性能差,响应慢,交易高峰期引起大量交易流控报错,影响业务系统正常运行。若应用系统集群内某单台服务器在高峰期宕机后,只能选择在交易低峰期重启该机器以避免产生报错,影响了业务处理能力。而应用系统版本发布只能选择在交易低峰期进行,无法适应紧急上线的业务需求。
基于此,需要在应用框架内设计和实现这样的技术能力:基于企业级注册中心、负载均衡等技术,建立一套应用启动预热机制,提供可插拔的预热模块,提供可调整的预热参数,帮助应用平稳度过性能较差阶段,不引起流控或其他不可控影响。本发明针对Java应用启动后处理能力较差的缺点,基于企业级系统架构内的注册中心与负载均衡,在系统内集成了一套可插拔及可调整参数的应用预热机制,解决了单台服务器启动后发生流控的现象,使得业务系统在交易高峰期也能正常的执行版本发布,应用重启等操作,提高了系统可用性。本发明针对Java应用启动后处理能力较差的缺点,基于企业级系统架构内的注册中心与负载均衡,在系统内集成了一套可插拔,可调整参数的应用预热模块,解决了单台服务器启动后发生流控的现象,使得业务系统在交易高峰期也能正常的执行版本发布,应用重启等操作,提高了系统可用性。
根据本发明的一个方面,本实施例公开了一种基于JVM的Java应用系统预热方法。如图1所示,本实施例中,所述方法包括:
S100:将接收的任务请求报文通过通讯适配器输入请求处理栈。
S200:通过请求处理栈对所述任务请求报文进行框架级处理,其中,在对所述任务请求报文进行报文处理之前,对JAVA应用系统进行预热。
S300:将请求处理栈处理完成的任务请求报文进行业务逻辑处理。
本发明通过在请求处理栈处理任务请求报文的同时,对JAVA应用系统进行预热。使得JAVA应用系统在高并发情况下依然能够实现高并发任务请求报文的处理,同时与注册中心通信以实现JAVA应用系统的预热。本发明可实现JAVA应用系统从启动到完整提供服务之间的平滑过渡。
在优选的实施方式中,如图2所示,所述S200对JAVA应用系统进行预热具体包括:
S210:确定预热完成标志是否为预热完成。
S220:若否,确定接收的任务请求报文是否达到预设阈值。
S230:若是,启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热。
具体的,在对JAVA应用系统进行预热时,可设置预热完成标志。每次预热完成后将预热完成标志设置为预热完成,而当系统升级或重启时,预热完成标志会重置为初始值。从而,当检测得到预热完成标志不是预热完成,则表示JAVA应用系统未预热,需要对接收的任务请求报文的数量进行监控,若接收的任务请求报文的数量达到预设阈值,表示JAVA应用系统注册至服务目录的过程慢,导致任务请求报文的处理进程缓慢,大量的任务请求报文堆积,从而应用系统在高并发时处理性能差,响应慢。基于未处理的任务请求报文的数量达到预设阈值的情况,可启动异步进程向注册中心发送注册信息,将JAVA应用系统向注册中心的服务目录登记,使注册中心可正常的任务均衡,向JAVA应用系统正常派发任务,保证JAVA应用系统的正常运行,提高JAVA应用系统的业务处理能力。
在优选的实施方式中,如图3所示,所述S230中启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热具体包括:
S231:获取异步进程信号量。
S232:形成注册信息并发送至注册中心以修改注册中心服务目录JAVA应用系统的服务权重。
S233:释放信号量。
具体的,为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。其中共享内存的使用就要用到信号量。
因此,在该优选的实施方式中,为了保证只存在一个异步进程与注册中心进行通信。首先,设置异步进程的信号量,然后,形成注册信息并发送至注册中心,以使注册中心可以获知本JAVA应用系统的可用性,获知JAVA应用系统已经启动,可以向该JAVA应用系统派发任务。其中,注册信息可包括JAVA应用系统的IP地址和访问地址等信息,以使注册中心根据该注册信息修改服务目录中该JAVA应用系统的权重。可以理解的是,服务目录中,JAVA应用系统的权重越高,表示可均衡至该JAVA应用系统的任务越多,从而能够提高JAVA应用系统在启动后短时间内的处理能力,提高系统可用性能。当服务权重修改完成后,表示JAVA应用系统的预热已经完成,可以关闭该异步进程,从而可在服务权重修改后释放信号量,结束进程。进一步的,还需将预热完成标志修改为预热完成,防止重复注册。
当应用启动后注册服务目录JAVA应用系统的服务权重为低权重,此时通过负载均衡接入的流量比正常流量明显减少,此时为系统预热时间。现有技术中需等待应用预热完成后再对任务请求报文进行处理,而本申请中,通过异步进行恢复权重交易至服务目录,恢复此台服务器的高流量接入完成预热,在不影响任务处理的同时完成预热,防止系统启动后的流控现象,提高系统的性能和处理能力。在一个具体例子中,例如,当JAVA应用系统启动后,此时,注册中心服务目录初始服务权重为low(20),之后累加接入的交易笔数(任务请求报文),当达到配置文件内配置的预热交易笔数(预设阈值)时,本实施例中,预热交易笔数是200笔。即当接入的交易笔数达到200笔时,启动异步进程,形成恢复权重为medium(50)的注册信息并发送至注册中心以修改服务权重,服务权重修改成功后设置预热完成标志为true,此后接入交易不再进行系统预热。
在优选的实施方式中,如图4所示,所述S232形成注册信息并发送至注册中心以修改注册中心服务目录的服务权重具体包括:
S2321:确定注册中心服务目录的最后修改时间是否为空。
S2322:若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重;若否,确定当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间。
S2323:若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重,若否,认为JAVA应用系统预热完成。
具体的,可以理解的是,在该优选的实施方式中,可根据服务目录中JAVA应用系统服务权重的修改时间进一步确定JAVA应用系统是否已在服务目录中注册。若服务目录关于该JAVA应用系统服务权重的最后修改时间为空,或者当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间,即当前时间>=上次修改服务目录时间+调用服务目录次数×基准时间,表示当前时间的服务权重修改为最新的修改请求,则继续进行服务权重的修改。
在优选的实施方式中,如图5所示,进一步包括S400:
S410:若服务目录JAVA应用系统的服务权重修改失败。
S420:确定修改失败的次数是否已经达到预设失败次数阈值,若是,将预热完成标志修改为预热完成。
S430:若否,每隔预设时间间隔重新向注册中心发送注册信息以修改服务目录JAVA应用系统的服务权重。
具体的,当服务权重修改失败时,可每隔预设时间间隔重新向注册中心发送注册信息以重新请求服务权重的修改。同时,记录请求修改服务权重失败的次数,当失败次数大于等于预设次数阈值时,可能注册中心出现失联等问题,则停止修改服务目录JAVA应用系统的服务权重。可在一定时间之后再次向注册发送注册信息以修改服务目录JAVA应用系统的服务权重。例如,在一个具体例子中,若权重修改失败,可每隔5秒(预设时间间隔)发送注册信息以重新请求修改服务权重,若修改失败的次数已经10次(预设失败次数阈值),则将预热完成标志修改为预热完成。需要说明的是,本实施例中,预设时间间隔、预设失败次数阈值及预设阈值等参数均可参数化调整,可以根据应用实际情况灵活设置,本发明对此并不作限定。
在优选的实施方式中,在对所述任务请求报文进行报文处理之前,通过请求处理栈对所述任务请求报文进行框架级处理具体包括:
S240:依次通过接入扩展处理器、服务安全头处理器、流水查询处理器、一致性保护处理器、渠道流水响应处理器和数据服务转换处理器对所述任务请求报文进行框架级处理。
具体的,请求处理栈内可进行一系列除业务实现外的所有交易公用的框架级处理。在对所述任务请求报文进行报文处理之前,需要依次通过接入扩展处理器、服务安全头处理器、流水查询处理器、一致性保护处理器、渠道流水响应处理器和数据服务转换处理器对所述任务请求报文进行框架级处理。其中,接入扩展处理器用于执行输入和输出响应报文处理,如输出异常交易日志等处理过程。服务安全头处理器用于执行解析安全报文头等处理过程。流水查询处理器用于若是流水查询交易,则直接查询流水表返回报文。一致性保护处理器用于处理流控熔断机制。渠道流水响应处理器用于执行渠道响应流水更新操作,如异步冲正流水表更新等处理过程。数据服务转换处理器用于执行输入和输出报文数据转换到交换区。可以理解的是,该一系列框架级处理过程为本领域的常规技术手段,本领域技术人员可根据实际需求进行灵活设置,本实施例在此不再赘述。
在优选的实施方式中,所述S200对所述任务请求报文进行报文处理具体包括:
S250:依次通过渠道流水请求处理器、国际化处理器、异常处理器、日志处理器、外呼流水查询处理器、同步冲正处理器、接入流控扩展处理器、流控处理器和监控信息处理器对任务请求报文进行报文处理。
具体的,在应用系统预热的同时,可进行任务请求报文的处理,从而使预热过程不影响正常的任务处理。其中,渠道流水请求处理器用于执行渠道请求流水新增操作等操作。国际化处理器用于执行国际化字段处理等操作。异常处理器用于执行捕获交易异常、判断是否抛出以及是否打日志等操作。日志处理器用于执行动态日志级别设置等操作。外呼流水查询处理器用于执行若是外呼流水查询交易,则直接查询外呼流水表返回报文等操作。同步冲正处理器用于执行同步冲正交易处理等操作。接入流控扩展处理器用于执行流控资源组判断等操作。流控处理器用于执行流控检查等操作,若流控则抛出异常。监控信息处理器用于执行输出监控日志等操作。可以理解的是,该报文处理过程为本领域的常规技术手段,本领域技术人员可根据实际需求进行灵活设置,本实施例在此不再赘述。
在优选的实施方式中,如图6所示,所述S300将请求处理栈处理完成的任务请求报文进行业务逻辑处理具体可包括:
S310:将请求处理栈处理完成的任务请求报文进行服务调度。
S320:输入服务调度确定的组合服务/应用逻辑处理模块以进行本地逻辑处理或外呼交易处理。
具体的,现有系统交易接入流程为http请求报文通过通讯适配器后接入请求处理栈处理,处理完成后进行业务逻辑处理。可以理解的是,该业务逻辑处理过程为本领域的常规技术手段,本领域技术人员可根据实际需求进行灵活设置,本实施例在此不再赘述。
下面通过一个具体例子来对本发明作进一步的说明。如图7所示,该具体例子中,当执行JAVA应用系统预热的应用预热处理器开始执行时,首先确定预热完成标志是否为预热完成。若是,表示不需要预热,则返回(return)。根据预热完成标志是否为预热完成确定是否需要预热,若否,则表示预热完成,返回。若是,则统计交易接入数量,即统计接收的任务请求报文的数量,确定交易接入数量是否大于等于预设阈值。
若交易接入数据大于等于预设阈值,则表示系统预热过慢导致大量的交易没有及时处理,需要启动异步进行实现系统预热。即获取信号量锁定异步进程,若获取不成功,则返回。确定预热完成标志不存在或预热未完成时,进一步确定当前时间是否正常。即确定注册中心服务目录的最后修改时间是否为空;若是,将当前时间作为服务目录的最后修改时间,并向服务目录发起权重修改请求,修改服务目录JAVA应用系统的服务权重;若否,确定当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间;若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重,若否,认为JAVA应用系统预热完成。若服务权重修改成功后,修改预热完成标示为预热完成,并释放信号量,停止异步进程。
本发明的应用预热方法,运维人员可根据生产实际状况灵活调整应用预热的预设阈值和权重等参数,达到应用从启动到完整提供服务之间平滑过渡的目的。本发明可使应用在高并发情况下能准确计算流量并恢复权重,并在与注册中心失联情况下一段时间后自动发起重试恢复权重,减少人工干预与风险。并且,本发明的预热机制对应用无侵入,应用开发无感知。
基于相同原理,本实施例还公开了一种基于JVM的Java应用系统预热系统。如图8所示,本实施例中,所述系统包括报文接收模块11、系统预热模块12和报文处理模块13。
报文接收模块11用于将接收的任务请求报文通过通讯适配器输入请求处理栈。
系统预热模块12用于通过请求处理栈对所述任务请求报文进行框架级处理,其中,在对所述任务请求报文进行报文处理之前,对JAVA应用系统进行预热。
报文处理模块13用于将请求处理栈处理完成的任务请求报文进行业务逻辑处理。
可以理解的是,本发明的JAVA应用系统的预热系统可设置为可插拔式的应用预热处理器,高可用恢复负载均衡权重,确保应用在启动短时间即可恢复注册中心负载权重,无需修改底层JDK、JVM代码即可帮助应用快速实现应用预热功能,并可设置为选择性的使用应用预热功能。
在优选的实施方式中,所述系统预热模块12具体用于确定预热完成标志是否为预热完成;若否,确定接收的任务请求报文是否达到预设阈值;若是,启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热。
在优选的实施方式中,所述系统预热模块12进一步用于获取异步进程信号量;形成注册信息并发送至注册中心以修改注册中心服务目录JAVA应用系统的服务权重;释放信号量。
在优选的实施方式中,所述系统预热模块12进一步用于确定注册中心服务目录的最后修改时间是否为空;若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重;若否,确定当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间;若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重,若否,认为JAVA应用系统预热完成。
在优选的实施方式中,所述系统预热模块进一步用于若服务目录JAVA应用系统的服务权重修改失败;确定修改失败的次数是否已经达到预设失败次数阈值,若是,将预热完成标志修改为预热完成;若否,每隔预设时间间隔重新向注册中心发送注册信息以修改服务目录JAVA应用系统的服务权重。
由于该系统解决问题的原理与以上方法类似,因此本系统的实施可以参见方法的实施,在此不再赘述。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机设备,具体的,计算机设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中计算机设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的由客户端执行的方法,或者,所述处理器执行所述程序时实现如上所述的由服务器执行的方法。
下面参考图9,其示出了适于用来实现本申请实施例的计算机设备600的结构示意图。
如图9所示,计算机设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶反馈器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包括用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (15)

1.一种基于JVM的Java应用系统预热方法,其特征在于,包括:
将接收的任务请求报文通过通讯适配器输入请求处理栈;
通过请求处理栈对所述任务请求报文进行框架级处理,其中,在对所述任务请求报文进行报文处理之前,对JAVA应用系统进行预热;
将请求处理栈处理完成的任务请求报文进行业务逻辑处理。
2.根据权利要求1所述的Java应用系统预热方法,其特征在于,所述对JAVA应用系统进行预热具体包括:
确定预热完成标志是否为预热完成;
若否,确定接收的任务请求报文是否达到预设阈值;
若是,启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热。
3.根据权利要求2所述的Java应用系统预热方法,其特征在于,所述启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热具体包括:
获取异步进程信号量;
形成注册信息并发送至注册中心以修改注册中心服务目录JAVA应用系统的服务权重;
释放信号量。
4.根据权利要求3所述的Java应用系统预热方法,其特征在于,所述形成注册信息并发送至注册中心以修改注册中心服务目录的服务权重具体包括:
确定注册中心服务目录的最后修改时间是否为空;
若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重;若否,确定当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间;
若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重,若否,认为JAVA应用系统预热完成。
5.根据权利要求2所述的Java应用系统预热方法,其特征在于,进一步包括:
若服务目录JAVA应用系统的服务权重修改失败;
确定修改失败的次数是否已经达到预设失败次数阈值,若是,将预热完成标志修改为预热完成;
若否,每隔预设时间间隔重新向注册中心发送注册信息以修改服务目录JAVA应用系统的服务权重。
6.根据权利要求2所述的Java应用系统预热方法,其特征在于,在对所述任务请求报文进行报文处理之前,通过请求处理栈对所述任务请求报文进行框架级处理具体包括:
依次通过接入扩展处理器、服务安全头处理器、流水查询处理器、一致性保护处理器、渠道流水响应处理器和数据服务转换处理器对所述任务请求报文进行框架级处理。
7.根据权利要求2所述的Java应用系统预热方法,其特征在于,所述对所述任务请求报文进行报文处理具体包括:
依次通过渠道流水请求处理器、国际化处理器、异常处理器、日志处理器、外呼流水查询处理器、同步冲正处理器、接入流控扩展处理器、流控处理器和监控信息处理器对任务请求报文进行报文处理。
8.根据权利要求2所述的Java应用系统预热方法,其特征在于,所述将请求处理栈处理完成的任务请求报文进行业务逻辑处理具体包括:
将请求处理栈处理完成的任务请求报文进行服务调度;
输入服务调度确定的组合服务/应用逻辑处理模块以进行本地逻辑处理或外呼交易处理。
9.一种基于JVM的Java应用系统预热系统,其特征在于,包括:
报文接收模块,用于将接收的任务请求报文通过通讯适配器输入请求处理栈;
系统预热模块,用于通过请求处理栈对所述任务请求报文进行框架级处理,其中,在对所述任务请求报文进行报文处理之前,对JAVA应用系统进行预热;
报文处理模块,用于将请求处理栈处理完成的任务请求报文进行业务逻辑处理。
10.根据权利要求9所述的Java应用系统预热系统,其特征在于,所述系统预热模块具体用于确定预热完成标志是否为预热完成;若否,确定接收的任务请求报文是否达到预设阈值;若是,启动异步进程向注册中心发送注册信息以完成JAVA应用系统预热。
11.根据权利要求10所述的Java应用系统预热系统,其特征在于,所述系统预热模块进一步用于获取异步进程信号量;形成注册信息并发送至注册中心以修改注册中心服务目录JAVA应用系统的服务权重;释放信号量。
12.根据权利要求11所述的Java应用系统预热系统,其特征在于,所述系统预热模块进一步用于确定注册中心服务目录的最后修改时间是否为空;若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重;若否,确定当前时间是否大于最后修改时间加上最后修改时间后调用服务次数所需的时间;若是,将当前时间作为服务目录的最后修改时间,并修改服务目录JAVA应用系统的服务权重,若否,认为JAVA应用系统预热完成。
13.根据权利要求10所述的Java应用系统预热系统,其特征在于,所述系统预热模块进一步用于若服务目录JAVA应用系统的服务权重修改失败;确定修改失败的次数是否已经达到预设失败次数阈值,若是,将预热完成标志修改为预热完成;若否,每隔预设时间间隔重新向注册中心发送注册信息以修改服务目录JAVA应用系统的服务权重。
14.一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,
所述处理器执行所述程序时实现如权利要求1-8任一项所述方法。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,
该程序被处理器执行时实现如权利要求1-8任一项所述方法。
CN202011036379.3A 2020-09-27 2020-09-27 基于JVM的Java应用系统预热方法及系统 Active CN112099921B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011036379.3A CN112099921B (zh) 2020-09-27 2020-09-27 基于JVM的Java应用系统预热方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011036379.3A CN112099921B (zh) 2020-09-27 2020-09-27 基于JVM的Java应用系统预热方法及系统

Publications (2)

Publication Number Publication Date
CN112099921A true CN112099921A (zh) 2020-12-18
CN112099921B CN112099921B (zh) 2024-07-23

Family

ID=73782405

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011036379.3A Active CN112099921B (zh) 2020-09-27 2020-09-27 基于JVM的Java应用系统预热方法及系统

Country Status (1)

Country Link
CN (1) CN112099921B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114710494A (zh) * 2022-04-22 2022-07-05 中国工商银行股份有限公司 应用管理方法、装置和存储介质
CN114971079A (zh) * 2022-06-29 2022-08-30 中国工商银行股份有限公司 秒杀型交易处理优化方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140372703A1 (en) * 2013-06-14 2014-12-18 Nvidia Corporation System, method, and computer program product for warming a cache for a task launch
CN108134766A (zh) * 2016-12-01 2018-06-08 阿里巴巴集团控股有限公司 一种服务发布的方法、装置、系统、服务器及客户端
US20180365036A1 (en) * 2017-06-19 2018-12-20 Salesforce.Com, Inc. Application warmup engine
CN109284236A (zh) * 2018-08-28 2019-01-29 北京三快在线科技有限公司 数据预热方法、装置、电子设备及存储介质
CN110413395A (zh) * 2019-07-30 2019-11-05 中国工商银行股份有限公司 服务调用预热方法、装置、设备及存储介质
CN110933152A (zh) * 2019-11-21 2020-03-27 北京奇艺世纪科技有限公司 一种预热方法、装置、系统及电子设备
CN111491015A (zh) * 2020-03-31 2020-08-04 北京金山云网络技术有限公司 预热任务处理方法及系统、代理服务器、服务中心

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140372703A1 (en) * 2013-06-14 2014-12-18 Nvidia Corporation System, method, and computer program product for warming a cache for a task launch
CN108134766A (zh) * 2016-12-01 2018-06-08 阿里巴巴集团控股有限公司 一种服务发布的方法、装置、系统、服务器及客户端
US20180365036A1 (en) * 2017-06-19 2018-12-20 Salesforce.Com, Inc. Application warmup engine
CN109284236A (zh) * 2018-08-28 2019-01-29 北京三快在线科技有限公司 数据预热方法、装置、电子设备及存储介质
CN110413395A (zh) * 2019-07-30 2019-11-05 中国工商银行股份有限公司 服务调用预热方法、装置、设备及存储介质
CN110933152A (zh) * 2019-11-21 2020-03-27 北京奇艺世纪科技有限公司 一种预热方法、装置、系统及电子设备
CN111491015A (zh) * 2020-03-31 2020-08-04 北京金山云网络技术有限公司 预热任务处理方法及系统、代理服务器、服务中心

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114710494A (zh) * 2022-04-22 2022-07-05 中国工商银行股份有限公司 应用管理方法、装置和存储介质
CN114971079A (zh) * 2022-06-29 2022-08-30 中国工商银行股份有限公司 秒杀型交易处理优化方法和装置
CN114971079B (zh) * 2022-06-29 2024-05-28 中国工商银行股份有限公司 秒杀型交易处理优化方法和装置

Also Published As

Publication number Publication date
CN112099921B (zh) 2024-07-23

Similar Documents

Publication Publication Date Title
US20210203751A1 (en) Methods, systems, and devices for electronic note identifier allocation and electronic note generation
CN111784329B (zh) 业务数据的处理方法和装置、存储介质、电子装置
CN107436799B (zh) 分布式事务一致性实现方法及装置
CN112099921A (zh) 基于JVM的Java应用系统预热方法及系统
CN109819023B (zh) 分布式事务处理方法及相关产品
TWI839875B (zh) 支付方法、使用者終端、裝置、設備、系統及介質
US20230259930A1 (en) Cross-chain transaction processing method and apparatus, electronic device, and storage medium
CN107147610B (zh) 资源的处理方法及装置
CN111078468A (zh) 微服务架构下的服务回滚方法及装置
CN111695901B (zh) 账务凭证处理方法、装置、设备及存储介质
CN108632321A (zh) 基于大数据平台下资源调度的处理方法和装置
CN111796854B (zh) 一种模块热升级的方法、装置、电子设备和可读存储介质
US20210240698A1 (en) Asynchronous remote calls with undo data structures
CN114390109A (zh) 一种业务处理方法、微服务网关及数据中心系统
CN111737262A (zh) 一种数据处理方法及装置
CN112950171A (zh) 一种银行业务处理系统及方法
CN112380128A (zh) 智能合约的自动测试方法、装置、计算机设备和存储介质
CN111797074A (zh) 一种数据库连接方法、装置、电子设备和可读存储介质
CN110827009B (zh) 一种基于账户余额限制的资金转移方法及装置
TW201931114A (zh) 業務處理、扣款方法及裝置
CN112994894B (zh) 基于网关的单线程请求处理方法和信息验证agent
CN117827916A (zh) 一种支付结果获取方法、装置、设备及存储介质
CN111901380B (zh) 一种请求处理方法、装置、设备及存储介质
CN114637758B (zh) 一种交易处理的方法和装置
CN105022622B (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