CN113986379B - 一种应用启动方法、装置、计算机设备和存储介质 - Google Patents

一种应用启动方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113986379B
CN113986379B CN202111249093.8A CN202111249093A CN113986379B CN 113986379 B CN113986379 B CN 113986379B CN 202111249093 A CN202111249093 A CN 202111249093A CN 113986379 B CN113986379 B CN 113986379B
Authority
CN
China
Prior art keywords
target application
starting
application
port
user
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
CN202111249093.8A
Other languages
English (en)
Other versions
CN113986379A (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.)
Douyin Vision Co Ltd
Original Assignee
Douyin Vision 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 Douyin Vision Co Ltd filed Critical Douyin Vision Co Ltd
Priority to CN202111249093.8A priority Critical patent/CN113986379B/zh
Publication of CN113986379A publication Critical patent/CN113986379A/zh
Application granted granted Critical
Publication of CN113986379B publication Critical patent/CN113986379B/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/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • 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/45562Creating, deleting, cloning virtual machine instances
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种应用启动方法、装置、计算机设备和存储介质,其中,该方法包括:在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听;在HTTP端口监听完成的情况下,对目标应用对应的回调函数的获取方式进行修改;响应于用户发起的针对目标应用的启动请求,利用修改后的获取方式获取所述回调函数,并在目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的HTTP端口分配给目标应用,确定目标应用启动完成。本公开实施例通过预先处理部分流程、以及修改回调函数的获取方式的方式,既保证了目标应用可以成功启动,还可以减少目标应用的启动时间。

Description

一种应用启动方法、装置、计算机设备和存储介质
技术领域
本公开涉及应用开发技术领域,具体而言,涉及一种应用启动方法、装置、计算机设备和存储介质。
背景技术
现有技术中,针对HTTP(Hyper Text Transfer Protocol,超文本传输协议)服务类型的Node.js应用的启动,启动过程大致可以按照以下流程实施:接收应用启动请求、启动Node.js应用对应的应用服务进程、运行应用服务进程中的组件代码、加载Node.js应用对应的用户代码、开启socket连接、建立HTTP端口和Node.js应用之间的连接并完成HTTP端口的监听。在确定分配给Node.js应用的HTTP端口被成功监听的情况下,确定Node.js应用启动。
但是,上述启动流程不仅存在启动时间较长的弊端,还造成用户等待应用启动请求返回的时间较长的问题,降低了用户的使用体验。
发明内容
本公开实施例至少提供一种应用启动方法、装置、计算机设备和存储介质。
第一方面,本公开实施例提供了一种应用启动方法,包括:
在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听;
在所述HTTP端口监听完成的情况下,对所述目标应用对应的回调函数的获取方式进行修改;
响应于用户发起的针对目标应用的启动请求,利用修改后的所述获取方式获取所述回调函数,并在所述目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的所述HTTP端口分配给所述目标应用,确定所述目标应用启动完成。
在一种可能的实施方式中,在所述对超文本传输协议HTTP端口进行监听之前,还包括:
启动所述目标应用对应的应用服务进程,并运行所述应用服务进程中的各个内部组件对应的组件代码;
开启端口连接服务,其中,所述端口连接服务用于建立所述目标应用和HTTP端口之间的连接。
在一种可能的实施方式中,所述对所述目标应用对应的回调函数的获取方式进行修改,包括:
从所述内部组件对应的组件代码中,确定所述回调函数的获取方式对应的子代码;
基于获取的新的对象变量,对所述获取方式对应的所述子代码进行修改,得到修改后的获取方式。
在一种可能的实施方式中,所述响应于用户发起的针对目标应用的启动请求,利用修改后的所述获取方式获取所述回调函数,包括:
响应于所述用户发起的针对所述目标应用的启动请求,在应用服务进程中加载并执行所述用户代码;
在执行所述用户代码的过程中,利用修改后的所述获取方式获取所述用户代码中的回调函数。
在一种可能的实施方式中,在获取所述回调函数之后,还包括:
将所述新的对象变量反馈给用户端。
在一种可能的实施方式中,所述将当前监听的所述HTTP端口分配给所述目标应用,包括:
利用所述端口连接服务,建立当前监听的所述HTTP端口和所述目标应用之间的连接。
在一种可能的实施方式中,在所述确定所述应用服务启动完成之后,还包括:
响应于接收到的用户处理请求,执行所述回调函数,得到所述用户处理请求对应的执行结果;
利用所述HTTP端口和所述应用服务之间的连接,将所述执行结果发送至所述HTTP端口;
利用所述HTTP端口将所述执行结果反馈给用户端。
第二方面,本公开实施例还提供一种应用启动装置,包括:
启动模块,用于在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听;
修改模块,用于在所述HTTP端口监听完成的情况下,对所述目标应用对应的回调函数的获取方式进行修改;
执行模块,用于响应于用户发起的针对目标应用的启动请求,利用修改后的所述获取方式获取所述回调函数,并在所述目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的所述HTTP端口分配给所述目标应用,确定所述目标应用启动完成。
在一种可能的实施方式中,所述启动模块,还用于在所述对超文本传输协议HTTP端口进行监听之前,启动所述目标应用对应的应用服务进程,并运行所述应用服务进程中的各个内部组件对应的组件代码;
开启端口连接服务,其中,所述端口连接服务用于建立所述目标应用和HTTP端口之间的连接。
在一种可能的实施方式中,所述修改模块,用于从所述内部组件对应的组件代码中,确定所述回调函数的获取方式对应的子代码;
基于获取的新的对象变量,对所述获取方式对应的所述子代码进行修改,得到修改后的获取方式。
在一种可能的实施方式中,所述执行模块,用于响应于所述用户发起的针对所述目标应用的启动请求,在应用服务进程中加载并执行所述用户代码;
在执行所述用户代码的过程中,利用修改后的所述获取方式获取所述用户代码中的回调函数。
在一种可能的实施方式中,所述执行模块,还用于在获取所述回调函数之后,将所述新的对象变量反馈给用户端。
在一种可能的实施方式中,所述执行模块,用于利用所述端口连接服务,建立当前监听的所述HTTP端口和所述目标应用之间的连接。
在一种可能的实施方式中,所述装置还包括:
处理模块,用于在所述确定所述应用服务启动完成之后,响应于接收到的用户处理请求,执行所述回调函数,得到所述用户处理请求对应的执行结果;
利用所述HTTP端口和所述应用服务之间的连接,将所述执行结果发送至所述HTTP端口;
利用所述HTTP端口将所述执行结果反馈给用户端。
第三方面,本公开可选实现方式还提供一种计算机设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述应用启动装置、计算机设备、及计算机可读存储介质的效果描述参见上述应用启动方法的说明,这里不再赘述。
本公开实施例提供的应用启动方法、装置、计算机设备和存储介质,通过在目标服务容器中预先启动目标应用对应的启动进程并提前对端口进行监听,可以在用户发起针对目标应用的启动请求,在预先启动的启动进程中实现对目标应用的启动,实现在同进程内加载目标应用对应的用户代码;基于提前修改目标应用对应的回调函数的获取方式,利用修改后的回调函数的获取方式获取目标应用对应的回调函数,能够保证预先启动的启动进程可以准确地获取目标应用对应的回调函数,便于后续基于回调函数,对用户的处理请求进行响应;通过将当前监听的端口分配给目标应用,完成目标应用的启动过程,减少了等待端口监听完成的时间浪费,提高了启动效率;相比于现有技术中的应用启动流程而言,本公开实施例通过预先处理部分流程、以及修改回调函数的获取方式的方式,既保证了目标应用可以成功启动,还可以减少目标应用的启动时间。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种现有的应用启动流程示意图;
图2示出了本公开实施例所提供的一种应用启动方法的流程图;
图3示出了本公开实施例所提供的一种启动目标应用的具体实施流程图;
图4示出了本公开实施例所提供的一种应用启动装置的示意图;
图5示出了本公开实施例所提供的一种计算机设备结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
另外,本公开实施例中的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。
在本文中提及的“多个或者若干个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
经研究发现,现有技术中,针对HTTP(Hyper Text Transfer Protocol,超文本传输协议)服务类型的Node.js应用的启动,启动过程大致可以按照如图1所示流程实施,如图1所示,为本公开实施例所提供的一种现有的应用启动流程示意图,具体的可以包括以下步骤:S101:接收应用启动请求、S102:启动Node.js应用对应的应用服务进程、S103:运行应用服务进程中的组件代码、S104:加载Node.js应用对应的用户代码、S105:开启socket连接、S106:建立HTTP端口和Node.js应用之间的连接并完成HTTP端口的监听。在确定分配给Node.js应用的HTTP端口被成功监听的情况下,确定Node.js应用启动。
但是,上述启动流程不仅存在启动时间较长的弊端,还造成用户等待应用启动请求返回的时间较长的问题,降低了用户的使用体验。
基于上述研究,本公开提供了一种应用启动方法、装置、计算机设备和存储介质,通过在目标服务容器中预先启动目标应用对应的启动进程并提前对端口进行监听,可以在用户发起针对目标应用的启动请求,在预先启动的启动进程中实现对目标应用的启动,实现在同进程内加载目标应用对应的用户代码;基于提前修改目标应用对应的回调函数的获取方式,利用修改后的回调函数的获取方式获取目标应用对应的回调函数,能够保证预先启动的启动进程可以准确地获取目标应用对应的回调函数,便于后续基于回调函数,对用户的处理请求进行响应;通过将当前监听的端口分配给目标应用,完成目标应用的启动过程,减少了等待端口监听完成的时间浪费,提高了启动效率;相比于现有技术中的应用启动流程而言,本公开实施例通过预先处理部分流程、以及修改回调函数的获取方式的方式,既保证了目标应用可以成功启动,还可以减少目标应用的启动时间。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,本公开实施例中所提到的特定名词包括:
Docker容器:是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上,也可以实现虚拟化;
Node.js:是一个基于Chrome V8引擎的JavaScript运行时;
Handler:主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,而另外一个部分在消息队列中逐一将消息取出,然后对消息进行处理,也就是发送消息和接收消息不是同步的处理;
http.createServer方式:用来创建一个HTTP服务器,并将requestListener作为request请求事件的监听函数;
requestListener:用于对Request请求进行监听;
Socket,套接字,是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议进行交互的接口;
Monkey Patch:猴子补丁,用于在组件代码运行时替换方法、属性等;用于在不修改第三方代码(用户代码)的情况下增加原来不支持的功能;以及用于在运行时为内存中的对象增加patch而不是在磁盘的源代码中增加。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种应用启动方法进行详细介绍,本公开实施例所提供的应用启动方法的执行主体一般为具有一定计算能力的计算机设备,在一些可能的实现方式中,该应用启动方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
下面对本公开实施例提供的应用启动方法加以详细说明。
如图2所示,为本公开实施例提供的一种应用启动方法的流程图,可以包括以下步骤:
S201:在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听。
这里,目标服务容器是一种用于启动目标应用的服务容器,为预先分配好的服务容器,具体的,目标服务容器可以为docker容器。目标应用可以为预先开发的任一基于node.js服务的node.js应用。
目标应用对应的启动进程是一种启动任一种目标应用所需的必要进程,也即,针对任一目标应用的启动,都需要先开启启动进程,在开启目标应用对应的启动进程的情况下,后续才可以使用目标服务容器启动目标应用。具体实施时,目标应用对应的启动进程可以为启动目标服务容器的进程。
HTTP端口为一种可以分配给任一目标应用的端口,在将HTTP端口分配给目标应用之后,可以通过该端口对该目标应用进行监听,以获取目标应用的行为信息并反馈给用户,例如,获取应用反馈的页面并反馈给用户、获取应用执行的结果并反馈给用户等等。
具体实施时,可以存在预先分配的预设数量的目标服务容器,针对每个目标服务容器,可以在该目标服务容器中启动目标应用对应的启动进程,并在当前空闲的所有HTTP端口中,随机为该目标服务容器分配一个对应的HTTP端口,并对该HTTP端口进行监听。
这里,在当前空闲的所有HTTP端口中可以为服务端对应的当前空闲的所有HTTP端口,空闲的HTTP端口指未被监听的端口,或未被分配给已启动的目标应用或其他服务的端口。
基于上述步骤,可以实现在每个目标服务容器中均启动目标应用对应的启动进程,并对分配给每个目标服务容器的HTTP端口进行监听,从而,得到多个可以用于后续启动目标应用的目标服务容器。
S202:在HTTP端口监听完成的情况下,对目标应用对应的回调函数的获取方式进行修改。
这里,目标应用对应的回调函数的获取方式用于获取目标应用的回调函数,具体的,回调函数的获取方式可以为http.createServer方式。
回调函数用于对启动后的目标应用进行回调,进而,基于对启动后的目标应用的回调,可以实现对用户使用目标应用的请求的响应,具体的,回调函数可以是handler回调函数。
具体实施时,对HTTP端口进行监听的过程,需要花费一定的时间,因此,在确定分配给目标服务容器的HTTP端口监听完成的情况下,可以保证已经目标服务容器中已经存在了后续可以直接分配给需要启动的目标应用的端口。
进一步的,可以目标应用对应的回调函数的获取方式进行修改,也即可以对目标应用对应的http.createServer方式进行修改。
这里,对目标应用对应的回调函数的获取方式进行修改,可以保证后续基于目标服务容器启动目标应用时,能够准确的获取到目标应用对应回调函数。
S203:响应于用户发起的针对目标应用的启动请求,利用修改后的获取方式获取回调函数,并在目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的HTTP端口分配给目标应用,确定目标应用启动完成。
这里,针对目标应用的启动请求可以为用户发起的、使用目标应用的请求。不同的目标应用对应的用户代码不同,用户代码中包括原始的获取回调函数的http.createServer方式以及端口监听代码,其中,原始的获取回调函数的http.createServer方式用于在现有技术中的启动流程中获取回调函数,端口监听代码用于为目标应用分配HTTP端口以及,对端口进行监听。
本步骤在具体实施时,当用户发起针对目标应用的启动请求之后,服务端可以换取到该启动请求,并对该启动请求进行响应。然后,可以从预先启动的多个目标服务容器中,随机为该启动请求对应的目标应用分配一个目标服务容器,并在该目标服务容器中执行目标应用对应的用户代码,在执行到获取回调函数的http.createServer方式对应的代码时,可以利用修改后的获取方式获取回调函数,也即利用修改后的http.createServer方式获取回调函数;之后,可以获取到目标应用对应的回调函数。
进一步的,可以继续执行用户代码,在确定执行至用户代码中的端口监听代码的情况下,将该目标服务容器对应的监听完成的HTTP端口分配给该目标应用,并在建立该HTTP端口和目标应用的连接之后,确定目标应用启动完成。这里,由于该目标服务容器对应的监听完成的HTTP端口已经监听完成,所以只需要直接建立目标应用和该HTTP端口的连接,即可实现利用该HTTP端口获取目标应用的行为信息。
这样,通过在目标服务容器中预先启动目标应用对应的启动进程并提前对端口进行监听,可以在用户发起针对目标应用的启动请求,在预先启动的启动进程中实现对目标应用的启动,实现在同进程内加载目标应用对应的用户代码;基于提前修改目标应用对应的回调函数的获取方式,利用修改后的回调函数的获取方式获取目标应用对应的回调函数,能够保证预先启动的启动进程可以准确地获取目标应用对应的回调函数,便于后续基于回调函数,对用户的处理请求进行响应;通过将当前监听的端口分配给目标应用,完成目标应用的启动过程,减少了等待端口监听完成的时间浪费,提高了启动效率;相比于现有技术中的应用启动流程而言,本公开实施例通过预先处理部分流程、以及修改回调函数的获取方式的方式,既保证了目标应用可以成功启动,还可以减少目标应用的启动时间。
在一种实施例中,在对超文本传输协议HTTP端口进行监听之前,还需要启动目标应用对应的应用服务进程,并运行应用服务进程中的各个内部组件对应的组件代码。
这里,目标应用对应的应用服务进程也为启动任一目标应用所必须的进程,具体的,由于目标应用为基于node.js服务的node.js应用,所以目标应用对应的应用服务进程可以为node.js进程,在开启node.js进程的情况下,才可以在目标服务容器中启动目标应用。
应用服务进程中可以包括内部组件,内部组件对应于组件代码,基于运行内部组件对应的组件代码,可以实现对内部组件的启动,进而,在内部组件启动之后,基于内部组件的交互可以为服务端提供网络、压缩和编解码等重要功能,基于上述功能,可以实现对正确的启动目标应用。
具体实施时,在目标服务容器中启动目标应用对应的启动进程之后,可以启动目标应用对应的应用服务进程,并运行应用服务进程中的各个内部组件对应的组件代码。
进一步的,还可以开启端口连接服务,其中,端口连接服务用于建立目标应用和HTTP端口之间的连接。
这里,端口连接服务具体可以为Socket连接。通过提前开启端口连接服务,可以实现在后续用户代码执行至端口监听代码的情况下,基于开启的Socket连接建立目标应用和HTTP端口之间的连接。
在一种实施例中,针对S202对目标应用对应的回调函数的获取方式进行修改的步骤,可以按照以下步骤实施:
步骤一、从内部组件对应的组件代码中,确定回调函数的获取方式对应的子代码。
这里,内部组件对应的组件代码中,还可以包括回调函数的获取方式对应的子代码。回调函数的获取方式对应的子代码可以用于在现有技术中的启动流程中,获取用户代码对应的回调函数,而由于本公开实施例所提供的应用启动方法对应的启动流程已被优化更新,所以原有的子代码无法获取到用户代码对应的回调函数,因此,需要对子代码进行修改,以应用于本公开实施例法对应的启动流程。
具体的,在本步骤中,在确定内部组件对应的组件代码之后,可以先从组件代码中确定回调函数的获取方式对应的子代码。
步骤二、基于获取的新的对象变量,对获取方式对应的子代码进行修改,得到修改后的获取方式。
这里,获取的新的对象变量可以为开发人员创建的对象变量,对象变量可以为基于获取的组件代码对应的全局变量创建的,具体的,新的对象变量可以为Server对象变量。
在获取到组件代码之后,可以确定组件代码对应的全局变量,然后可以基于全局变量,基于组件代码对应的代码语言的特性,修改部分全局变量对应的值,从而得到新的新的对象变量。
这里,组件代码对应的代码语言为JavaScript语言,所以可以基于JavaScript语言的特性。
进一步的,可以基于新的对象变量,基于Monkey Patch方式,对获取方式对应的子代码进行修改,从而可以得到修改后的获取方式,即,得到修改后的http.createServer方式。
示例性的,如下分别示出了一种子代码对应的获取方式的代码组成以及修改后的获取方式对应的代码组成:
子代码对应的获取方式的代码:
const http=require('http');//http连接//
const originCreateServer=http.CreateServer;//子代码对应的获取方式,http.CreateServer//
其中,http.CreateServer表示子代码对应的获取方式。
修改后的获取方式对应的代码组成:
object.defineProperty('http',{//重新定义//
key:'CreateServer'//修改的键为CreateServer//
method:newCreateServer//修改后的获取方式为newCreateServer//
})
其中,newCreateServer表示修改后的获取方式。
在一种实施例中,针对S203中的响应于用户发起的针对目标应用的启动请求,利用修改后的获取方式获取回调函数的步骤,可以按照以下方式实施:
S203-1:响应于用户发起的针对目标应用的启动请求,在应用服务进程中加载并执行用户代码。
具体实施时,响应于用户发起的针对目标应用的启动请求,确定为目标应用分配的目标服务容器对应的应用服务进程,在该应用服务进程中加载并执行用户代码。这样,可以实现在同一个进程(应用服务进程)中实现目标应用的启动。
S203-2:在执行用户代码的过程中,利用修改后的获取方式获取用户代码中的回调函数。
具体实施时,在执行到用户代码中的获取回调函数的http.createServer方式对应的代码时,可以直接调用修改后的http.createServer方式获取回调函数。
在一种实施例中,在获取到回调函数之后,可以将获取的新的对象变量反馈给用户端,这样,用户端可以获取的一个自实现的Server对象变量,从而,用户可以在用户端基于Server对象变量,获取到能够表征目标应用正在启动的信息。
在一种实施例中,针对203中的将当前监听的HTTP端口分配给目标应用的步骤,可以利用预先开启的端口连接(socket)服务,建立当前监听的HTTP端口和正在启动的目标应用之间的socket连接。
在一种实施例中,在确定应用服务启动完成之后,还可以响应于接收到的用户处理请求,执行回调函数,得到用户处理请求对应的执行结果。
这里,用户处理请求可以为用户使用启动后的目标应用的请求,例如,使用目标应用的图像生成功能的请求、使用目标应用的数据分析功能的请求等等。具体的,可以响应于接收到的用户处理请求,执行获取的回调函数,并利用回调函数对用户处理请求进行处理,得到用户处理请求对应的执行结果。
然后,可以利用HTTP端口和应用服务之间的连接,将执行结果发送至HTTP端口。
具体实施时,可以利用建立的HTTP端口和应用服务之间的socket连接,将执行结果发送至HTTP端口。
最后,可以利用HTTP端口将执行结果反馈给用户端,进而,用户可以在用户端获取到用户处理请求对应的执行结果。
如图3所示,为本公开实施例所提供的一种启动目标应用的具体实施流程图,可以包括以下步骤:
S301:在目标服务容器中启动目标应用对应的启动进程。
S302:启动目标应用对应的应用服务进程,并运行应用服务进程中的各个内部组件对应的组件代码,并开启端口连接服务。
S303:对超文本传输协议HTTP端口进行监听。
S304:在HTTP端口监听完成的情况下,对目标应用对应的回调函数的获取方式进行修改。
S305:响应于用户发起的针对目标应用的启动请求,在应用服务进程中加载并执行用户代码。
S306:在执行用户代码的过程中,利用修改后的获取方式获取用户代码中的回调函数。
S307:在用户代码执行至端口监听代码的情况下,将当前监听的HTTP端口分配给目标应用,确定目标应用启动完成。
关于S301~S307的具体实施过程,可以参考上述各实施例,此处不再赘述。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与应用启动方法对应的应用启动装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述应用启动方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,为本公开实施例提供的一种应用启动装置的示意图,包括:
启动模块401,用于在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听;
修改模块402,用于在所述HTTP端口监听完成的情况下,对所述目标应用对应的回调函数的获取方式进行修改;
执行模块403,用于响应于用户发起的针对目标应用的启动请求,利用修改后的所述获取方式获取所述回调函数,并在所述目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的所述HTTP端口分配给所述目标应用,确定所述目标应用启动完成。
在一种可能的实施方式中,所述启动模块401,还用于在所述对超文本传输协议HTTP端口进行监听之前,启动所述目标应用对应的应用服务进程,并运行所述应用服务进程中的各个内部组件对应的组件代码;
开启端口连接服务,其中,所述端口连接服务用于建立所述目标应用和HTTP端口之间的连接。
在一种可能的实施方式中,所述修改模块402,用于从所述内部组件对应的组件代码中,确定所述回调函数的获取方式对应的子代码;
基于获取的新的对象变量,对所述获取方式对应的所述子代码进行修改,得到修改后的获取方式。
在一种可能的实施方式中,所述执行模块403,用于响应于所述用户发起的针对所述目标应用的启动请求,在应用服务进程中加载并执行所述用户代码;
在执行所述用户代码的过程中,利用修改后的所述获取方式获取所述用户代码中的回调函数。
在一种可能的实施方式中,所述执行模块403,还用于在获取所述回调函数之后,将所述新的对象变量反馈给用户端。
在一种可能的实施方式中,所述执行模块403,用于利用所述端口连接服务,建立当前监听的所述HTTP端口和所述目标应用之间的连接。
在一种可能的实施方式中,所述装置还包括:
处理模块404,用于在所述确定所述应用服务启动完成之后,响应于接收到的用户处理请求,执行所述回调函数,得到所述用户处理请求对应的执行结果;
利用所述HTTP端口和所述应用服务之间的连接,将所述执行结果发送至所述HTTP端口;
利用所述HTTP端口将所述执行结果反馈给用户端。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供了一种计算机设备,如图5所示,为本公开实施例提供的一种计算机设备结构示意图,包括:
处理器51和存储器52;所述存储器52存储有处理器51可执行的机器可读指令,处理器51用于执行存储器52中存储的机器可读指令,所述机器可读指令被处理器51执行时,处理器51执行下述步骤:S201:在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听;S202:在HTTP端口监听完成的情况下,对目标应用对应的回调函数的获取方式进行修改以及S203:响应于用户发起的针对目标应用的启动请求,利用修改后的获取方式获取回调函数,并在目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的HTTP端口分配给目标应用,确定目标应用启动完成。
上述存储器52包括内存521和外部存储器522;这里的内存521也称内存储器,用于暂时存放处理器51中的运算数据,以及与硬盘等外部存储器522交换的数据,处理器51通过内存521与外部存储器522进行数据交换。
上述指令的具体执行过程可以参考本公开实施例中所述的应用启动方法的步骤,此处不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的应用启动方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例所提供的应用启动方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的应用启动方法的步骤,具体可参见上述方法实施例,在此不再赘述。
该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种应用启动方法,其特征在于,应用于服务端,包括:
在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听;
在所述HTTP端口监听完成的情况下,对所述目标应用对应的回调函数的获取方式进行修改;
响应于用户发起的针对目标应用的启动请求,利用修改后的所述获取方式获取所述回调函数,并在所述目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的所述HTTP端口分配给所述目标应用,确定所述目标应用启动完成。
2.根据权利要求1所述的方法,其特征在于,在所述对超文本传输协议HTTP端口进行监听之前,还包括:
启动所述目标应用对应的应用服务进程,并运行所述应用服务进程中的各个内部组件对应的组件代码;
开启端口连接服务,其中,所述端口连接服务用于建立所述目标应用和HTTP端口之间的连接。
3.根据权利要求2所述的方法,其特征在于,所述对所述目标应用对应的回调函数的获取方式进行修改,包括:
从所述内部组件对应的组件代码中,确定所述回调函数的获取方式对应的子代码;
基于获取的新的对象变量,对所述获取方式对应的所述子代码进行修改,得到修改后的获取方式。
4.根据权利要求1所述的方法,其特征在于,所述响应于用户发起的针对目标应用的启动请求,利用修改后的所述获取方式获取所述回调函数,包括:
响应于所述用户发起的针对所述目标应用的启动请求,在应用服务进程中加载并执行所述用户代码;
在执行所述用户代码的过程中,利用修改后的所述获取方式获取所述用户代码中的回调函数。
5.根据权利要求3所述的方法,其特征在于,在获取所述回调函数之后,还包括:
将所述新的对象变量反馈给用户端。
6.根据权利要求2所述的方法,其特征在于,所述将当前监听的所述HTTP端口分配给所述目标应用,包括:
利用所述端口连接服务,建立当前监听的所述HTTP端口和所述目标应用之间的连接。
7.根据权利要求6所述的方法,其特征在于,在所述确定所述应用服务启动完成之后,还包括:
响应于接收到的用户处理请求,执行所述回调函数,得到所述用户处理请求对应的执行结果;
利用所述HTTP端口和所述应用服务之间的连接,将所述执行结果发送至所述HTTP端口;
利用所述HTTP端口将所述执行结果反馈给用户端。
8.一种应用启动装置,其特征在于,应用于服务端,包括:
启动模块,用于在目标服务容器中启动目标应用对应的启动进程,并对超文本传输协议HTTP端口进行监听;
修改模块,用于在所述HTTP端口监听完成的情况下,对所述目标应用对应的回调函数的获取方式进行修改;
执行模块,用于响应于用户发起的针对目标应用的启动请求,利用修改后的所述获取方式获取所述回调函数,并在所述目标应用对应的用户代码执行至端口监听代码的情况下,将当前监听的所述HTTP端口分配给所述目标应用,确定所述目标应用启动完成。
9.一种计算机设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至7任意一项所述的应用启动方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被计算机设备运行时,所述计算机设备执行如权利要求1至7任意一项所述的应用启动方法的步骤。
CN202111249093.8A 2021-10-26 2021-10-26 一种应用启动方法、装置、计算机设备和存储介质 Active CN113986379B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111249093.8A CN113986379B (zh) 2021-10-26 2021-10-26 一种应用启动方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111249093.8A CN113986379B (zh) 2021-10-26 2021-10-26 一种应用启动方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN113986379A CN113986379A (zh) 2022-01-28
CN113986379B true CN113986379B (zh) 2023-12-15

Family

ID=79741798

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111249093.8A Active CN113986379B (zh) 2021-10-26 2021-10-26 一种应用启动方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113986379B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297663A (zh) * 2018-03-21 2019-10-01 阿里巴巴集团控股有限公司 应用程序的唤醒方法、装置、终端和介质
CN111131442A (zh) * 2019-12-19 2020-05-08 广州品唯软件有限公司 网页数据的监听方法、终端设备及可读存储介质
CN111124795A (zh) * 2018-11-01 2020-05-08 百度在线网络技术(北京)有限公司 应用启动监控方法、装置及设备
CN112905260A (zh) * 2021-02-07 2021-06-04 深信服科技股份有限公司 一种应用启动方法、装置、电子设备及存储介质
CN113064661A (zh) * 2019-12-31 2021-07-02 深圳云天励飞技术有限公司 批量任务的内存处理方法、装置、电子设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645912B2 (en) * 2008-12-01 2017-05-09 Microsoft Technology Licensing, Llc In-place function modification

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110297663A (zh) * 2018-03-21 2019-10-01 阿里巴巴集团控股有限公司 应用程序的唤醒方法、装置、终端和介质
CN111124795A (zh) * 2018-11-01 2020-05-08 百度在线网络技术(北京)有限公司 应用启动监控方法、装置及设备
CN111131442A (zh) * 2019-12-19 2020-05-08 广州品唯软件有限公司 网页数据的监听方法、终端设备及可读存储介质
CN113064661A (zh) * 2019-12-31 2021-07-02 深圳云天励飞技术有限公司 批量任务的内存处理方法、装置、电子设备及存储介质
CN112905260A (zh) * 2021-02-07 2021-06-04 深信服科技股份有限公司 一种应用启动方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN113986379A (zh) 2022-01-28

Similar Documents

Publication Publication Date Title
CN109951547B (zh) 事务请求并行处理方法、装置、设备和介质
KR101255382B1 (ko) 운영체제에 친숙한 부트로더
CN111726399B (zh) Docker容器安全访问方法及装置
CN107241315B (zh) 银行网关接口的接入方法、装置及计算机可读存储介质
CN106445951B (zh) 一种文件传输方法和装置
CN110289983B (zh) 负载均衡应用创建方法、装置、计算机设备及存储介质
CN106201811B (zh) 应用程序的故障恢复方法和终端
CN110968331B (zh) 应用程序运行的方法和装置
CN112181677A (zh) 业务的处理方法和装置、存储介质、电子装置
CN114615340B (zh) 一种请求处理方法、装置、计算机设备和存储装置
KR20130108613A (ko) 프로세스 간 통신을 위한 방법, 장치 및 컴퓨터 기록 매체
CN111343236A (zh) 服务端与客户端进行通讯的方法、装置、通讯系统
CN111858083A (zh) 一种远程服务的调用方法、装置、电子设备及存储介质
CN105119944B (zh) 一种应用的启动方法和相关装置
CN107273226B (zh) 在安卓系统中集成组件及调用被集成组件的方法和装置
CN106027365A (zh) 一种信息交互的方法及装置
CN113986379B (zh) 一种应用启动方法、装置、计算机设备和存储介质
CN112257736A (zh) 基于多集群的模型训练系统、方法、设备及存储介质
CN114090183B (zh) 一种应用启动方法、装置、计算机设备和存储介质
CN115269117A (zh) 一种资源创建方法、装置、计算机设备及存储介质
CN110245027A (zh) 一种进程间通信的方法和设备
CN112764897B (zh) 任务请求的处理方法、装置、系统及计算机可读存储介质
CN111273916B (zh) 算法热部署方法、装置、计算机系统和介质
CN113282541A (zh) 文件调用方法、装置和电子设备
CN114217927A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Tiktok vision (Beijing) Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd.

Address after: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant after: Douyin Vision Co.,Ltd.

Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing.

Applicant before: Tiktok vision (Beijing) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant