CN109471710B - 任务请求的处理方法、装置、处理器、终端及服务器 - Google Patents
任务请求的处理方法、装置、处理器、终端及服务器 Download PDFInfo
- Publication number
- CN109471710B CN109471710B CN201811252690.4A CN201811252690A CN109471710B CN 109471710 B CN109471710 B CN 109471710B CN 201811252690 A CN201811252690 A CN 201811252690A CN 109471710 B CN109471710 B CN 109471710B
- Authority
- CN
- China
- Prior art keywords
- task
- executed
- terminal
- file
- terminals
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
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 And Data Communications (AREA)
Abstract
本发明公开了一种任务请求的处理方法、装置、处理器、终端及服务器。该方法包括:接收中心服务器分发的待执行的任务文件,其中,待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,任务参数至少包括:任务类别;执行待执行的任务文件。本发明解决了相关技术中所提供的分布式任务调度方式操作复杂度较高、功能局限的技术问题。
Description
技术领域
本发明涉及互联网领域,具体而言,涉及一种任务请求的处理方法、装置、处理器、终端及服务器。
背景技术
目前,相关技术中主要提供了以下两种任务调度方式:
方式一、轻任务调度(light-task-scheduler,简称为LTS)主要用于解决分布式任务调度问题,支持实时任务,定时任务和Cron任务,其优势在于:具有良好的伸缩性、扩展性、健壮性。LTS中主要包括以下四种角色:
(1)JobClient:主要负责提交任务并接收任务执行反馈结果。
(2)JobTracker:负责接收并分配任务,以及任务调度。
(3)TaskTracker:负责执行任务,并在执行完毕之后反馈给JobTracker。
(4)LTS-Admin:主要负责节点管理、任务队列管理、监控管理等。
其中,JobClient,JobTracker和TaskTracker节点都是无状态的,可以部署多个并动态地进行删减,来实现负载均衡,以实现更大的负载量,并且框架采用FailStore策略使得LTS具有很好的容错能力。
LTS注册中心提供多种实现(例如:Zookeeper,redis等),注册中心进行节点信息暴露,master选举。Mongo或者Mysql存储任务队列和任务执行日志,netty或者mina实现底层通信,并提供多种序列化方式,例如:fastjson,hessian2,java等。
LTS支持三种任务类型:实时任务,定时任务和周期任务。
然而,此种任务调度方式存在如下技术缺陷:
(1)由于设计需求不尽相同,LTS中负责执行任务的TaskTracker端缺乏一个可视化界面提供给用户,用户也只能通过命令行运行代码的方式启动TaskTracker。然而,TaskTracker的用户通常为普通用户而非开发人员,显然TaskTracker的使用门槛过高。
(2)受到功能局限性影响,对JobClient提交的任务无法进行加密保护,而且JobClient也无法限制本身在执行调度任务时所能使用的主机资源上限。
方式二、分布式任务调度平台(XXL-JOB)是一个轻量级分布式任务调度框架,其核心设计目标在于:开发迅速、学习简单、轻量级、易扩展。XXL-JOB***组成主要包括:调度模块、执行模块和任务模块。调度模块负责管理调度信息,按照调度配置发送调度请求,而自身不承担业务代码。执行模块负责接收调度请求并执行任务逻辑。任务模块负责业务代码的执行。
然而,此种任务调度方式存在如下技术缺陷:
与LTS类似,XXL-JOB的执行器同样缺乏简单易用的可视化界面,需要通过一系列复杂的配置编译操作才能够启动执行器,而且在启动器端也缺少对任务的加密保护。XXL-JOB只在启动器和调度中心之间的通讯采取了数据加密措施。另外,启动器也不具备资源使用限制的功能。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明至少部分实施例提供了一种任务请求的处理方法、装置、处理器、终端及服务器,以至少解决相关技术中所提供的分布式任务调度方式操作复杂度较高、功能局限的技术问题。
根据本发明其中一实施例,提供了一种任务请求的处理方法,包括:
接收中心服务器分发的待执行的任务文件,其中,待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,任务参数至少包括:任务类别;执行待执行的任务文件。
可选地,待执行的任务文件由中心服务器进行加密处理,得到加密后的待执行的任务文件。
可选地,执行待执行的任务文件包括:将加密后的待执行的任务文件存储至本地硬盘;将加密后的待执行的任务文件拷贝至本地预先创建的虚拟文件***,其中,虚拟文件***是与当前终端隔离的任务运行环境;在虚拟文件***中通过对加密后的待执行的任务文件进行解密处理,得到待执行的任务文件并在虚拟文件***中执行待执行的任务文件。
可选地,在执行待执行的任务文件的过程中,还包括:通过第一线程实时监控第二线程在执行待执行的任务文件时所占用的本地硬件资源;当通过第一线程监控到第二线程所占用的本地硬件资源超过预设资源上限值时,向第二线程发送通知消息,以使第二线程停止执行待执行的任务文件,并通过第二线程向中心服务器返回任务失败消息和失败原因同时释放在执行待执行的任务文件时所占用的本地硬件资源。
可选地,在接收中心服务器分发的待执行的任务文件之前,还包括:尝试与中心服务器建立连接;如果成功建立连接,则在中心服务器上创建第一任务队列和第二任务队列,其中,第一任务队列由当前处于在线状态的用于执行待执行的任务文件的全部终端共享,第二任务队列由当前终端独享。
可选地,在接收中心服务器分发的待执行的任务文件之前,还包括:通过预设图形界面编程方式在***托盘区显示托盘图标,其中,托盘图标用于指示终端本地当前的工作状态;响应托盘图标接收到的控制操作,生成设置界面,其中,设置界面用于限制执行待执行的任务文件所占用的硬件资源上限值以及登录中心服务器。
根据本发明其中一实施例,还提供了另一种任务请求的处理方法,包括:
接收来自于第一终端的任务请求,其中,任务请求中携带的信息包括:待执行的任务文件和任务参数,任务参数至少包括:任务类别;根据任务参数确定至少一个第二终端,并将待执行的任务文件分发至至少一个第二终端。
可选地,根据任务参数确定至少一个第二终端包括以下之一:当任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端;当任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与指定任务对应的一个第二终端;当任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与广播任务对应的多个第二终端。
可选地,当任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端包括:根据普通任务确定第一关键词;按照第一关键词将待执行的任务文件投递至第一任务队列,其中,第一任务队列由当前处于在线状态的全部第二终端共享。
可选地,当任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与指定任务对应的一个第二终端包括:根据指定任务确定第二关键词;按照第二关键词将待执行的任务文件投递至第二任务队列,其中,第二任务队列由指定任务对应的第二终端独享。
可选地,当任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与广播任务对应的多个第二终端包括:根据广播任务确定多个第二关键词;按照多个第二关键词将待执行的任务文件依次投递至与每个第二关键词对应的第二任务队列,其中,第二任务队列由每个第二关键词对应的第二终端独享。
可选地,将待执行的任务文件分发至至少一个第二终端包括:对待执行的任务文件进行加密处理;将加密后的待执行的任务文件分发至至少一个第二终端。
可选地,在将待执行的任务文件分发至至少一个第二终端之后,还包括:检测到至少一个第二终端断开连接;从当前处于在线状态的剩余第二终端中确定一个或多个第二终端,并将待执行的任务文件分发至一个或多个第二终端。
可选地,在将待执行的任务文件分发至至少一个第二终端之后,还包括:将待执行的任务文件的执行状态或执行结果返回至第一终端。
可选地,在接收来自于第一终端的任务请求之前,还包括:接收来自于第一终端的查询请求,其中,查询请求用于查询当前处于在线状态的第二终端的信息;响应于查询请求,向第一终端返回查询结果。
可选地,在接收来自于第一终端的任务请求之前,还包括:向第一终端提供预设应用程序接口,其中,预设应用程序接口按照表述性状态转移方式设置,预设应用程序接口用于配置提交任务请求的前端界面和方式。
根据本发明其中一实施例,还提供了一种任务请求的处理装置,包括:
接收模块,用于接收中心服务器分发的待执行的任务文件,其中,待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,任务参数至少包括:任务类别;处理模块,用于执行待执行的任务文件。
根据本发明其中一实施例,还提供了另一种任务请求的处理装置,包括:
第一接收模块,用于接收来自于第一终端的任务请求,其中,任务请求中携带的信息包括:待执行的任务文件和任务参数,任务参数至少包括:任务类别;处理模块,用于根据任务参数确定至少一个第二终端,并将待执行的任务文件分发至至少一个第二终端。
根据本发明其中一实施例,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行上述任意一项的任务请求的处理方法。
根据本发明其中一实施例,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述任意一项的任务请求的处理方法。
根据本发明其中一实施例,还提供了一种终端,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行上述任意一项的任务请求的处理方法。
根据本发明其中一实施例,还提供了一种服务器,包括:一个或多个处理器,存储器以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置为由一个或多个处理器执行,一个或多个程序用于执行上述任意一项的任务请求的处理方法。
在本发明至少部分实施例中,采用接收中心服务器分发的待执行的任务文件,该待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发的方式,执行待执行的任务文件,达到了避免通过复杂的操作方式启动分布式任务调度平台的目的,从而实现了有效地利用同一网络环境下多个终端的闲置硬件资源,在多个终端之间达到负载均衡的技术效果,进而解决了相关技术中所提供的分布式任务调度方式操作复杂度较高、功能局限的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明其中一实施例的分布式任务调度***的结构示意图;
图2是根据本发明其中一实施例的分布式任务调度***的技术框架示意图;
图3是根据本发明其中一实施例的一种任务请求的处理方法的流程图;
图4是根据本发明其中一实施例的另一种任务请求的处理方法的流程图;
图5是根据本发明其中一可选实施例的通过客户端程序对任务进行加密并执行过程的示意图;
图6是根据本发明其中一可选实施例的通过启动监控线程限制节点机资源使用过程的示意图;
图7是根据本发明其中一可选实施例的客户端可视化界面设置示意图;
图8是根据本发明其中一实施例的一种任务请求的处理装置的结构框图;
图9是根据本发明其中一可选实施例的一种任务请求的处理装置的结构框图;
图10是根据本发明其中一实施例的另一种任务请求的处理装置的结构框图;
图11是根据本发明其中一可选实施例的另一种任务请求的处理装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本申请实施例进行描述的过程中出现的部分名词或术语适用于如下解释:
(1)消息队列(Message Queue,简称为MQ)是一种应用程序与应用程序之间的通信方法。
(2)高级消息队列协议(Advanced Message Queuing Protocol,简称为AMQP)是应用层协议的一个开放标准,提供统一消息服务,为面向消息的中间件设计。
(3)表述性状态转移(Representational State Transfer,简称为REST)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高***的可伸缩性。
(4)RabbitMQ是一个由erlang语言开发的AMQP的开源实现,用于在分布式***中存储和转发消息。
(5)Django REST framework是一套基于Django的REST框架,是一个强大而又灵活的构建Web应用程序接口(API)的工具。
(6)Vue是一套用于构建用户界面的渐进式框架,与其它大型框架不同之处在于Vue被设计为可以自底向上逐层应用。
(7)PyQt5是Python语言的图形用户界面(GUI)编程解决方案之一,可以用来代替Python内置的Tkinter。PyQt5以Python模块的形式来实现Qt5的应用框架。
(8)Pyfakefs是Python语言的一个模块,用于创建虚拟文件***,所有在虚拟文件***上的文件读写操作,都只会在内存上执行,不会反映到硬盘的真实文件。
(9)Pika是Python语言用于连接RabbitMQ的模块,是Python与RabbitMQ沟通的桥梁。
根据本发明其中一实施例,提供了一种任务请求的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
该方法实施例可以在由多个第一终端、多个第二终端以及中心服务器构成的分布式任务调度***中执行。图1是根据本发明其中一实施例的分布式任务调度***的结构示意图,如图1所示,该分布式任务调度***包括:多个第一终端(图中采用用户1操作的终端和用户2操作的终端作为示例),其提供一个网页界面,与用户进行交互,接收用户提交的任务并将该任务传递至中心服务器;多个第二终端(又称节点机,图中采用节点机A、节点机B和节点机C作为示例),用于运行客户端程序;以及中心服务器,用于对多个第二终端上的硬件资源进行统筹调度,以便将任务分发至符合特定需求的第二终端执行。
上述第一终端、第二终端或中心服务器上可以包括一个或多个处理器(处理器102可以包括但不限于微处理器(MCU)或可编程逻辑器件(FPGA)等的处理装置)、用于存储数据的存储器、以及用于通信功能的传输装置。除此以外,上述第一终端、第二终端还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、和/或网络接口。本领域普通技术人员可以理解,上述结构描述仅为示意,其并不对上述第一终端、第二终端或中心服务器的结构造成限定。例如,第一终端、第二终端或中心服务器还可包括比上述结构描述更多或者更少的组件,或者具有与上述结构描述不同的配置。
应当注意到的是上述一个或多个处理器和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到第一终端、第二终端或中心服务器中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器可用于存储应用软件的软件程序以及模块,如本发明实施例中的任务请求的处理方法对应的程序指令/数据存储装置,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的任务请求的处理方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至第一终端、第二终端或中心服务器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置用于经由一个网络接收或者发送数据。上述的网络具体实例可包括第一终端、第二终端或中心服务器的通信供应商提供的无线网络。在一个实例中,传输装置包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置可以为射频(RadioFrequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与第一终端、第二终端的用户界面进行交互。
图2是根据本发明其中一实施例的分布式任务调度***的技术框架示意图,如图2所示,第一终端通过Vue来实现,中心服务器通过Django REST framework和RabbitMQ来实现,以及第二终端通过PyQt5来实现。
在网络环境(例如:特定地理位置的单体局域网、由多个不同地理位置的单体局域网构成的大中型局域网)的应用场景下,多个终端之间的负载情况并不是均衡的。例如:部分终端长时间处于高负荷运转状态,执行大量的计算任务。此种情况通常对应于开发人员所使用的终端,通常需要更多的硬件资源辅助开发、执行计算密集型程序(例如:机器学习、训练,渲染游戏图片资源等)。而另外部分终端却经常处于闲置状态或者只在运行一些轻量级的程序(比如:文员类的非开发人员对硬件资源的需求较低,特别是在处理文档期间),因此,这部分终端上的大部分硬件资源仍处于闲置状态,由此造成同一网络环境下的部分终端的硬件资源无法得到有效地利用。由此可见,需要通过分布式任务调度将空闲终端的硬件资源加以有效地利用,以达到多个终端之间的负载均衡目标。
综合上述分析,在不影响非开发人员正常工作的前提下,可以有效地利用部分终端上闲置的硬件资源来运行更多计算密集型程序。为此,在上述应用场景下的分布式任务调度***通常需要满足以下需求:
(1)简单易用,尤其是运行在各个终端的客户端程序,对于不具备相关计算机专业知识的非开发人员而言,不会造成使用上的困惑;
(2)在调度执行任务的过程中,需要能够限制任务所能使用的硬件资源范围,其原因在于:任务占用过多的硬件资源会影响终端用户的正常工作状态。
显然,相关技术中所提供的分布式任务调度平台无法满足上述应用场景的需求,其原因在于:客户端程序(例如:LTS的TaskTracker,XXL-JOB的调度器)使用门槛过高,对于非开发人员而言,难以使用;而能够理解并使用这些客户端程序的开发人员又会受制于自身所使用的终端缺少可供调度的硬件资源。即使通过相关专业人员的辅助,在非开发人员所使用的终端上配置并启动开发人员所需使用的客户端程序,由于缺乏资源限制的功能,极有可能因为被调度任务占用大量硬件资源导致该终端卡顿甚至宕机,由此严重影响非开发人员的正常工作。另外,对于执行机密任务,如果通过相关技术中所提供的分布式任务调度平台进行分发处理,由于客户端缺少数据加密功能,因此,在客户端可以轻松窃取到这些机密任务的数据。
为了改进上述技术缺陷,满足上述应用场景的实际需求,通过本发明至少部分实施例提供的分布式任务调度平台,能够将同一网络环境下的闲置硬件资源加以有效地利用,以达到多个终端之间的负载均衡目标,其特点在于:
(1)客户端程序简单易用,无任何使用门槛;
(2)客户端可以限制所需使用的硬件资源,从而防止执行调度任务程序时影响终端原有正常工作的有序进行;
(3)客户端在运行调度任务时,任务数据对当前终端不可见,以确保任务数据的安全性与可靠性。
在上述运行环境下,本发明提供了如图3所示的任务请求的处理方法。图3是根据本发明其中一实施例的一种任务请求的处理方法的流程图,如图3所示,该方法包括如下步骤:
步骤S33,接收来自于第一终端的任务请求,其中,任务请求中携带的信息包括:待执行的任务文件和任务参数,任务参数至少包括:任务类别;
步骤S35,根据任务参数确定至少一个第二终端,并将待执行的任务文件分发至至少一个第二终端。
通过上述步骤,可以采用接收来自于第一终端的任务请求,该任务请求中携带的信息包括待执行的任务文件和任务参数,该任务参数至少包括任务类别的方式,根据任务参数确定至少一个第二终端并将待执行的任务文件分发至至少一个第二终端,达到了避免通过复杂的操作方式启动分布式任务调度平台的目的,从而实现了有效地利用同一网络环境下多个终端的闲置硬件资源,在多个终端之间达到负载均衡的技术效果,进而解决了相关技术中所提供的分布式任务调度方式操作复杂度较高、功能局限的技术问题。
可选地,在步骤S35中,根据任务参数确定至少一个第二终端包括以下方式之一:
方式一、当任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端;
方式二、当任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与指定任务对应的一个第二终端;
方式三、当任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与广播任务对应的多个第二终端。
已成功运行客户端程序的终端在连接到中心服务器之后,将会被视为中心服务器下的一个节点机,而节点机相对于中心服务器的状态可以包括但不限于:在线(空闲或忙碌)状态、离线状态。中心服务器在接收到用户提交的任务之后,将会根据任务类别分发给相应的节点机执行。任务类别可以包括但不限于:
(1)普通任务,中心服务器在接收到此类任务之后,会在所有在线的节点机中随机选择一个节点机执行此任务。
(2)广播任务,中心服务器在接收到此类任务之后,会根据用户的实际需求选择多个在线或者忙碌的节点机执行此任务。
(3)指定任务,当用户提交的任务需要特定的节点机执行时,例如:需要性能强劲的节点机执行的计算密集型任务,用户在提交任务时可以同时指定一个节点机,中心服务器在接收到此类任务之后,会将该任务分发到用户指定的节点机。
由此可见,三种任务类型对应不同的需求,利用中心服务器的任务分发和负载均衡,可以有效地实现任务的并行性,从而提高并行任务的执行效率。
可选地,在方式一中,当任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端可以包括以下执行步骤:
步骤S351,根据普通任务确定第一关键词;
步骤S352,按照第一关键词将待执行的任务文件投递至第一任务队列,其中,第一任务队列由当前处于在线状态的全部第二终端共享。
RabbitMQ具有四个基本概念:队列、交换器、生产者以及消费者。队列用于存储消息,交换器用于将消息投递到相应的队列中,生产者用于生产消息并送往交换器,以及消费者用于从队列中消费消息。
RabbitMQ的队列通过一个关键词绑定到交换器中。交换器在投递消息时根据关键词将消息投递到对应的队列中。为此,在本发明的一个可选实施例中,客户端程序将通过pika模块连接到RabbitMQ服务器,然后创建两个消息队列,其中一个队列通过一个固定的关键词“normaltask”绑定到交换器中,并以这个关键词作为这个队列的名字,此处称之为公共队列;另一个队里以节点机自身的唯一标识作为关键词绑定到交换器中,同样,以关键词作为队列的名字,此处称之为节点队列。考虑到在RabbitMQ中,所有创建已存在名字队列的行为都会被忽略,因此,当所有客户端程序都执行过创建两个消息队列的操作之后,便可以形成所有客户端程序共享同一个公共队列,以及所有客户端程序都拥有属于自己的一个节点队列。
当用户需要通过Web端提交任务时,Web端将任务文件和任务选项参数发送至中心服务器,中心服务器在接收到用户提交的任务请求之后,通过pika模块连接RabbitMQ服务器,然后再通过辨别任务选项参数将任务文件和关键词发送到RabbitMQ服务器的交换器中。如果提交的是普通任务,则将任务文件和关键词“normaltask”打包发送给RabbitMQ服务器的交换器。当用户提交普通任务时,RabbitMQ服务器接收到关键词是“normaltask”的任务消息,便会投递给公共队列。由于公共队列是所有客户端程序共享的,因此,任一空闲的节点机都能够接收到这个任务。
可选地,在方式二中,当任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与指定任务对应的一个第二终端可以包括以下执行步骤:
步骤S353,根据指定任务确定第二关键词;
步骤S354,按照第二关键词将待执行的任务文件投递至第二任务队列,其中,第二任务队列由指定任务对应的第二终端独享。
如果提交的是指定任务,则将指定节点机的唯一标识作为关键词,与任务文件一同打包发送给RabbitMQ服务器的交换器。当用户提交指定任务时,RabbitMQ服务器会将该任务投递到特定的节点队列,该节点队列只属于特定的节点机,指定任务也只能被该指定的节点机接收到。
可选地,在方式三中,当任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与广播任务对应的多个第二终端可以包括以下执行步骤:
步骤S355,根据广播任务确定多个第二关键词;
步骤S356,按照多个第二关键词将待执行的任务文件依次投递至与每个第二关键词对应的第二任务队列,其中,第二任务队列由每个第二关键词对应的第二终端独享。
如果提交的是广播任务,则将该任务当成是多个指定任务,并按照指定任务的规则依次发送给RabbitMQ服务器的交换器。当用户提交广播任务时,RabbitMQ服务器会将该任务依次投递到特定的节点队列,该节点队列分别属于特定的节点机,广播任务也只能依次被该指定的节点机接收到。
可选地,在步骤S35中,将待执行的任务文件分发至至少一个第二终端可以包括以下执行步骤:
步骤S357,对待执行的任务文件进行加密处理;
步骤S358,将加密后的待执行的任务文件分发至至少一个第二终端。
如果用户在提交任务时选择加密任务的选项,那么该用户向中心服务器上传的任务文件,均会被中心服务器进行加密处理,因此,任务文件无法被打开浏览。通常情况下,中心服务器使用的是AES加密算法。
可选地,在步骤S35,将待执行的任务文件分发至至少一个第二终端之后,还可以包括以下执行步骤:
步骤S36,检测到至少一个第二终端断开连接;
步骤S37,从当前处于在线状态的剩余第二终端中确定一个或多个第二终端,并将待执行的任务文件分发至一个或多个第二终端。
中心服务器支持任务容错迁移。节点机在执行中心服务器下发的任务过程中,如果由于人为或其他外界因素导致任务意外中断(例如:用户关机、节点机宕机、断电等情况),那么此时中心服务器能够及时检测到节点机意外断开连接,并将该节点机所执行的任务分发给下一个适合的节点机执行,以确保任务具备良好的容错性和迁移性。
可选地,在步骤S35,将待执行的任务文件分发至至少一个第二终端之后,还可以包括以下执行步骤:
步骤S38,将待执行的任务文件的执行状态或执行结果返回至第一终端。
在本发明的一个可选实施例中,向需要提交任务的普通用户提供一个Web端的可视化界面,用户通过浏览器可以打开Web端的操作界面,该操作界面所具备的功能包括但不限于以下至少之一:
(1)提交任务;用户通过“提交任务”页面进行任务参数的设置和任务文件的上传,任务参数可以设置任务的名称,任务的类别,是否需要获取任务执行结果(即是否需要回执的选项),是否加密保护任务数据等。另外,用户通过“任务队列”页面可以查看自身已提交的所有任务。
除了可以在Web端向中心服务器提交任务,在一个可选实施例中,还提供了一套REST风格的API供高级用户(例如:开发人员)自行开发提交任务的界面和方式,例如:自动提交任务的***,在手机端提交任务的应用(APP)。
(2)获取任务执行结果;已完成的任务可以通过点击“下载回执”获取任务执行后产生的结果数据文件。执行失败的任务可以通过点击“下载回执”获取任务运行的出错信息或者原因。
(3)查看任务执行状态;任务状态包括:队列中,失败和完成,其分别对应任务正在等待被分配执行,任务执行失败以及任务执行成功三种情况。
可选地,在步骤S33,接收来自于第一终端的任务请求之前,还可以包括以下执行步骤:
步骤S30,接收来自于第一终端的查询请求,其中,查询请求用于查询当前处于在线状态的第二终端的信息;
步骤S31,响应于查询请求,向第一终端返回查询结果。
在本发明的一个可选实施例中,上述操作界面所具备的功能还可以包括:查看可用节点机列表;用户通过“节点一览”页面,可以查看当前中心服务器下所有的节点机信息,其可以包括但不限于:节点机的操作***,所能使用的硬件资源上限以及节点机的当前状态。
可选地,在步骤S33,接收来自于第一终端的任务请求之前,还可以包括以下执行步骤:
步骤S32,向第一终端提供预设应用程序接口,其中,预设应用程序接口按照表述性状态转移方式设置,预设应用程序接口用于配置提交任务请求的前端界面和方式。
考虑到中心服务器基于Django REST framwork所开发,因此,中心服务器所提供的API能够符合REST风格。REST是一套规则、规范,即,采用统一资源定位符(URL)来定位资源,采用超文本传输协议(HTTP)方法(例如:GET、POST、PUT、DELETE)来描述实际操作,其主要原则包括:面向资源、统一接口、采用统一资源定位符指向资源,无状态。虽然不遵守REST风格,上述功能仍旧可以实现,但是,如果遵守REST风格,便可以使得API的调用者更加容易理解和使用。
特别是,当需要对接上述分布式任务调度***进行二次开发时,开发者只需按照REST的规范使用API即可,而无需改动分布式任务调度***的构架或者代码。通过提供API便于开发人员进行***对接或者二次开发。
根据本发明其中一实施例,还提供了另一种任务请求的处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图4是根据本发明其中一实施例的另一种任务请求的处理方法的流程图,如图4所示,该方法包括如下步骤:
步骤S44,接收中心服务器分发的待执行的任务文件,其中,待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,任务参数至少包括:任务类别;
步骤S46,执行待执行的任务文件。
在一个可选实施例中,上述待执行的任务文件由中心服务器进行加密处理,得到加密后的待执行的任务文件。
可选地,在步骤S46中,执行待执行的任务文件可以包括以下执行步骤:
步骤S461,将加密后的待执行的任务文件存储至本地硬盘;
步骤S462,将加密后的待执行的任务文件拷贝至本地预先创建的虚拟文件***,其中,虚拟文件***是与当前终端隔离的任务运行环境;
步骤S463,在虚拟文件***中通过对加密后的待执行的任务文件进行解密处理,得到待执行的任务文件并在虚拟文件***中执行待执行的任务文件。
如果用户在提交任务时选择加密任务的选项,那么该用户向中心服务器上传的任务文件,均会被中心服务器进行加密处理,因此,任务文件无法被打开浏览。通常情况下,中心服务器使用的是AES加密算法。
图5是根据本发明其中一可选实施例的通过客户端程序对任务进行加密并执行过程的示意图,如图5所示,当加密任务分发到对应的节点机时,节点机接收并保存到硬盘的任务文件仍然处于加密状态,此时节点机无法轻易窃取到此机密任务文件的任何内容,任务数据的安全由此得到保障。与此同时,加密后的任务文件也无法像普通任务文件一样被节点机所执行。为此,在本发明的一个可选实施例中,通过虚拟文件***pyfakefs创建与节点机隔离的任务运行环境(该任务运行环境是运行在节点机内存之上的虚拟***环境,任何操作都不会反映到硬盘的真实文件,即此任务运行环境对用户是不可见的),加密后的任务文件可以在此任务运行环境中被正常执行。通过在虚拟文件***中解密并运行任务,可以确保任务数据不会轻易泄露,提高了任务执行过程的安全性。
在整个任务执行过程中,节点机用户唯一能够接触到的只有加密后的任务文件。如果希望窃取任务文件中的内容,便需要对加密文件进行暴力破解。而由于上述可选实施方式中使用的是AES加密算法,理论上不存在被破解的可能性。因此,通过数据加密能够有效地确保任务文件的安全性,并通过上述任务运行环境实现加密任务文件的正常运行。
可选地,在步骤S46,执行待执行的任务文件的过程中,还可以包括以下执行步骤:
步骤S464,通过第一线程实时监控第二线程在执行待执行的任务文件时所占用的本地硬件资源;
步骤S465,当通过第一线程监控到第二线程所占用的本地硬件资源超过预设资源上限值时,向第二线程发送通知消息,以使第二线程停止执行待执行的任务文件,并通过第二线程向中心服务器返回任务失败消息和失败原因同时释放在执行待执行的任务文件时所占用的本地硬件资源。
图6是根据本发明其中一可选实施例的通过启动监控线程限制节点机资源使用过程的示意图,如图6所示,当客户端启动时,节点机将同时启动两个线程。一个线程为EasetaskWorker类的线程实例(相当于上述第二线程),其功能在于:不断从中心服务器接收任务,执行任务以及将任务结果返回至中心服务器。另一个线程为EasetaskNodeSupervisor类的线程实例(相当于上述第一线程),其功能在于:实时监控EasetaskWorker线程所占用的已经资源。当EasetaskWorker线程所占用的硬件资源超过节点机用户所设置的资源上限时,EasetaskNodeSupervisor线程便可立刻发送通知给EasetaskWorker线程,告知其所占用的硬件资源超出资源上限。此时EasetaskWorker线程便会终止当前任务,并向中心服务器返回执行任务失败信息和失败原因(例如:资源不足),同时释放先前执行任务时所占用的节点机硬件资源。由此,便能够有效地确保客户端程序在执行任务过程中,始终运行在预先设置的资源上限的范围内,而不会对用户原有工作状态产生任何不良影响。利用监控线程限制工作线程所使用的硬件资源,能够有效第避免客户端程序占用过多的硬件资源,以确保节点机原有工作状态不受影响。
可选地,在步骤S44,接收中心服务器分发的待执行的任务文件之前,还可以包括以下执行步骤:
步骤S40,尝试与中心服务器建立连接;
步骤S41,如果成功建立连接,则在中心服务器上创建第一任务队列和第二任务队列,其中,第一任务队列由当前处于在线状态的用于执行待执行的任务文件的全部终端共享,第二任务队列由当前终端独享。
RabbitMQ的队列通过一个关键词绑定到交换器中。交换器在投递消息时根据关键词将消息投递到对应的队列中。为此,在本发明的一个可选实施例中,客户端程序将通过pika模块连接到RabbitMQ服务器,然后创建两个消息队列,其中一个队列通过一个固定的关键词“normaltask”绑定到交换器中,并以这个关键词作为这个队列的名字,此处称之为公共队列;另一个队里以节点机自身的唯一标识作为关键词绑定到交换器中,同样,以关键词作为队列的名字,此处称之为节点队列。考虑到在RabbitMQ中,所有创建已存在名字队列的行为都会被忽略,因此,当所有客户端程序都执行过创建两个消息队列的操作之后,便可以形成所有客户端程序共享同一个公共队列,以及所有客户端程序都拥有属于自己的一个节点队列。
可选地,在步骤S44,接收中心服务器分发的待执行的任务文件之前,还可以包括以下执行步骤:
步骤S42,通过预设图形界面编程方式在***托盘区显示托盘图标,其中,托盘图标用于指示终端本地当前的工作状态;
步骤S43,响应托盘图标接收到的控制操作,生成设置界面,其中,设置界面用于限制执行待执行的任务文件所占用的硬件资源上限值以及登录中心服务器。
在一个可选实施例中,通过PyQt5可以编写可视化操作界面,从而使得节点机在运行客户端程序时能够通过鼠标进行可视化操作,以配置、启动或暂停客户端程序。在启动运行时的主类为EasetaskNodeTray类,即***托盘类,这个类的功能是通过PyQt5在***托盘区显示一个托盘图标。当客户端程序的状态改变时,通过调用PyQt5模块的QSystemTrayIcon.setIcon()方法来改变该图标,以简明地指示客户端程序的当前工作状态,例如:离线或忙碌。如果通过左键点击该图标,则会调用EasetaskNodeWindow类,通过PyQt5生成设置界面,用于修改客户端程序的配置参数和节点机登录中心服务器等功能。通过编写客户端可视化操作界面,极大地降低了客户端程序的使用门槛,从而使得更多终端可以作为节点机加入到中心服务器的管理,进而提高闲置硬件资源的利用率。
图7是根据本发明其中一可选实施例的客户端可视化界面设置示意图,如图7所示,客户端的使用极其简单,双击即可启动程序,无需复杂的配置编译操作而且无任何使用门槛。任何运行客户端程序的终端即视为一个节点机。用户在节点机上通过用户名和密码成功登录客户端程序之后,可以通过设置界面配置客户端执行调度任务时所需使用的硬件资源上限,包括但不限于:存储空间、内存大小。此外,还可以通过节点机上的客户端可视化界面的下拉菜单中选择任务分发服务器(即中心服务器,例如:192.168.46.X),然后,该节点机便能够接收该中心服务器下发的任务,并利用当前分配的闲置资源执行该任务。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种任务请求的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图8是根据本发明其中一实施例的一种任务请求的处理装置的结构框图,如图8所示,该装置包括:第一接收模块10,用于接收来自于第一终端的任务请求,其中,任务请求中携带的信息包括:待执行的任务文件和任务参数,任务参数至少包括:任务类别;处理模块11,用于根据任务参数确定至少一个第二终端,并将待执行的任务文件分发至至少一个第二终端。
可选地,处理模块11,用于当任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端;当任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与指定任务对应的一个第二终端;当任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与广播任务对应的多个第二终端。
可选地,处理模块11包括:第一确定单元(图中未示出),用于根据普通任务确定第一关键词;第一处理单元(图中未示出),用于按照第一关键词将待执行的任务文件投递至第一任务队列,其中,第一任务队列由当前处于在线状态的全部第二终端共享。
可选地,处理模块11包括:第二确定单元(图中未示出),用于根据指定任务确定第二关键词;第二处理单元(图中未示出),用于按照第二关键词将待执行的任务文件投递至第二任务队列,其中,第二任务队列由指定任务对应的第二终端独享。
可选地,处理模块11包括:第三确定单元(图中未示出),用于根据广播任务确定多个第二关键词;第三处理单元(图中未示出),用于按照多个第二关键词将待执行的任务文件依次投递至与每个第二关键词对应的第二任务队列,其中,第二任务队列由每个第二关键词对应的第二终端独享。
可选地,处理模块11,还用于对待执行的任务文件进行加密处理,并将加密后的待执行的任务文件分发至至少一个第二终端。
可选地,图9是根据本发明其中一可选实施例的一种任务请求的处理装置的结构框图,如图9所示,该装置除包括图8所示的所有模块外,还包括:检测模块12,用于检测到至少一个第二终端断开连接;处理模块11,还用于从当前处于在线状态的剩余第二终端中确定一个或多个第二终端,并将待执行的任务文件分发至一个或多个第二终端。
可选地,如图9所示,上述装置还包括:第一反馈模块13,用于将待执行的任务文件的执行状态或执行结果返回至第一终端。
可选地,如图9所示,上述装置还包括:第二接收模块14,用于接收来自于第一终端的查询请求,其中,查询请求用于查询当前处于在线状态的第二终端的信息;第二反馈模块15,用于响应于查询请求,向第一终端返回查询结果。
可选地,如图9所示,上述装置还包括:设置模块16,用于向第一终端提供预设应用程序接口,其中,预设应用程序接口按照表述性状态转移方式设置,预设应用程序接口用于配置提交任务请求的前端界面和方式。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
在本实施例中还提供了另一种任务请求的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图10是根据本发明其中一实施例的另一种任务请求的处理装置的结构框图,如图10所示,该装置包括:接收模块20,用于接收中心服务器分发的待执行的任务文件,其中,待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,任务参数至少包括:任务类别;处理模块21,用于执行待执行的任务文件。
可选地,待执行的任务文件由中心服务器进行加密处理,得到加密后的待执行的任务文件。
可选地,处理模块21包括:存储单元(图中未示出),用于将加密后的待执行的任务文件存储至本地硬盘;复制单元(图中未示出),用于将加密后的待执行的任务文件拷贝至本地预先创建的虚拟文件***,其中,虚拟文件***是与当前终端隔离的任务运行环境;第一处理单元(图中未示出),用于在虚拟文件***中通过对加密后的待执行的任务文件进行解密处理,得到待执行的任务文件并在虚拟文件***中执行待执行的任务文件。
可选地,处理模块21还包括:监控单元(图中未示出),用于通过第一线程实时监控第二线程在执行待执行的任务文件时所占用的本地硬件资源;第二处理单元(图中未示出),用于当通过第一线程监控到第二线程所占用的本地硬件资源超过预设资源上限值时,向第二线程发送通知消息,以使第二线程停止执行待执行的任务文件,并通过第二线程向中心服务器返回任务失败消息和失败原因同时释放在执行待执行的任务文件时所占用的本地硬件资源。
可选地,图11是根据本发明其中一可选实施例的另一种任务请求的处理装置的结构框图,如图11所示,该装置除包括图10所示的所有模块外,还包括:连接模块22,用于尝试与中心服务器建立连接;创建模块23,用于如果成功建立连接,则在中心服务器上创建第一任务队列和第二任务队列,其中,第一任务队列由当前处于在线状态的用于执行待执行的任务文件的全部终端共享,第二任务队列由当前终端独享。
可选地,如图11所示,上述装置还包括:显示模块24,用于通过预设图形界面编程方式在***托盘区显示托盘图标,其中,托盘图标用于指示终端本地当前的工作状态;生成模块25,用于响应托盘图标接收到的控制操作,生成设置界面,其中,设置界面用于限制执行待执行的任务文件所占用的硬件资源上限值以及登录中心服务器。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,接收来自于第一终端的任务请求,其中,任务请求中携带的信息包括:待执行的任务文件和任务参数,任务参数至少包括:任务类别;
S2,根据任务参数确定至少一个第二终端,并将待执行的任务文件分发至至少一个第二终端。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,接收中心服务器分发的待执行的任务文件,其中,待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,任务参数至少包括:任务类别;
S2,执行待执行的任务文件。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种处理器,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,接收来自于第一终端的任务请求,其中,任务请求中携带的信息包括:待执行的任务文件和任务参数,任务参数至少包括:任务类别;
S2,根据任务参数确定至少一个第二终端,并将待执行的任务文件分发至至少一个第二终端。
可选地,在本实施例中,上述处理器还可以被设置为通过计算机程序执行以下步骤:
S1,接收中心服务器分发的待执行的任务文件,其中,待执行的任务文件由中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,任务参数至少包括:任务类别;
S2,执行待执行的任务文件。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (18)
1.一种任务请求的处理方法,其特征在于,包括:
接收中心服务器分发的待执行的任务文件,其中,所述待执行的任务文件由所述中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,所述任务参数至少包括:任务类别;
执行所述待执行的任务文件;
其中,所述任务参数用于确定至少一个第二终端,当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端;当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端;当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端;
其中,当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端包括:根据所述普通任务确定第一关键词;按照所述第一关键词将所述待执行的任务文件投递至第一任务队列,其中,所述第一任务队列由所述当前处于在线状态的全部第二终端共享;
其中,当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端包括:根据所述指定任务确定第二关键词;按照所述第二关键词将所述待执行的任务文件投递至第二任务队列,其中,所述第二任务队列由所述指定任务对应的第二终端独享;
其中,当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端包括:根据所述广播任务确定多个第二关键词;按照所述多个第二关键词将所述待执行的任务文件依次投递至与每个第二关键词对应的第二任务队列,其中,所述第二任务队列由每个第二关键词对应的第二终端独享。
2.根据权利要求1所述的方法,其特征在于,所述待执行的任务文件由所述中心服务器进行加密处理,得到加密后的所述待执行的任务文件。
3.根据权利要求2所述的方法,其特征在于,执行所述待执行的任务文件包括:
将加密后的所述待执行的任务文件存储至本地硬盘;
将加密后的所述待执行的任务文件拷贝至本地预先创建的虚拟文件***,其中,所述虚拟文件***是与当前终端隔离的任务运行环境;
在所述虚拟文件***中通过对加密后的所述待执行的任务文件进行解密处理,得到所述待执行的任务文件并在所述虚拟文件***中执行所述待执行的任务文件。
4.根据权利要求1所述的方法,其特征在于,在执行所述待执行的任务文件的过程中,还包括:
通过第一线程实时监控第二线程在执行所述待执行的任务文件时所占用的本地硬件资源;
当通过所述第一线程监控到所述第二线程所占用的本地硬件资源超过预设资源上限值时,向所述第二线程发送通知消息,以使所述第二线程停止执行所述待执行的任务文件,并通过所述第二线程向所述中心服务器返回任务失败消息和失败原因同时释放在执行所述待执行的任务文件时所占用的本地硬件资源。
5.根据权利要求1所述的方法,其特征在于,在接收所述中心服务器分发的所述待执行的任务文件之前,还包括:
尝试与所述中心服务器建立连接;
如果成功建立连接,则在所述中心服务器上创建第一任务队列和第二任务队列,其中,所述第一任务队列由当前处于在线状态的用于执行所述待执行的任务文件的全部终端共享,所述第二任务队列由当前终端独享。
6.根据权利要求1所述的方法,其特征在于,在接收所述中心服务器分发的所述待执行的任务文件之前,还包括:
通过预设图形界面编程方式在***托盘区显示托盘图标,其中,所述托盘图标用于指示终端本地当前的工作状态;
响应所述托盘图标接收到的控制操作,生成设置界面,其中,所述设置界面用于限制执行所述待执行的任务文件所占用的硬件资源上限值以及登录所述中心服务器。
7.一种任务请求的处理方法,其特征在于,包括:
接收来自于第一终端的任务请求,其中,所述任务请求中携带的信息包括:待执行的任务文件和任务参数,所述任务参数至少包括:任务类别;
根据所述任务参数确定至少一个第二终端,并将所述待执行的任务文件分发至所述至少一个第二终端;
其中,根据所述任务参数确定所述至少一个第二终端包括以下之一:当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端;当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端;当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端;
其中,当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端包括:根据所述普通任务确定第一关键词;按照所述第一关键词将所述待执行的任务文件投递至第一任务队列,其中,所述第一任务队列由所述当前处于在线状态的全部第二终端共享;
其中,当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端包括:根据所述指定任务确定第二关键词;按照所述第二关键词将所述待执行的任务文件投递至第二任务队列,其中,所述第二任务队列由所述指定任务对应的第二终端独享;
其中,当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端包括:根据所述广播任务确定多个第二关键词;按照所述多个第二关键词将所述待执行的任务文件依次投递至与每个第二关键词对应的第二任务队列,其中,所述第二任务队列由每个第二关键词对应的第二终端独享。
8.根据权利要求7所述的方法,其特征在于,将所述待执行的任务文件分发至所述至少一个第二终端包括:
对所述待执行的任务文件进行加密处理;
将加密后的所述待执行的任务文件分发至所述至少一个第二终端。
9.根据权利要求7所述的方法,其特征在于,在将所述待执行的任务文件分发至所述至少一个第二终端之后,还包括:
检测到所述至少一个第二终端断开连接;
从当前处于在线状态的剩余第二终端中确定一个或多个第二终端,并将所述待执行的任务文件分发至所述一个或多个第二终端。
10.根据权利要求7所述的方法,其特征在于,在将所述待执行的任务文件分发至所述至少一个第二终端之后,还包括:
将所述待执行的任务文件的执行状态或执行结果返回至所述第一终端。
11.根据权利要求7所述的方法,其特征在于,在接收来自于所述第一终端的所述任务请求之前,还包括:
接收来自于所述第一终端的查询请求,其中,所述查询请求用于查询当前处于在线状态的第二终端的信息;
响应于所述查询请求,向所述第一终端返回查询结果。
12.根据权利要求7所述的方法,其特征在于,在接收来自于所述第一终端的所述任务请求之前,还包括:
向所述第一终端提供预设应用程序接口,其中,所述预设应用程序接口按照表述性状态转移方式设置,所述预设应用程序接口用于配置提交所述任务请求的前端界面和方式。
13.一种任务请求的处理装置,其特征在于,包括:
接收模块,用于接收中心服务器分发的待执行的任务文件,其中,所述待执行的任务文件由所述中心服务器根据第一终端提交的任务请求中携带的任务参数进行分发,所述任务参数至少包括:任务类别;
处理模块,用于执行所述待执行的任务文件;
其中,所述任务参数用于确定至少一个第二终端,当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端;当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端;当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端;
其中,当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端包括:根据所述普通任务确定第一关键词;按照所述第一关键词将所述待执行的任务文件投递至第一任务队列,其中,所述第一任务队列由所述当前处于在线状态的全部第二终端共享;
其中,当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端包括:根据所述指定任务确定第二关键词;按照所述第二关键词将所述待执行的任务文件投递至第二任务队列,其中,所述第二任务队列由所述指定任务对应的第二终端独享;
其中,当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端包括:根据所述广播任务确定多个第二关键词;按照所述多个第二关键词将所述待执行的任务文件依次投递至与每个第二关键词对应的第二任务队列,其中,所述第二任务队列由每个第二关键词对应的第二终端独享。
14.一种任务请求的处理装置,其特征在于,包括:
第一接收模块,用于接收来自于第一终端的任务请求,其中,所述任务请求中携带的信息包括:待执行的任务文件和任务参数,所述任务参数至少包括:任务类别;
处理模块,用于根据所述任务参数确定至少一个第二终端,并将所述待执行的任务文件分发至所述至少一个第二终端;
其中,所述处理模块,还用于当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端;当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端;当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端;
其中,当所述任务类别为普通任务时,从当前处于在线状态的全部第二终端中随机选取一个第二终端包括:根据所述普通任务确定第一关键词;按照所述第一关键词将所述待执行的任务文件投递至第一任务队列,其中,所述第一任务队列由所述当前处于在线状态的全部第二终端共享;
其中,当所述任务类别为指定任务时,从当前处于在线状态的全部第二终端中确定与所述指定任务对应的一个第二终端包括:根据所述指定任务确定第二关键词;按照所述第二关键词将所述待执行的任务文件投递至第二任务队列,其中,所述第二任务队列由所述指定任务对应的第二终端独享;
其中,当所述任务类别为广播任务时,从当前处于在线状态的全部第二终端中确定与所述广播任务对应的多个第二终端包括:根据所述广播任务确定多个第二关键词;按照所述多个第二关键词将所述待执行的任务文件依次投递至与每个第二关键词对应的第二任务队列,其中,所述第二任务队列由每个第二关键词对应的第二终端独享。
15.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至6中任意一项所述的任务请求的处理方法或者权利要求7至12中任意一项所述的任务请求的处理方法。
16.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至6中任意一项所述的任务请求的处理方法或者权利要求7至12中任意一项所述的任务请求的处理方法。
17.一种终端,其特征在于,包括:一个或多个处理器,存储器,显示装置以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序用于执行权利要求1至6中任意一项所述的任务请求的处理方法。
18.一种服务器,其特征在于,包括:一个或多个处理器,存储器以及一个或多个程序,其中,所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述一个或多个程序用于执行权利要求7至12中任意一项所述的任务请求的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252690.4A CN109471710B (zh) | 2018-10-25 | 2018-10-25 | 任务请求的处理方法、装置、处理器、终端及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811252690.4A CN109471710B (zh) | 2018-10-25 | 2018-10-25 | 任务请求的处理方法、装置、处理器、终端及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109471710A CN109471710A (zh) | 2019-03-15 |
CN109471710B true CN109471710B (zh) | 2021-05-25 |
Family
ID=65666230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811252690.4A Active CN109471710B (zh) | 2018-10-25 | 2018-10-25 | 任务请求的处理方法、装置、处理器、终端及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471710B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110224922B (zh) * | 2019-05-21 | 2022-04-19 | 成都路行通信息技术有限公司 | 一种基于RabbitMQ的异步消息重试方法、***及***构建方法 |
CN110209849B (zh) * | 2019-06-04 | 2022-03-25 | 北京字节跳动网络技术有限公司 | 用于标注关键点的方法和装置 |
CN110413388A (zh) * | 2019-07-05 | 2019-11-05 | 深圳壹账通智能科技有限公司 | 基于业务***的多任务处理方法、装置、设备及存储介质 |
CN110505282B (zh) * | 2019-07-31 | 2022-05-10 | 湖南微算互联信息技术有限公司 | 云手机应用程序上架的方法、***、装置及存储介质 |
CN110753090A (zh) * | 2019-09-20 | 2020-02-04 | 平安普惠企业管理有限公司 | 服务器集群的任务执行方法、装置、计算机设备及存储介质 |
CN111046031A (zh) * | 2019-12-13 | 2020-04-21 | 智器云南京信息科技有限公司 | 一种数据处理方法、***、终端设备和存储介质 |
CN111158889A (zh) * | 2020-01-02 | 2020-05-15 | 中国银行股份有限公司 | 一种批量任务处理方法及*** |
CN111339031A (zh) * | 2020-02-25 | 2020-06-26 | 广州拉卡拉信息技术有限公司 | 一种任务处理方法、装置、电子设备及计算机可读存储介质 |
CN111556126B (zh) * | 2020-04-24 | 2023-04-18 | 杭州浮云网络科技有限公司 | 模型管理方法、***、计算机设备和存储介质 |
CN111556128B (zh) * | 2020-04-24 | 2023-04-07 | 深圳警翼软件技术有限公司 | 一种数据传输方法和*** |
CN111813973A (zh) * | 2020-05-18 | 2020-10-23 | 冠群信息技术(南京)有限公司 | 一种证照转换方法及*** |
CN111885105A (zh) * | 2020-06-16 | 2020-11-03 | 广州三七互娱科技有限公司 | 任务执行方法、装置、***、计算机设备和存储介质 |
CN111953932A (zh) * | 2020-06-30 | 2020-11-17 | 视联动力信息技术股份有限公司 | 数据处理方法、装置、终端设备和存储介质 |
CN112114977A (zh) * | 2020-08-04 | 2020-12-22 | 福建亿能达信息技术股份有限公司 | 一种跨平台的业务***对接方法和装置 |
CN112866404B (zh) * | 2021-02-03 | 2023-01-24 | 视若飞信息科技(上海)有限公司 | 一种半云***及执行方法 |
CN115495223A (zh) * | 2022-11-18 | 2022-12-20 | 安徽华云安科技有限公司 | 任务安全调度方法、装置、设备以及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932767A (zh) * | 2005-09-15 | 2007-03-21 | 首都信息发展股份有限公司 | 一种虚拟硬件加速方法及*** |
CN101883003A (zh) * | 2009-05-08 | 2010-11-10 | 华北电力大学 | 一种计算机操作***强制运行方法 |
CN102131189A (zh) * | 2010-12-28 | 2011-07-20 | 中国电信股份有限公司 | 采集仪、移动监管方法和*** |
CN102307224A (zh) * | 2011-05-17 | 2012-01-04 | 华为软件技术有限公司 | 云计算***中业务隔离的实现方法及装置、云服务器 |
CN104010045A (zh) * | 2014-06-12 | 2014-08-27 | 国家计算机网络与信息安全管理中心 | 基于云平台的移动节点执行任务的方法 |
CN104834595A (zh) * | 2015-02-15 | 2015-08-12 | 网易(杭州)网络有限公司 | 一种可视化自动测试方法及*** |
CN106656525A (zh) * | 2016-09-21 | 2017-05-10 | 华为技术有限公司 | 一种数据广播***、数据广播方法及设备 |
CN106909465A (zh) * | 2015-12-22 | 2017-06-30 | 太原超算在线科技有限公司 | 一种Linux作业管理方法及其Windows客户端 |
CN108268372A (zh) * | 2017-07-24 | 2018-07-10 | 深圳壹账通智能科技有限公司 | Mock测试处理方法、装置、存储介质和计算机设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101504617B (zh) * | 2009-03-23 | 2011-05-11 | 华为技术有限公司 | 一种基于处理器共享内存的数据发送方法及装置 |
-
2018
- 2018-10-25 CN CN201811252690.4A patent/CN109471710B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1932767A (zh) * | 2005-09-15 | 2007-03-21 | 首都信息发展股份有限公司 | 一种虚拟硬件加速方法及*** |
CN101883003A (zh) * | 2009-05-08 | 2010-11-10 | 华北电力大学 | 一种计算机操作***强制运行方法 |
CN102131189A (zh) * | 2010-12-28 | 2011-07-20 | 中国电信股份有限公司 | 采集仪、移动监管方法和*** |
CN102307224A (zh) * | 2011-05-17 | 2012-01-04 | 华为软件技术有限公司 | 云计算***中业务隔离的实现方法及装置、云服务器 |
CN104010045A (zh) * | 2014-06-12 | 2014-08-27 | 国家计算机网络与信息安全管理中心 | 基于云平台的移动节点执行任务的方法 |
CN104834595A (zh) * | 2015-02-15 | 2015-08-12 | 网易(杭州)网络有限公司 | 一种可视化自动测试方法及*** |
CN106909465A (zh) * | 2015-12-22 | 2017-06-30 | 太原超算在线科技有限公司 | 一种Linux作业管理方法及其Windows客户端 |
CN106656525A (zh) * | 2016-09-21 | 2017-05-10 | 华为技术有限公司 | 一种数据广播***、数据广播方法及设备 |
CN108268372A (zh) * | 2017-07-24 | 2018-07-10 | 深圳壹账通智能科技有限公司 | Mock测试处理方法、装置、存储介质和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109471710A (zh) | 2019-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109471710B (zh) | 任务请求的处理方法、装置、处理器、终端及服务器 | |
KR102286129B1 (ko) | 리소스 공유 방법, 장치 및 시스템 | |
US9667799B2 (en) | Communication system architecture | |
CN112513813A (zh) | 在按需网络代码执行***中执行辅助功能 | |
TWI559153B (zh) | 分散式計算架構 | |
EP3058698B1 (en) | Communication system achitecture | |
US20090006537A1 (en) | Virtual Desktop Integration with Terminal Services | |
CN111338774A (zh) | 分布式定时任务调度***及计算装置 | |
CN105022659B (zh) | 虚拟机状态控制方法与*** | |
CN111625496B (zh) | 分布式文件***在虚拟机环境下的部署方法、装置及设备 | |
EP3058700B1 (en) | Communication system architecture | |
US10346618B1 (en) | Data encryption for virtual workspaces | |
US9641558B2 (en) | Communication system architecture | |
WO2021159831A1 (zh) | 编程平台的用户代码运行方法及平台、节点、设备、介质 | |
US9609027B2 (en) | Communication system architecture | |
CN112948248B (zh) | 云计算服务中的软件调试的方法和装置 | |
CN108898026A (zh) | 数据加密方法和装置 | |
CN111158938A (zh) | 一种基于qkd的服务器与浏览器客户端之间的通信方法 | |
CN107454160B (zh) | 信息处理方法、移动终端及计算机可读存储介质 | |
JP2018514023A (ja) | コンテンツ・デプロイメント、スケーリングおよびテレメトリ | |
EP4057582B1 (en) | Device management method and apparatus | |
CN110768855A (zh) | 链路化性能测试的方法和装置 | |
US20240214434A1 (en) | Remote desktop connection communications | |
CN117997903A (zh) | 一种资源处理方法及相关装置 | |
WO2016082870A1 (en) | Communication system architecture |
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 |