CN113419842A - 一种基于JavaScript构建边缘计算微服务的方法、装置 - Google Patents

一种基于JavaScript构建边缘计算微服务的方法、装置 Download PDF

Info

Publication number
CN113419842A
CN113419842A CN202110978288.XA CN202110978288A CN113419842A CN 113419842 A CN113419842 A CN 113419842A CN 202110978288 A CN202110978288 A CN 202110978288A CN 113419842 A CN113419842 A CN 113419842A
Authority
CN
China
Prior art keywords
thread
sub
main
task
creating
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
CN202110978288.XA
Other languages
English (en)
Other versions
CN113419842B (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.)
Beijing Acoinfo Technology Co ltd
Original Assignee
Beijing Acoinfo 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 Beijing Acoinfo Technology Co ltd filed Critical Beijing Acoinfo Technology Co ltd
Priority to CN202110978288.XA priority Critical patent/CN113419842B/zh
Publication of CN113419842A publication Critical patent/CN113419842A/zh
Application granted granted Critical
Publication of CN113419842B publication Critical patent/CN113419842B/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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation

Abstract

本发明提供了一种基于JavaScript构建边缘计算微服务的方法、装置,该方法应用于物联网边缘计算设备中,该方法包括:在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;所述主任务在所述边缘计算设备的连接端口中监听到有来自客户端的连接请求时创建一个子任务;所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。减少了内存占用与进程调用性能开销,提高了边缘计算设备的性能。

Description

一种基于JavaScript构建边缘计算微服务的方法、装置
技术领域
本发明涉及计算机程序处理技术领域,特别是一种基于JavaScript构建边缘计算微服务的方法、装置。
背景技术
现有边缘设备计算中,一般使用Node.js进行,它是现有的基于JavaScript的网络服务开发平台,Node.js的Cluster模块提供的方法为:主线程创建子线程,主线程运行主任务,子线程运行子任务,主任务负责监听端口,接受客户端连接请求,将连接句柄分配到某个子任务,通过进程间通信将连接句柄发送给相应的子线程。子任务从主任务接收连接句柄后,与客户端建立连接,处理与客户端的通信与具体业务。
该技术的主要缺陷为:以上方案的特点是每个任务都运行在一个独立进程中,该方案在物联网边缘计算环境下有以下不足:
进程开销大:边缘计算环境,算力与内存资源相对紧张,上述方案每个服务创建一个进程,不仅内存开销大,而且进程调度也会增加性能消耗。
维护复杂:物联网边缘计算要求设计架构轻量灵活,上述方案服务运行在多个进程中,进程的启动、停止、监视、调度比较复杂。
因此,如何解决在物联网边缘计算时进程占用内存大,维护复杂等问题是一项技术挑战,且现有技术中的,各项调度策略也比较复杂,需要考虑各种优先级等,导致调度效率并不高。
发明内容
本发明针对上述现有技术中的缺陷,提出了如下技术方案。
一种基于JavaScript构建边缘计算微服务的方法,该方法应用于物联网边缘计算设备中,该方法包括:
创建步骤,在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;
监听步骤,所述主任务在所述边缘计算设备的连接端口中监听是否有来自客户端的连接请求,如果有,则为所述连接请求创建一个子任务;
分配步骤,所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;
通讯步骤,所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。
更进一步地,在所述创建步骤中,创建线程间通信服务,用于子线程与主线程建立通信通道;创建每一子线程的环境变量,所述环境变量包含线程间通信服务的连接信息以及子线程标识;在一个子线程创建后,所述子线程检查环境变量,并解析环境变量得到环境参数,基于所述环境参数与主线程建立线程间通信通道,在所述子线程启动服务后向主线程发送就绪消息,所述子线程通过线程间通信通道监听来自主线程的消息,并通过与客户端建立的连接句柄,监听客户端消息。
更进一步地,在所述监听步骤中,启动主线程服务后,所述主任务的主线程通过连接端口监听客户端的连接请求,并同时通过线程间通信通道监听子线程消息,当监听到客户端发起连接请求时,则为所述连接请求创建一个子任务,所述主线程接受所述连接请求,并创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务。
更进一步地,所述主线程接收所述子线程的状态消息,并解析所述状态消息获得消息类型,根据所述消息类型执行相应的操作。
更进一步地,所述均衡调度策略为:基于子线程所占用的内存m、处理的子任务数量n及执行子任务的总时间t构建均衡函数:
G(m,n,t)=
Figure 916617DEST_PATH_IMAGE001
使用所述均衡函数计算每一个子线程的均衡值,选择均衡值最大的子线程用于处理当前接收的子任务;
其中,
Figure 378822DEST_PATH_IMAGE002
分别为子线程所占用的内存m、执行子任务的总时间t、子任务数 量n对应的权重,ln表示对数计算。
本发明还提出了一种基于JavaScript构建边缘计算微服务的装置,该装置应用于物联网边缘计算设备中,该装置包括:
创建单元,在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;
监听单元,所述主任务在所述边缘计算设备的连接端口中监听是否有来自客户端的连接请求,如果有,则为所述连接请求创建一个子任务;
分配单元,所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;
通讯单元,所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。
更进一步地,在所述创建单元中,创建线程间通信服务,用于子线程与主线程建立通信通道;创建每一子线程的环境变量,所述环境变量包含线程间通信服务的连接信息以及子线程标识;在一个子线程创建后,所述子线程检查环境变量,并解析环境变量得到环境参数,基于所述环境参数与主线程建立线程间通信通道,在所述子线程启动服务后向主线程发送就绪消息,所述子线程通过线程间通信通道监听来自主线程的消息,并通过与客户端建立的连接句柄,监听客户端消息。
更进一步地,在所述监听单元中,启动主线程服务后,所述主任务的主线程通过连接端口监听客户端的连接请求,并同时通过线程间通信通道监听子线程消息,当监听到客户端发起连接请求时,则为所述连接请求创建一个子任务,所述主线程接受所述连接请求,并创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务。
更进一步地,所述主线程接收所述子线程的状态消息,并解析所述状态消息获得消息类型,根据所述消息类型执行相应的操作。
更进一步地,所述均衡调度策略为:基于子线程所占用的内存m、处理的子任务数量n及执行子任务的总时间t构建均衡函数:
G(m,n,t)=
Figure 867573DEST_PATH_IMAGE001
使用所述均衡函数计算每一个子线程的均衡值,选择均衡值最大的子线程用于处理当前接收的子任务;
其中,
Figure 73426DEST_PATH_IMAGE002
分别为子线程所占用的内存m、执行子任务的总时间t、子任务数 量n对应的权重,ln表示对数计算。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述处理器执行所述存储介质上的程序以实现上述任一方法。
本发明的一种基于JavaScript构建边缘计算微服务的方法、装置,该方法应用于物联网边缘计算设备中,该方法包括:创建步骤,在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;监听步骤,所述主任务在所述边缘计算设备的连接端口中监听是否有来自客户端的连接请求,如果有,则为所述连接请求创建一个子任务;分配步骤,所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;通讯步骤,所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。本申请创造性地提出了为一个任务进程中创建主线程与多个子线程,主线程执行主任务,主任务负责监听来自各终端的连接请求,并将连接请求作为一个子任务分配给一个选择出的子线程,由于主线程与子线程在同一个任务进程内,从而将现有技术中的进程之间的通信转换为同一个进程中多个线程之间的通信,由于线程占用内存小,且所有线程是共享该进程的内存空间,因此不再需要进程之间的通信、切换、内存申请及回收,从而减少了内存占用与进程调用性能开销,提高了边缘计算设备的性能;本发明中,所述环境变量包含了内存相关的信息等,即从其中可以解析出来占用的内存大小、内存地址等,从而建立与主线程建立线程间通信通道,这样子线程与主线程直接可以直接进行通信,不需要进行内存的切换等,提高了线程之间的通信效率,进而提高了边缘计算设备的性能;本发明中,在主线程接受到连接请求时创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务,即本发明中创建了连接句柄使得子任务与子线程进行关联,通过子线程执行子任务不需要再申请相应的内存,节约了内存占用,本发明还针对性的提出了同一进程中的多个线程的均衡调度策略,以适应于边缘计算设备的算力,该计算方法耗用资源较小,且考虑了线程调度的主要因素,进一步提高了边缘设备的计算性能。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显。
图1是根据本发明的实施例的一种基于JavaScript构建边缘计算微服务的方法的流程图。
图2是根据本发明的实施例的一种基于JavaScript构建边缘计算微服务的装置结构图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了本发明的一种基于JavaScript构建边缘计算微服务的方法,该方法应用于物联网边缘计算设备中,该方法包括:
创建步骤S101,在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;
监听步骤S102,所述主任务在所述边缘计算设备的连接端口中监听是否有来自客户端的连接请求,如果有,则为所述连接请求创建一个子任务;
分配步骤S103,所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;
通讯步骤S104,所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。
边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台。边缘计算与云计算互相协同,共同助力各行各业的数字化转型。它就近提供智能互联服务,满足行业在数字化变革过程中对业务实时、业务智能、数据聚合与互操作、安全与隐私保护等方面的关键需求。未解决现有技术中的缺陷,提出了该技术方案。
为了解决现有技术中进程通信复杂、进程占用边缘计算设备内存大,导致的边缘计算设备运行缓慢甚至死机的情况,本申请创造性地提出了为一个任务进程中创建主线程与多个子线程,主线程执行主任务,主任务负责监听来自各终端的连接请求,并将连接请求作为一个子任务分配给一个选择出的子线程,由于主线程与子线程在同一个任务进程内,从而将现有技术中的进程之间的通信转换为同一个进程中多个线程之间的通信,由于线程占用内存小,且所有线程是共享该进程的内存空间,因此不再需要进程之间的通信、切换、内存申请及回收,从而减少了内存占用与进程调用性能开销,提高了边缘计算设备的性能,这是本发明的重要发明点之一。
在一个实施例,在所述创建步骤S101中,创建线程间通信服务,用于子线程与主线程建立通信通道;创建每一子线程的环境变量,所述环境变量包含线程间通信服务的连接信息以及子线程标识;在一个子线程创建后,所述子线程检查环境变量,并解析环境变量得到环境参数,基于所述环境参数与主线程建立线程间通信通道,在所述子线程启动服务后向主线程发送就绪消息,所述子线程通过线程间通信通道监听来自主线程的消息,并通过与客户端建立的连接句柄,监听客户端消息。
本发明中,所述环境变量包含了内存相关的信息等,即从其中可以解析出来占用的内存大小、内存地址等,从而建立与主线程建立线程间通信通道,这样子线程与主线程直接可以直接进行通信,不需要进行内存的切换等,提高了线程之间的通信效率,进而提高了边缘计算设备的性能,这是本发明的重要发明点之另一。
在一个实施例,在所述监听步骤S102中,启动主线程服务后,所述主任务的主线程通过连接端口监听客户端的连接请求,并同时通过线程间通信通道监听子线程消息,当监听到客户端发起连接请求时,则为所述连接请求创建一个子任务,所述主线程接受所述连接请求,并创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务。
本发明中,在主线程接受到连接请求时创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务,即本发明中创建了连接句柄使得子任务与子线程进行关联,通过子线程执行子任务不需要再申请相应的内存,节约了内存占用,这是本发明的另一个重要发明点。
在一个实施例中,所述主线程接收所述子线程的状态消息,并解析所述状态消息获得消息类型,根据所述消息类型执行相应的操作。具体地,如果消息类型为就绪消息,表明子线程服务启动就绪,设置子线程为就绪状态,可以接受客户端请求;如果消息类型为子线程断开客户端连接消息,表明子线程服务释放一个客户端连接,子线程连接计数减1,为负载均衡算法提供有效依据;如果消息类型为就绪消息子任务退出消息,从线程队列中注销子线程,后继不再向注销的子线程分配新的客户端连接。
本发明中,基于子线程的消息类型,执行相应的操作,且操作时不需要内存申请、注销,这是本发明的另一个重要发明点。
在一个实施例中,所述均衡调度策略为:基于子线程所占用的内存m、处理的子任务数量n及执行子任务的总时间t构建均衡函数:
G(m,n,t)=
Figure 33029DEST_PATH_IMAGE001
其中,
Figure 931715DEST_PATH_IMAGE002
分别为子线程所占用的内存m、执行子任务的总时间t、子任务数 量n对应的权重,该权重值可以根据边缘设备的历史运行情况设置,比如采用机器学习的方 法基于历史运行情况确定最佳的数值,机器学习可以采用卷积申请网络,这属于相对成熟 的技术,其训练、预测等不再详述。
使用所述均衡函数计算每一个子线程的均衡值,选择均衡值最大的子线程用于处理当前接收的子任务。
现有的调度策略不适合同一进程中的多个线程的调度,因为线程调度不应太复杂,如果太复杂,导致调度性能下降,因此,本发明针对性的提出了同一进程中的多个线程的均衡调度策略,以适应于边缘计算设备的算力,该计算方法耗用资源较小,且考虑了线程调度的主要因素,这是本发明的另一个重要发明点。
图2示出了本发明的一种基于JavaScript构建边缘计算微服务的装置,该装置应用于物联网边缘计算设备中,该装置包括:
创建单元201,在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;
监听单元202,所述主任务在所述边缘计算设备的连接端口中监听是否有来自客户端的连接请求,如果有,则为所述连接请求创建一个子任务;
分配单元203,所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;
通讯单元204,所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。
边缘计算是在靠近物或数据源头的网络边缘侧,融合网络、计算、存储、应用核心能力的开放平台。边缘计算与云计算互相协同,共同助力各行各业的数字化转型。它就近提供智能互联服务,满足行业在数字化变革过程中对业务实时、业务智能、数据聚合与互操作、安全与隐私保护等方面的关键需求。未解决现有技术中的缺陷,提出了该技术方案。
为了解决现有技术中进程通信复杂、进程占用边缘计算设备内存大,导致的边缘计算设备运行缓慢甚至死机的情况,本申请创造性地提出了为一个任务进程中创建主线程与多个子线程,主线程执行主任务,主任务负责监听来自各终端的连接请求,并将连接请求作为一个子任务分配给一个选择出的子线程,由于主线程与子线程在同一个任务进程内,从而将现有技术中的进程之间的通信转换为同一个进程中多个线程之间的通信,由于线程占用内存小,且所有线程是共享该进程的内存空间,因此不再需要进程之间的通信、切换、内存申请及回收,从而减少了内存占用与进程调用性能开销,提高了边缘计算设备的性能,这是本发明的重要发明点之一。
在一个实施例,在所述创建单元201中,创建线程间通信服务,用于子线程与主线程建立通信通道;创建每一子线程的环境变量,所述环境变量包含线程间通信服务的连接信息以及子线程标识;在一个子线程创建后,所述子线程检查环境变量,并解析环境变量得到环境参数,基于所述环境参数与主线程建立线程间通信通道,在所述子线程启动服务后向主线程发送就绪消息,所述子线程通过线程间通信通道监听来自主线程的消息,并通过与客户端建立的连接句柄,监听客户端消息。
本发明中,所述环境变量包含了内存相关的信息等,即从其中可以解析出来占用的内存大小、内存地址等,从而建立与主线程建立线程间通信通道,这样子线程与主线程直接可以直接进行通信,不需要进行内存的切换等,提高了线程之间的通信效率,进而提高了边缘计算设备的性能,这是本发明的重要发明点之另一。
在一个实施例,在所述监听单元202中,启动主线程服务后,所述主任务的主线程通过连接端口监听客户端的连接请求,并同时通过线程间通信通道监听子线程消息,当监听到客户端发起连接请求时,则为所述连接请求创建一个子任务,所述主线程接受所述连接请求,并创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务。
本发明中,在主线程接受到连接请求时创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务,即本发明中创建了连接句柄使得子任务与子线程进行关联,通过子线程执行子任务不需要再申请相应的内存,节约了内存占用,这是本发明的另一个重要发明点。
在一个实施例中,所述主线程接收所述子线程的状态消息,并解析所述状态消息获得消息类型,根据所述消息类型执行相应的操作。具体地,如果消息类型为就绪消息,表明子线程服务启动就绪,设置子线程为就绪状态,可以接受客户端请求;如果消息类型为子线程断开客户端连接消息,表明子线程服务释放一个客户端连接,子线程连接计数减1,为负载均衡算法提供有效依据;如果消息类型为就绪消息子任务退出消息,从线程队列中注销子线程,后继不再向注销的子线程分配新的客户端连接。
本发明中,基于子线程的消息类型,执行相应的操作,且操作时不需要内存申请、注销,这是本发明的另一个重要发明点。
在一个实施例中,所述均衡调度策略为:基于子线程所占用的内存m、处理的子任务数量n及执行子任务的总时间t构建均衡函数:
G(m,n,t)=
Figure 907762DEST_PATH_IMAGE001
其中,
Figure 651727DEST_PATH_IMAGE002
分别为子线程所占用的内存m、执行子任务的总时间t、子任务数 量n对应的权重,该权重值可以根据边缘设备的历史运行情况设置,比如采用机器学习的方 法基于历史运行情况确定最佳的数值,机器学习可以采用卷积申请网络,这属于相对成熟 的技术,其训练、预测等不再详述。
使用所述均衡函数计算每一个子线程的均衡值,选择均衡值最大的子线程用于处理当前接收的子任务。
现有的调度策略不适合同一进程中的多个线程的调度,因为线程调度不应太复杂,如果太复杂,导致调度性能下降,因此,本发明针对性的提出了同一进程中的多个线程的均衡调度策略,以适应于边缘计算设备的算力,该计算方法耗用资源较小,且考虑了线程调度的主要因素,这是本发明的另一个重要发明点。
本发明还提出了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述处理器执行所述存储介质上的程序以实现上述任一方法。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
最后所应说明的是:以上实施例仅以说明而非限制本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解:依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。

Claims (10)

1.一种基于JavaScript构建边缘计算微服务的方法,该方法应用于物联网边缘计算设备中,其特征在于,该方法包括:
创建步骤,在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;
监听步骤,所述主任务在所述边缘计算设备的连接端口中监听是否有来自客户端的连接请求,如果有,则为所述连接请求创建一个子任务;
分配步骤,所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;
通讯步骤,所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。
2.根据权利要求1所述的方法,其特征在于,在所述创建步骤中,创建线程间通信服务,用于子线程与主线程建立通信通道;创建每一子线程的环境变量,所述环境变量包含线程间通信服务的连接信息以及子线程标识;在一个子线程创建后,所述子线程检查环境变量,并解析环境变量得到环境参数,基于所述环境参数与主线程建立线程间通信通道,在所述子线程启动服务后向主线程发送就绪消息,所述子线程通过线程间通信通道监听来自主线程的消息,并通过与客户端建立的连接句柄,监听客户端消息。
3.根据权利要求2所述的方法,其特征在于,在所述监听步骤中,启动主线程服务后,所述主任务的主线程通过连接端口监听客户端的连接请求,并同时通过线程间通信通道监听子线程消息,当监听到客户端发起连接请求时,则为所述连接请求创建一个子任务,所述主线程接受所述连接请求,并创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务。
4.根据权利要求3所述的方法,其特征在于,所述主线程接收所述子线程的状态消息,并解析所述状态消息获得消息类型,根据所述消息类型执行相应的操作。
5.根据权利要求4所述的方法,其特征在于,所述均衡调度策略为:基于子线程所占用的内存m、处理的子任务数量n及执行子任务的总时间t构建均衡函数:
G(m,n,t)=
Figure 857728DEST_PATH_IMAGE001
使用所述均衡函数计算每一个子线程的均衡值,选择均衡值最大的子线程用于处理当前接收的子任务;
其中,
Figure 912271DEST_PATH_IMAGE002
分别为子线程所占用的内存m、执行子任务的总时间t、子任务数量n 对应的权重,ln表示对数计算。
6.一种基于JavaScript构建边缘计算微服务的装置,该装置应用于物联网边缘计算设备中,其特征在于,该装置包括:
创建单元,在所述边缘计算设备中创建主任务,并创建一个任务进程,并在所述任务进程中创建一个与所述主任务对应的主线程,并在所述任务进程中创建至少一个子线程;
监听单元,所述主任务在所述边缘计算设备的连接端口中监听是否有来自客户端的连接请求,如果有,则为所述连接请求创建一个子任务;
分配单元,所述主任务基于均衡调度策略从所述至少一个子线程中选择一个子线程,将所述子任务分配给所述子线程;
通讯单元,所述主线程与分配了所述子任务的所述子线程在任务进程中进行通讯,使得所述子任务通过连接端口的连接句柄与所述客户端直接通信。
7.根据权利要求6所述的装置,其特征在于,在所述创建单元中,创建线程间通信服务,用于子线程与主线程建立通信通道;创建每一子线程的环境变量,所述环境变量包含线程间通信服务的连接信息以及子线程标识;在一个子线程创建后,所述子线程检查环境变量,并解析环境变量得到环境参数,基于所述环境参数与主线程建立线程间通信通道,在所述子线程启动服务后向主线程发送就绪消息,所述子线程通过线程间通信通道监听来自主线程的消息,并通过与客户端建立的连接句柄,监听客户端消息。
8.根据权利要求7所述的装置,其特征在于,在所述监听单元中,启动主线程服务后,所述主任务的主线程通过连接端口监听客户端的连接请求,并同时通过线程间通信通道监听子线程消息,当监听到客户端发起连接请求时,则为所述连接请求创建一个子任务,所述主线程接受所述连接请求,并创建连接句柄,然后根据均衡调度策略从就绪的子线程中选择一个有效的子线程,将创建的连接句柄通过线程间通信通道发送给子线程,所述子线程通过所述连接句柄接收所述子任务以执行该子任务。
9.根据权利要求8所述的装置,其特征在于,所述主线程接收所述子线程的状态消息,并解析所述状态消息获得消息类型,根据所述消息类型执行相应的操作。
10.根据权利要求9所述的装置,其特征在于,所述均衡调度策略为:基于子线程所占用的内存m、处理的子任务数量n及执行子任务的总时间t构建均衡函数:
G(m,n,t)=
Figure 873274DEST_PATH_IMAGE001
使用所述均衡函数计算每一个子线程的均衡值,选择均衡值最大的子线程用于处理当前接收的子任务;
其中,
Figure 416032DEST_PATH_IMAGE002
分别为子线程所占用的内存m、执行子任务的总时间t、子任务数量n 对应的权重,ln表示对数计算。
CN202110978288.XA 2021-08-25 2021-08-25 一种基于JavaScript构建边缘计算微服务的方法、装置 Active CN113419842B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110978288.XA CN113419842B (zh) 2021-08-25 2021-08-25 一种基于JavaScript构建边缘计算微服务的方法、装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110978288.XA CN113419842B (zh) 2021-08-25 2021-08-25 一种基于JavaScript构建边缘计算微服务的方法、装置

Publications (2)

Publication Number Publication Date
CN113419842A true CN113419842A (zh) 2021-09-21
CN113419842B CN113419842B (zh) 2021-11-16

Family

ID=77719380

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110978288.XA Active CN113419842B (zh) 2021-08-25 2021-08-25 一种基于JavaScript构建边缘计算微服务的方法、装置

Country Status (1)

Country Link
CN (1) CN113419842B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115033222A (zh) * 2022-06-22 2022-09-09 吉林大学 线程管理方法、装置、电子设备、计算机可读存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317658A (zh) * 2014-10-17 2015-01-28 华中科技大学 一种基于MapReduce的负载自适应任务调度方法
CN104932892A (zh) * 2015-06-19 2015-09-23 浪潮软件集团有限公司 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法
CN104951372A (zh) * 2015-06-16 2015-09-30 北京工业大学 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法
CN109800173A (zh) * 2019-01-28 2019-05-24 腾讯科技(深圳)有限公司 程序调试方法、装置及存储介质
US20190187997A1 (en) * 2017-12-15 2019-06-20 Jpmorgan Chase Bank, N.A. Systems and methods for optimized cluster resource utilization
CN111209102A (zh) * 2020-01-08 2020-05-29 湖南映客互娱网络信息有限公司 一种分布式任务分发方法与系统
CN113282954A (zh) * 2021-05-27 2021-08-20 北京达佳互联信息技术有限公司 基于业务平台的业务执行方法及装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104317658A (zh) * 2014-10-17 2015-01-28 华中科技大学 一种基于MapReduce的负载自适应任务调度方法
CN104951372A (zh) * 2015-06-16 2015-09-30 北京工业大学 一种基于预测的Map/Reduce数据处理平台内存资源动态分配方法
CN104932892A (zh) * 2015-06-19 2015-09-23 浪潮软件集团有限公司 一种基于WebWorker实现的Web应用中间件异步嵌套调用方法
US20190187997A1 (en) * 2017-12-15 2019-06-20 Jpmorgan Chase Bank, N.A. Systems and methods for optimized cluster resource utilization
CN109800173A (zh) * 2019-01-28 2019-05-24 腾讯科技(深圳)有限公司 程序调试方法、装置及存储介质
CN111209102A (zh) * 2020-01-08 2020-05-29 湖南映客互娱网络信息有限公司 一种分布式任务分发方法与系统
CN113282954A (zh) * 2021-05-27 2021-08-20 北京达佳互联信息技术有限公司 基于业务平台的业务执行方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
欧阳志鹏等: "基于改进线程池技术服务器程序的设计与实现", 《计算机与数字工程》 *
铁扇不是公举: "https://blog.csdn.net/weixin_36221980/article/details/112717882", 《#子线程发送消息_涨姿势 , JAVASCRIPT 玩转多线程编程》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115033222A (zh) * 2022-06-22 2022-09-09 吉林大学 线程管理方法、装置、电子设备、计算机可读存储介质

Also Published As

Publication number Publication date
CN113419842B (zh) 2021-11-16

Similar Documents

Publication Publication Date Title
Priya et al. Resource scheduling algorithm with load balancing for cloud service provisioning
WO2023011157A1 (zh) 业务处理方法、装置、服务器、存储介质和计算机程序产品
CN106557369A (zh) 一种多线程的管理方法及系统
EP3306866B1 (en) Message processing method, device and system
US20200348977A1 (en) Resource scheduling methods, device and system, and central server
US11645123B1 (en) Dynamic distribution of a workload processing pipeline on a computing infrastructure
CN112579304A (zh) 基于分布式平台的资源调度方法、装置、设备及介质
CN106020976A (zh) 将内存耗尽处理流程卸载到用户空间的方法和装置
CN112416585A (zh) 面向深度学习的gpu资源管理与智能化调度方法
CN112672382B (zh) 混合协作计算卸载方法、装置、电子设备及存储介质
CN111506434A (zh) 一种任务处理方法、装置及计算机可读存储介质
CN113419842B (zh) 一种基于JavaScript构建边缘计算微服务的方法、装置
CN114461355A (zh) 异构计算集群统一管理方法、装置、电子设备及存储介质
CN109729113A (zh) 管理专用处理资源的方法、服务器系统和计算机程序产品
CN109936471B (zh) 一种多集群的资源分配方法和装置
CN113608852A (zh) 任务调度方法、调度模块、推理节点和协同作业系统
CN112860396A (zh) 一种基于分布式深度学习的gpu调度方法及系统
CN117311973A (zh) 计算设备调度方法、装置、非易失性存储介质及电子设备
CN112395062A (zh) 任务处理方法、装置、设备及计算机可读存储介质
Hamzeh et al. A new approach to calculate resource limits with fairness in kubernetes
CN108829516B (zh) 一种图形处理器资源虚拟化调度方法
CN109189581B (zh) 一种作业调度方法和装置
US20070150907A1 (en) Scheduling method for remote object procedure call and system thereof
CN116257333A (zh) 分布式任务调度方法、装置和分布式任务调度系统
CN112817732B (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