CN113900811A - 事件驱动的任务调度的方法及装置 - Google Patents

事件驱动的任务调度的方法及装置 Download PDF

Info

Publication number
CN113900811A
CN113900811A CN202111182687.1A CN202111182687A CN113900811A CN 113900811 A CN113900811 A CN 113900811A CN 202111182687 A CN202111182687 A CN 202111182687A CN 113900811 A CN113900811 A CN 113900811A
Authority
CN
China
Prior art keywords
message queue
request message
module
message
request
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.)
Pending
Application number
CN202111182687.1A
Other languages
English (en)
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.)
Wanyi Technology Co Ltd
Original Assignee
Wanyi 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 Wanyi Technology Co Ltd filed Critical Wanyi Technology Co Ltd
Priority to CN202111182687.1A priority Critical patent/CN113900811A/zh
Publication of CN113900811A publication Critical patent/CN113900811A/zh
Pending legal-status Critical Current

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
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

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

本申请提供了一种事件驱动的任务调度方法及装置,该方法用于业务函数支撑***,该***包括函数创建模块、网关模块、消息队列模块和工作器模块;函数创建模块接收第一请求消息并创建函数;网关模块接收第二请求消息进入流程;消息队列模块存储第一请求消息和第二请求消息,形成第一消息队列;若工作器模块监听到第一消息队列,则创建与第一消息队列对应的工作任务;处理工作任务并将结果存入消息队列模块,形成第二消息队列;若网关模块监听到第二消息队列,则将第二消息队列发送给用户提供回调服务。本申请实施例基于事件驱动的方法可以实现请求的安全隔离以及无遗漏、低延迟调度任务。

Description

事件驱动的任务调度的方法及装置
技术领域
本申请涉及开源的函数计算技术领域,具体涉及一种事件驱动的任务调度方法及相关装置。
背景技术
目前,开源业务函数支撑***(open function as a service,OpenFaaS),其主要目标是使用Docker容器简化无服务器函数,OpenFaaS架构基于云原生标准,包括以下组件:API网关、Watchdog、容器编排器Kubernetes、Docker Swarm、Prometheus和Docker。
现有的公有云业务函数支撑***(function as a service,FaaS)对于函数执行时长有严格要求,不能支持小时级别的执行时长,同时对于资源的使用也有诸多限制。
发明内容
本申请提供一种事件驱动的任务调度方法及相关装置,以期构建一个通用的FaaS框架解决现有FaaS框架不支持超长执行时间和超常规CPU/内存设置,实现请求的安全隔离以及无遗漏、低延迟调度任务。
第一方面,本申请实施例提供一种事件驱动的任务调度方法,其特征在于,所述事件驱动的任务调度方法用于业务函数支撑***,所述业务函数支撑***包括网关模块、消息队列模块和工作器模块;所述方法包括:
所述网关模块接收第一请求消息,解析出所述第一请求消息的请求参数,并将所述第一请求消息推送到所述消息队列模块;
所述消息队列模块存储所述第一请求消息,形成第一消息队列;
所述工作器模块监听所述第一消息队列,创建与所述第一请求消息对应的工作任务,所述工作任务将处理结果作为第二请求消息推送到所述消息队列模块;
所述消息队列模块存储所述第二请求消息,形成第二消息队列;
所述网关模块监听所述第二消息队列,将所述第二请求消息发送给用户提供回调服务。
第二方面,本申请实施例提供一种事件驱动的任务调度的装置,其特征在于,包括:
接收单元,用于接收第一请求消息和第三请求消息,所述第一请求消息用于指示进入流程,所述第三请求消息用于指示创建目标业务函数;
网关单元,所述网关单元与所述接收单元相连,所述网关单元用于解析所述第一请求消息的请求参数;
存储单元,所述存储单元与所述网关单元连接,用于存储所述第一请求消息;
工作单元,所述函数定义单元与所述存储单元相连接,用于创建与所述第一消息队列对应的工作任务,所述工作单元是所述业务函数支撑***中用于创建所述工作任务的组件;
消息队列单元,所述消息队列单元与所述网关单元和工作单元相连,所述消息队列单元用于存储所述第一请求消息和第二请求消息,形成第一消息队列和第二消息队列,所述第一请求队列与所述第一请求消息一一对应,所述第二请求消息用于指示所述工作任务的处理结果。
第三方面,本申请实施例提供了一种电子设备,上述设备包括:
一个或多个处理器;
一个或多个存储器,用于存储程序,一个或多个通信接口,所述通信接口用于进行无线通信,所述存储器和所述通信接口相互连接,并且完成相互间的通信工作;一个或多个存储器和程序被配置为,由一个或多个处理器控制所述设备执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有用于电子数据交换的计算机程序,计算机程序包括执行指令,执行指令用于执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,计算机程序产品包括计算机程序,计算机程序可操作来使计算机执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中,通过函数创建模块接收第一请求消息并创建函数;网关模块接收第二请求消息进入流程;消息队列模块存储第一请求消息和第二请求消息,形成第一消息队列;若工作器模块监听到第一消息队列,则创建与第一消息队列对应的工作任务;处理工作任务并将结果存入消息队列模块,形成第二消息队列;若网关模块监听到第二消息队列,则将第二消息队列发送给用户提供回调服务。本申请实施例基于事件驱动的方法可以实现请求的安全隔离以及无遗漏、低延迟调度任务。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种业务函数支撑***的结构示意图;
图2是本申请实施例提供的一种事件驱动的任务调度的方法的流程示意图;
图3是本申请实施例提供的一种事件驱动的任务调度的装置的结构示意图;
图4是本申请实施例提供的另一种事件驱动的任务调度的装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤的过程、方法、***、产品或设备没有限定于已列出的步骤,而是可选地还包括没有列出的步骤,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
相关设计中,原本的工作器模块faas-worker需要保持同工作任务job的长连接,同步连接会带来最主要的两个问题:性能问题,即连接的数量不能过多;超时问题,即同步连接需要设置超时时间且通常较短,以尽快释放连接资源避免***崩溃。
针对上述问题,本申请实施例提出了一种事件驱动的任务调度的方法及装置,该方法用于业务函数支撑***,该***包括函数创建模块、网关模块、消息队列模块和工作器模块;函数创建模块接收第一请求消息并创建函数;网关模块接收第二请求消息进入流程;消息队列模块存储第一请求消息和第二请求消息,形成第一消息队列;若工作器模块监听到第一消息队列,则创建与第一消息队列对应的工作任务;处理工作任务并将结果存入消息队列模块,形成第二消息队列;若网关模块监听到第二消息队列,则将第二消息队列发送给用户提供回调服务。本申请实施例基于事件驱动的方法可以实现请求的安全隔离以及无遗漏、低延迟调度任务。
为了更好理解本发明实施例公开的一种事件驱动的任务调度的方法及装置,下面对本发明实施例进行详细介绍。
下面先对本发明实施例适用的网络构架进行描述。请参阅图1,图1是本发明实施例公开的一种业务函数支撑***的结构示意图。如图1所示,该网络构架10,具体包括:
函数创建模块110:所述函数创建模块110可以称之为FaaS-builder,用于接收用户创建目标业务函数的请求并定义函数。
网关模块120:所述网关模块120可以是应用程序接口API网关模块FaaS-gateway,是业务函数支撑***10的入口网关,用于接收请求并返回响应。
工作器模块130:所述工作器模块130可以是FaaS-worker,是业务函数支撑***10中用于创建所述工作任务Job的组件。
容器编排组件140:所述容器编排组件140可以是Kubernetes K8s模块,用于对所述目标业务函数实例的伸缩策略进行伸缩处理。
其中,所述目标业务函数实例可以包括审图业务中的图纸推断函数、图元识别函数、结构规则审查函数等,此处不做唯一限定。
消息队列组件150:所述消息队列组件150可以是Rabbit MQ,用于存储消息请求队列和工作任务处理结果消息队列,RabbitMQ是由erlang语言开发,基于高级消息队列协议(advanced message queuing protocol,AMQP)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式***开发中应用非常广泛。
具体地,本实施例中提出来的业务函数支撑***中,消息队列模块150从原来的网关模块120和工作器模块130二者沟通的媒介,变为网关模块120、工作器模块130和工作任务Job三者的沟通媒介;改进后工作器模块130和工作任务Job之间不再保持同步连接,从同步调整为异步。
基于此,本申请实施例提供的一种事件驱动的任务调度的方法,请参阅图2,图2是本申请实施例提供的一种事件驱动的任务调度方法的流程示意图,应用于业务函数支撑***,所述业务函数支撑***包括函数创建模块、网关模块、消息队列模块和工作器模块;如图所示,本事件驱动的任务调度方法包括以下操作流程:
步骤201,所述网关模块接收第一请求消息,解析出所述第一请求消息的请求参数,并将所述第一请求消息推送到所述消息队列模块。
示例性地,用户通过所述第二请求消息向***传递进入流程的请求,网关模块FaaS-gateway接收和处理成千上万个并发API调用的第二请求消息。
具体的,该请求消息包括但不限于流量管理、授权和访问控制、监控等。
步骤202,所述消息队列模块存储所述第一请求消息,形成第一消息队列。
步骤203,所述工作器模块监听所述第一消息队列,创建与所述第一请求消息对应的工作任务,所述工作任务将处理结果作为第二请求消息推送到所述消息队列模块。
示例性地,当工作器模块监听到消息队列模块中的第一消息队列不为空时,即创建与之对应的工作任务,并把每一个请求中所包含的信息传递到该工作任务中。
进一步的,每一个对应的工作任务可以进行资源动态配置,具体包括但不限于:设定不同的超时、内存和CPU等诸多配置。
步骤204,所述消息队列模块存储所述第二请求消息,形成第二消息队列。
示例性地,所述第二请求消息用于指示所述工作任务的处理结果。在上述步骤203中,每创建一个工作任务,就会有一个对应的工作实例需要处理。工作任务创建完成后,其内部即针对每一个工作实例进行处理产生与之对应的处理结果,形成第三请求消息。
进一步地,上述第二请求消息会顺序存入消息队列模块中,形成第二消息队列。
在一个可能的示例中,所述消息队列模块还用于获取所述工作实例的个数,以及从所述第一消息队列中获取用户请求的个数和所述第二消息队列中获取所述处理结果的个数。
步骤205,所述网关模块监听所述第二消息队列,将所述第二请求消息发送给用户提供回调服务。
示例性地,网关模块需要监听上述步骤204的第二消息队列,若第二消息队列不为空,则获取当前消息队列中存储的处理结果信息,并将处理结果信息发送给用户提供回调服务。
在一个可能的实施例中,上述实现网关模块监听的一种可能方式有:通过注册为消息队列模块MQ的消费者,实现对MQ中任务的监听。
示例性地,在步骤202中提及,第一请求消息在消息队列模块中形成第一消息队列,网关模块可通过在消息队列中注册,获取与第一消息队列中每一个请求对应的监听标识。
进一步地,每一个工作实例的处理结果在存入消息队列模块时,也携带有与第一消息队列对应的标识信息。
进一步地,当网关模块每监听到一个工作实例对应的标识信息,即将当前任务的处理结果提供给用户回调服务。
在一个可能的实施例中,用户可以自定义网关模块进行API重置REST API,并在客户端调用REST API时对函数进行操作。
具体地,业务函数支撑***支持用户通过API/控制台手动触发函数,帮助用户更便捷、更清晰地调试和使用云函数。
进一步的,业务函数支撑***提供调用函数调的监控指标和运行日志采集和展示,方便用户查看函数运行状态。
具体地,上述函数监控指标为用户的每个提供调用次数,错误次数,拒绝次数,调用时延等关键指标监控,帮助用户了解函数的整体运行情况。函数的运行日志记录函数的运行日志,提供灵活的日志查询功能,方便用户查看函数的运行情况和进行调试与审计。
可以看出,本申请实施例中,通过函数创建模块接收第一请求消息并创建函数;网关模块接收第二请求消息进入流程;消息队列模块存储第一请求消息和第二请求消息,形成第一消息队列;若工作器模块监听到第一消息队列,则创建与第一消息队列对应的工作任务;处理工作任务并将结果存入消息队列模块,形成第二消息队列;若网关模块监听到第二消息队列,则将第二消息队列发送给用户提供回调服务。本申请实施例基于事件驱动的方法可以实现请求的安全隔离以及无遗漏、低延迟调度任务。同时,网关模块通过注册为消费者的方式进行监听,可以及时准确地将处理结果提供给相应的用户回调服务。
在一个可能的示例中,所述若所述工作器模块监听到所述第一消息队列,则创建与所述第一消息队列对应的工作任务,所述方法包括:所述工作器模块每监听到一个所述第一请求消息根据所述第一请求消息的请求参数创建一个对应的工作任务,并对所述工作任务进行资源动态配置,所述资源动态配置包括为每一个所述工作任务设定不同的超时、内存和CPU中至少一个。
示例性地,根据第一消息队列中请求类型的不同,针对每一个所述工作任务具体设置不同的资源配置。
可以看出,本申请实施例中,工作器模块通过动态生成工作任务和对工作任务进行资源动态配置。可以实现业务函数支撑***支持超长执行时间和超常规CPU/内存设置。同时,动态分配资源可以实现***资源的合理利用。
在一种可能的示例中,所述请求参数包括函数名称、业务参数和回调地址;其中,所述函数名称为必选项,所述业务参数和所述回调地址为可选项。
示例性地,所述网关模块接收第一请求消息之后,对上述第一请求消息进行参数解析,其中,参数包括函数名称、业务参数和回调地址;具体的,函数名称为必选项,业务参数和回调地址为可选项。
实际操作中,用户在编辑函数代码时支持类似工程方式的管理,可以创建文件、文件夹并对其进行编辑。
示例性地,生成器模块对现有的函数配置模板进行了修改,每一项配置分为默认值和动态值。其中,动态值可以从调用参数里提取,如果调用的参数中间没有进行设定,则直接选用默认值。
进一步地,容器编排器K8s将上述函数配置信息存储在配置命令表中。
示例性地,第一请求消息是表征用户进入流程的请求,其内容包括但不限于流量管理、授权和访问控制、监控等。由网关模块对所述第一请求消息进行参数处理,所述参数包括函数名称、业务参数和回调地址。
其中,所述函数名称为必选项,所述业务参数和所述回调地址为可选项。
可以看出,本申请实施例中,通过对现有的函数配置模板进行了修改,将每一项配置分为默认和动态值,可以提高函数定义过程中配置的灵活性。并且,将相关参数的设置存储于配置命令表中可以更便于后续步骤的获取和利用。
在一个可能的示例中,所述业务函数支撑***还包括函数创建模块,所述方法包括:所述函数创建模块用于创建目标业务函数,并将所述目标业务函数的配置信息存储在配置命令表中。
示例性地,函数创建模块接收第三请求消息,其中,第三请求消息用于指示创建目标业务函数。函数创建模块通过函数服务为第三请求消息设置配置信息;将配置信息存储在一个可移植容器的编排管理工具K8s的配置命令表中。
示例性地,用户通过所述第一请求消息向***传递创建函数的请求,该请求可以被视为一次事件。基于该事件的驱动,函数创建模块FaaS-builder接收所述第一请求消息后,通过函数服务,编写业务函数代码并设置运行的条件。
具体的,函数是实现某一功能所需代码、运行时、资源、设置的组合,是可以独立运行的最小单元。函数通过触发器Trigger触发,自行调度所需资源及环境,实现预期功能。
可以看出,本申请实施例中,通过函数服务创建目标函数,引入函数应用概念,用户可以按照业务逻辑在创建函数的时候创建函数应用,在相应函数应用下创建多个函数,方便管理跟业务相关的一组函数。
在一个可能的示例中,所述若所述工作器模块监听到所述第一消息队列,则创建与所述第一消息队列对应的工作任务之前,所述方法还包括:所述工作器模块根据所述第一请求消息的请求参数,从所述配置命令表中获取所述目标业务函数的配置信息;根据所述目标业务函数的配置信息生成与所述第一请求消息对应的所述工作任务。
示例性地,根据所述函数的定义信息生成与所述第一消息队列对应的所述工作任务,目标任务函数通过唯一标识与第一消息队列中的工作任务一一对应。
可以看出,本申请实施例中,可根据存储在配置命令表中的定义信息,分别进行工作任务创建。可以实现有序的产生工作任务,并且有序的传输至下一模块进行工作任务处理。
在一个可能的示例中,所述若所述工作器模块监听到所述第一消息队列,则创建与所述第一消息队列对应的工作任务之后,所述方法还包括:所述工作器模块根据所述第一消息队列中所述第一请求消息的数量创建相应数量的容器集合pod来处理各所述第一请求消息,所述容器集合pod是所述K8s的最小调度单元。
具体地,容器集合pod是K8s的最小运行单元。根据所述pod判断所述第一请求消息的处理进度的结果,然后选择扩容/缩容的策略。
例如,***可以提前为工作实例配置预设的伸缩表达式,表达式具体为:第一请求消息的数量/工作实例数>10,表示工作实例平均处理超过10个请求,需要进行工作实例的增加(扩容)。
在一个可能的示例中,在确定针对所述工作实例的扩容策略方面,可选的方法是:
获取所述目标业务函数对应的第一请求消息中已配置的工作实例的数量。
使用所述工作实例平均处理任务量减去所述工作实例平均处理任务数量阈值得到平均处理任务数量超额。
将所述平均处理任务数量超额乘以所述已配置的工作实例的数量得到总处理任务数量超额。
将所述总处理任务数量超额除以所述函数实例平均处理任务数量阈值并取整得到需要增加的工作实例的数量。
根据所述需要增加的工作实例的数量确定针对所述目标业务函数对应的第一请求消息数量的扩容策略。
举例来说,假设工作实例平均处理任务数量阈值为10,工作实例平均处理任务量为20,已配置的工作实例的数量为15个,则需要增加的工作实例的数量为15×(20-10)÷10=15个。
在本可能的示例中,在确定针对所述第一请求消息数量的缩容策略方面,可选的方法是:
获取所述第一请求消息数量的已配置的工作实例的数量。
使用所述工作实例平均处理任务数量阈值减去所述工作实例平均处理任务量得到平均处理任务数量差额。
将所述平均处理任务数量差额乘以所述已配置的工作实例的数量得到总处理任务数量差额。
将所述总处理任务数量差额除以所述工作实例平均处理任务数量阈值并取整得到需要减少的工作实例的数量。
根据所述需要减少的工作实例的数量确定针对所述第一请求消息数量的缩容策略。
举例来说,假设工作实例平均处理任务数量阈值为20,工作实例平均处理任务量为15,已配置的工作实例的数量为20个,则需要减少的工作实例的数量为20×(20-15)÷20=5个。
在另一个可能的示例中,可将所述容器编排器模块中的最多可以容忍的时间配置修改为可以配置,修改后的所述最多可以容忍的时间可以根据实际情况配置。
示例性地,容器编排器模块可以是Kubernetes即K8s,其作用是进行容器的部署和管理,旨在实现自动化操作容器的开源平台。
其中,实现自动化操作可具体表现为:支持应用程序容器在多个主机的集群上部署,扩展以及其他操作。使业务函数支撑***实现模块化,可以轻松地接入其他应用程序或框架。同时,它还提供额外的功能,例如自我修复服务、包括自动放置(auto-placement)、自动复制(auto-replication)和容器的自动重启(auto-restart)。
可以看出,本申请实施例中,通过修改容器编排器模块中的最多可以容忍的时间配置,实现最多可以容忍的时间可以根据实际情况配置,同时***能够根据函数实例平均处理任务量的情况确定精确的伸缩策略,提高精确度。
在一个可能的示例中,所述创建与所述第一请求消息对应的工作任务之后,所述方法还包括:所述工作器模块为所述工作任务创建异步模板,所述异步模板用于写入所述工作任务的处理结果;所述处理结果形成第二消息队列。
示例性地,为了获取执行结果创建了新的工作实例job的异步模板,在job执行完毕之后将所述处理结果放入MQ特定主题的消息队列中即第二消息队列;
具体的,模板可以视为填空题:空白区域表征的是业务算法和逻辑,模板固定的内容就是将空白区域的执行结果写入MQ。模板提供了一种抽象能力,不管执行了何种消息请求,最后都能将其结果写入MQ。
可以看出,本申请实施例中,通过创建新的工作实例job的异步模板,实现了在每一个job实例处理完成后,都能将其结果存入消息队列中,所述处理结果能够被网关模块所监听并反馈给用户回调服务,以此实现了消息的异步调度。
与上述图2所示的实施例一致的,请参阅图3,图3是本申请实施例提供的一种事件驱动的任务调度装置的结构示意图,如图3所示:
一种事件驱动的任务调度装置,上述装置包括:
301:接收单元,用于接收第一请求消息和第三请求消息,所述第一请求消息用于指示进入流程,所述第三请求消息用于指示创建目标业务函数。
302:网关单元,所述网关单元与所述接收单元相连,所述网关单元用于解析所述第一请求消息的请求参数。
303:存储单元,所述存储单元与所述网关单元连接,用于存储所述第一请求消息。
304:工作单元,所述函数定义单元与所述存储单元相连接,用于创建与所述第一消息队列对应的工作任务,所述工作单元是所述业务函数支撑***中用于创建所述工作任务的组件。
305:消息队列单元,所述消息队列单元与所述网关单元和工作单元相连,所述消息队列单元用于存储所述第一请求消息和第二请求消息,形成第一消息队列和第二消息队列,所述第一请求队列与所述第一请求消息一一对应,所述第二请求消息用于指示所述工作任务的处理结果。
可以看出,本申请实施例中,通过监听目标终端所执行的业务操作;若监听到所述业务操作中的目标触发事件,则采集所述目标触发事件的用户数据,所述用户数据包括属性信息和行为信息,所述属性信息用于描述用户的静态特征,所述行为信息应用描述用户的操作记录,所述目标触发事件为预设的用于指示事件驱动的任务调度的事件;向服务器的数据库发送所述用户数据。采用本申请实施例的方法,实现了实时地进行无埋点事件驱动的任务调度的客户数据并上报至服务器的数据库中,能够实现高吞吐量的处理数据,并支持海量的数据存储以及数据的高效聚合与实时分析。
具体地,本申请实施例可以根据上述方法示例对事件驱动的任务调度的装置进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
与上述图2所示的实施例一致的,请参阅图4,图4是本申请实施例提供的另一种事件驱动的任务调度的装置的结构示意图,如图4所示:
一种电子设备,包括:
一个或多个处理器;一个或多个存储器,用于存储程序,一个或多个通信接口,所述通信接口用于进行无线通信,所述存储器和所述通信接口相互连接,并且完成相互间的通信工作;一个或多个存储器和程序被配置为,由一个或多个处理器控制所述设备执行如本申请实施例第一方面任一方法中所描述的部分或全部步骤。
其中,存储器可以是易失性存储器如动态随机存储器DRAM,也可以是非易失性存储器如机械硬盘。上述存储器用于存储一组可执行程序代码,上述处理器用于调用存储器中存储的可执行程序代码,可以执行如上述事件驱动的任务调度的方法实施例中记载的任何一种事件驱动的任务调度的方法的部分或全部步骤。
上述无线通信可以使用任一通信标准或协议,包括但不限于GSM(Global Systemof Mobile communication,全球移动通讯***)、GPRS(General Packet Radio Service,通用分组无线服务)、CDMA2000(CodeDivision Multiple Access 2000,码分多址2000)、WCDMA(Wideband Code DivisionMultiple Access,宽带码分多址)、TD-SCDMA(TimeDivision-Synchronous CodeDivision Multiple Access,时分同步码分多址)、FDD-LTE(Frequency DivisionDuplexing-Long Term Evolution,频分双工长期演进)和TDD-LTE(Time DivisionDuplexing-Long Term Evolution,分时双工长期演进)等。
本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质中存储有用于电子数据交换的计算机程序,计算机程序包括执行指令,执行指令用于执行如上述事件驱动的任务调度的方法实施例中记载的任何一种事件驱动的任务调度的方法的部分或全部步骤,上述计算机包括电子终端设备。
本申请实施例提供了一种计算机程序产品,其中,计算机程序产品包括计算机程序,计算机程序可操作来使计算机如上述方法实施例中记载的任何一种事件驱动的任务调度的方法的部分或全部步骤,该计算机程序产品可以是一个软件安装包。
需要说明的是,对于前述的任一种事件驱动的任务调度的方法的实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请所必须的。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请一种事件驱动的任务调度的方法及装置的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请一种事件驱动的任务调度的方法及装置的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
本申请是参照本申请实施例的方法、硬件产品和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现所公开实施例的其他变化。在权利要求中,“包括”(comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
本领域普通技术人员可以理解上述任一种事件驱动的任务调度的方法实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
可以理解的是,凡是被控制或者被配置以用于执行本申请一种事件驱动的任务调度的方法实施例所描述的流程图的处理方法的产品,如上述流程图的装置以及计算机程序产品,均属于本申请所描述的相关产品的范畴。
显然,本领域的技术人员可以对本申请提供的一种事件驱动的任务调度的方法及装置进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种事件驱动的任务调度方法,其特征在于,所述事件驱动的任务调度方法用于业务函数支撑***,所述业务函数支撑***包括网关模块、消息队列模块和工作器模块;所述方法包括:
所述网关模块接收第一请求消息,解析出所述第一请求消息的请求参数,并将所述第一请求消息推送到所述消息队列模块;
所述消息队列模块存储所述第一请求消息,形成第一消息队列;
所述工作器模块监听所述第一消息队列,创建与所述第一请求消息对应的工作任务,所述工作任务将处理结果作为第二请求消息推送到所述消息队列模块;
所述消息队列模块存储所述第二请求消息,形成第二消息队列;
所述网关模块监听所述第二消息队列,将所述第二请求消息发送给用户提供回调服务。
2.根据权利要求1所述的方法,其特征在于,所述工作器模块监听到所述第一消息队列,则创建与所述第一消息队列对应的工作任务,所述方法包括:
所述工作器模块每监听到一个所述第一请求消息根据所述第一请求消息的请求参数创建一个对应的工作任务,并对所述工作任务进行资源动态配置,
所述资源动态配置包括为每一个所述工作任务设定不同的超时、内存和CPU中至少一个。
3.根据权利要求1所述的方法,其特征在于,所述请求参数包括函数名称、业务参数和回调地址;
其中,所述函数名称为必选项,所述业务参数和所述回调地址为可选项。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述业务函数支撑***还包括函数创建模块,所述方法包括:
所述函数创建模块用于创建目标业务函数,并将所述目标业务函数的配置信息存储在配置命令表中。
5.根据权利要求4所述的方法,其特征在于,所述工作器模块监听到所述第一消息队列,则创建与所述第一消息队列对应的工作任务之前,所述方法还包括:
所述工作器模块根据所述第一请求消息的请求参数,从所述配置命令表中获取所述目标业务函数的配置信息;
根据所述目标业务函数的配置信息生成与所述第一请求消息对应的所述工作任务。
6.根据权利要求1所述的方法,其特征在于,所述工作器模块监听到所述第一消息队列,则创建与所述第一消息队列对应的工作任务之后,所述方法还包括:
所述工作器模块根据所述第一消息队列中所述第一请求消息的数量创建相应数量的容器集合pod来处理各所述第一请求消息,所述容器集合pod是所述K8s的最小调度单元。
7.根据权利要求6中所述的方法,其特征在于,所述创建与所述第一请求消息对应的工作任务之后,所述方法还包括:
所述工作器模块为所述工作任务创建异步模板,所述异步模板用于写入所述工作任务的处理结果;
所述处理结果形成第二消息队列。
8.一种事件驱动的任务调度的装置,其特征在于,包括:
接收单元,用于接收第一请求消息和第三请求消息,所述第一请求消息用于指示进入流程,所述第三请求消息用于指示创建目标业务函数;
网关单元,所述网关单元与所述接收单元相连,所述网关单元用于解析所述第一请求消息的请求参数,并将所述第一请求消息推送到所述消息队列模块;
存储单元,所述存储单元与所述网关单元连接,用于存储所述第一请求消息;
工作单元,所述工作单元与所述存储单元相连接,用于创建与所述第一消息队列对应的工作任务,所述工作单元是所述业务函数支撑***中用于创建所述工作任务的组件;
消息队列单元,所述消息队列单元与所述网关单元和工作单元相连,所述消息队列单元用于存储所述第一请求消息和第二请求消息,形成第一消息队列和第二消息队列,所述第一请求队列与所述第一请求消息一一对应,所述第二请求消息用于指示所述工作任务的处理结果。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
一个或多个存储器,用于存储程序,
一个或多个通信接口,所述通信接口用于进行无线通信,所述存储器和所述通信接口相互连接,并且完成相互间的通信工作;
所述一个或多个存储器和所述程序被配置为,由所述一个或多个处理器控制所述设备执行如权利要求1-7任一项所述的方法中的步骤。
10.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-7任一项所述的方法。
CN202111182687.1A 2021-10-11 2021-10-11 事件驱动的任务调度的方法及装置 Pending CN113900811A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111182687.1A CN113900811A (zh) 2021-10-11 2021-10-11 事件驱动的任务调度的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111182687.1A CN113900811A (zh) 2021-10-11 2021-10-11 事件驱动的任务调度的方法及装置

Publications (1)

Publication Number Publication Date
CN113900811A true CN113900811A (zh) 2022-01-07

Family

ID=79191420

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111182687.1A Pending CN113900811A (zh) 2021-10-11 2021-10-11 事件驱动的任务调度的方法及装置

Country Status (1)

Country Link
CN (1) CN113900811A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116032671A (zh) * 2023-03-30 2023-04-28 杭州华卓信息科技有限公司 一种基于混合云的通信方法、网络***

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016177138A1 (zh) * 2015-08-27 2016-11-10 中兴通讯股份有限公司 一种调度任务的方法、装置及***
CN107632894A (zh) * 2017-08-09 2018-01-26 中国电力科学研究院 一种用于电力市场交易服务调用的实现方法及装置
CN110069353A (zh) * 2019-03-18 2019-07-30 中科恒运股份有限公司 业务异步处理方法及装置
CN111506412A (zh) * 2020-04-22 2020-08-07 上海德拓信息技术股份有限公司 基于Airflow的分布式异步任务构建、调度***及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016177138A1 (zh) * 2015-08-27 2016-11-10 中兴通讯股份有限公司 一种调度任务的方法、装置及***
CN107632894A (zh) * 2017-08-09 2018-01-26 中国电力科学研究院 一种用于电力市场交易服务调用的实现方法及装置
CN110069353A (zh) * 2019-03-18 2019-07-30 中科恒运股份有限公司 业务异步处理方法及装置
CN111506412A (zh) * 2020-04-22 2020-08-07 上海德拓信息技术股份有限公司 基于Airflow的分布式异步任务构建、调度***及方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116032671A (zh) * 2023-03-30 2023-04-28 杭州华卓信息科技有限公司 一种基于混合云的通信方法、网络***

Similar Documents

Publication Publication Date Title
CN108845884B (zh) 物理资源分配方法、装置、计算机设备和存储介质
WO2021159638A1 (zh) 集群队列资源的调度方法、装置、设备及存储介质
CN106897206B (zh) 一种业务测试方法及装置
EP3355187A1 (en) Loading method and device for terminal application (app)
CN109067890B (zh) 一种基于docker容器的CDN节点边缘计算***
CN104834602B (zh) 一种程序发布方法、装置和程序发布***
CN110659131B (zh) 任务处理方法、电子装置、计算机设备及存储介质
CN114253557B (zh) 一种云平台应用部署方法、装置、电子设备及存储介质
CN112817748A (zh) 一种基于安卓虚拟机处理任务的方法、计算机设备
KR20220074367A (ko) 서버리스 개발 지원 플랫폼 및 방법
CN113157411A (zh) 一种基于Celery的可靠可配置任务***及装置
CN114615340A (zh) 一种请求处理方法、装置、计算机设备和存储装置
CN114625533A (zh) 分布式任务调度方法、装置、电子设备及存储介质
US20200310828A1 (en) Method, function manager and arrangement for handling function calls
CN113900811A (zh) 事件驱动的任务调度的方法及装置
CN111190875A (zh) 基于容器平台的日志聚合方法及装置
CN114006815B (zh) 云平台节点的自动化部署方法、装置、节点及存储介质
CN115344370A (zh) 任务调度方法、装置、设备及存储介质
CN111092954B (zh) 一种生成微服务的方法和装置及电子设备
CN114064054A (zh) 一种微服务发布方法、装置、设备及存储介质
CN112633855A (zh) 一种任务提醒方法及计算机设备
CN106844056B (zh) Hadoop大数据平台多租户作业管理方法及其***
CN117076138B (zh) 面向体系仿真的资源跨平台集成和调度方法及装置
EP4191413A1 (en) Message management method, device, and serverless system
CN110321335B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20220107

RJ01 Rejection of invention patent application after publication