CN109408212A - 任务调度组件构造方法、装置及存储介质、服务器 - Google Patents
任务调度组件构造方法、装置及存储介质、服务器 Download PDFInfo
- Publication number
- CN109408212A CN109408212A CN201811137939.7A CN201811137939A CN109408212A CN 109408212 A CN109408212 A CN 109408212A CN 201811137939 A CN201811137939 A CN 201811137939A CN 109408212 A CN109408212 A CN 109408212A
- Authority
- CN
- China
- Prior art keywords
- task
- task schedule
- interface
- logic
- module
- 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
Links
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及分布式系统、redis服务平台、接口定义技术领域,具体涉及本发明实施例提供的一种任务调度组件构造方法,包括:获取基于redis数据库的任务调度组件模块,任务调度组件模块包括未定义的任务调度接口;对未定义的任务调度接口进行分布式任务定义,以通过任务调度接口实现基于redis数据库的分布式任务调度;响应于生成指令,通过该模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。本申请中基于redis降低任务调度组件轻量级别,降低任务调度组件对业务系统的侵入性,提高接入业务系统的友好性,减少业务开发人员的负担,同时减少了整个系统出现bug概率,降低运维开发成本。
Description
技术领域
本发明涉及分布式软件处理技术领域,具体涉及一种任务调度组件构造方法、装置及存储介质、服务器。
背景技术
随着业务数量的不断增加,传统单机模式的计算系统会因为服务器压力过大而崩溃,导致整个系统的不可用,造成巨大损失,因此将计算机框架进行分布式布置。目前比较基础的分布式环境协调框架,例如zookeeper,提供比较原子API,需要开发人员在此基础上编写很多代码才能在分布式环境下调度任务。适合用于开发比较完整的重量级调度框架,不适合每个业务很轻量的接入使用。比较重的调度框架,部署运维成本比较高,需要配套一系列复杂的监控设施。如果有新的任务加入,往往需要重新部署,工作量较大。对于业务实现方来说,很多场景只需要一种能提供核心的分布式任务调度的轻量级的接入,任务完成与否的状态只需要业务层面的监控即可。
发明内容
为克服以上技术问题,特别是比较重的调度框架,部署运维成本比较高,需要配套一系列复杂的监控设施的问题,特提出以下技术方案:
本发明实施例提供的一种任务调度组件构造方法,包括:
获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;
对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;
响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。
进一步地,在所述对未定义的所述任务调度接口进行定义的步骤中,具体包括:
通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义。
优选地,所述业务逻辑包括命名空间的逻辑、获取批量任务的逻辑、监控业务执行状态的逻辑。
进一步地,在所述通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义的步骤中,具体包括:
判断是否需要避免业务冲突;
若需要避免业务冲突,获取未定义的所述任务调度接口的命名空间的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;
若不需要避免业务冲突,判断是否需要返回接口定义类型;
若需要返回接口定义类型,获取未定义的所述任务调度接口的批量任务的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;
若不需要返回接口定义类型,获取未定义的所述任务调度接口的监控业务执行状态的逻辑,通过增加业务执行状态的逻辑对所述任务调度接口进行定义。
优选地,所述任务调度组件模块包括:任务监控模块、任务执行模块。
优选地,所述任务监控模块和任务执行模块通过抽象现实封装在所述任务调度模块中。
本发明实施例中还提供了一种任务调度组件构造装置,包括:
获取模块,用于获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;
定义模块,用于对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;
生成模块,用于响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。
进一步地,还包括:
业务逻辑增加模块,用于通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义。
本发明实施例中还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现任一技术方案所述的任务调度组件构造方法。
本发明实施例中还提供了一种服务器包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行根据任一技术方案所述的任务调度组件构造方法。
本发明与现有技术相比,具有以下有益效果:
1、本发明实施例提供的一种任务调度组件构造方法,包括:获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。通过本申请将大部分的任务调度组件进行封装,进而减少了业务人员的负担,业务人员只需要对执行业务的接口进行定义,便能通过任务调度组件模块中的逻辑和新定义的接口实现业务的执行,同时由于复杂部分的逻辑被封装后,也减少系统出bug的可能。又由于redis是一个基于内存和键值对(key–value)的存储数据库。由于具有轻量级特性,Redis为备受关注的键值对存储数据库。Redis中值(Value)支持存储多种数据类型,例如字符串(String),哈希(Map),链表(list),集合(sets)和有序集合(sorted sets)等类型。Redis中提供的链表可以作为轻量级的任务数据队列。Redis中任务数据队列的名称由任务名称和队列编号组成,使得在Redis中能够通过关键字模糊查询命令获得所有待处理的任务数据队列。优选的,任务名称具有统一前缀,例如,任务名称均具有前缀“Queue-”则可以通过“keysQueue-*”命令模糊匹配,动态获得Redis中当前时刻所有待处理的任务数据队列的名称。因此通过接入轻量化的redis服务平台,进而减轻了调度框架的厚重度,降低部署运维业务成本,同时轻量级的分布式任务调度组件同时也降低了对业务系统侵入性弱,通过自行定义接口类型,使得任务调度组件和运行业务的接入方式友好。
2、本发明实施例提供的一种任务调度组件构造方法,在所述,在所述对未定义的所述任务调度接口进行定义的步骤中,具体包括:通过增加未定义的所述任务调度接口业务逻辑对所述任务调度接口进行定义。由于在本申请中主要是基于Java范型的模板方法设计模式来定义接口,使得业务开发人员只需要按照接口文档规范,编写相应的需要执行的业务逻辑,进而降低运维开发成本低,同时根据模板编写业务逻辑也降低了业务人员开发的难度,减轻业务人员的工作压力。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明任务调度组件构造方法的典型实施例中一种实施方式的流程示意图;
图2为图1所示构造的任务调度组件的工作过程框图;
图3为本发明任务调度组件构造装置的典型实施例的结构示意图;
图4为本发明服务器的一实施例结构示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
本领域技术人员应当理解,本发明所称的“应用”、“应用程序”、“应用软件”以及类似表述的概念,是业内技术人员所公知的相同概念,是指由一系列计算机指令及相关数据资源有机构造的适于电子运行的计算机软件。除非特别指定,这种命名本身不受编程语言种类、级别,也不受其赖以运行的操作系统或平台所限制。理所当然地,此类概念也不受任何形式的终端所限制。
本申请实施例提供的一种任务调度组件构造方法,如图1所示,包括:S100、S200、S300。
S100:获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口。
在本申请的实施例中,主要是基于redis服务平进行分布调度组件模块的构造,在该任务调度组件模块中通过抽象类封装了大量跟分布式处理相关的逻辑,且部分逻辑同时也是最复杂的、比较容易出bug的,将其封装在模块中,使得业务人员在使用时,无须考虑该部分逻辑,业务开发人员不用关心这些复杂细节,减少业务开发人员的负担,同时减少开发出的组件在运行时出现bug的可能。具体的,在该任务调度模块中主要封装了任务监控模块和任务执行模块。任务监控模块用于监控任务执行状况,任务执行模块主要依据封装的逻辑对分布任务进行处理或者调用对应的接口调度对分布式任务进行调度。对于任务调度组件模块中封装的任务监控模块和任务执行模块可以在不影响使用的情况下改变类的内部结构,该方法还可以同也保护数据库的数据以及使用中的数据,避免因为改变内部结构而导致数据的丢失。因此,任务调度组件模块对外界而言它的内部细节是隐藏的,暴露给外界的只是它的访问方法。任务调度组件模块中包括业务人员需要开发定义的任务调度接口,便于业务人员根据任务类型通过增加业务逻辑对接口进行定义。
S200:对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;
进一步地,在所述对未定义的所述任务调度接口进行定义的步骤中,具体包括:
通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义。
进一步地,在所述通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义的步骤中,具体包括:
判断是否需要避免业务冲突;
若需要避免业务冲突,获取未定义的所述任务调度接口的命名空间的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;
若不需要避免业务冲突,判断是否需要返回接口定义类型;
若需要返回接口定义类型,获取未定义的所述任务调度接口的批量任务的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;
若不需要返回接口定义类型,获取未定义的所述任务调度接口的监控业务执行状态的逻辑,通过增加业务执行状态的逻辑对所述任务调度接口进行定义。
在前述的基础上,说明接口是包括在任务调度组件模块内的,只是未对其进行定义,为了使其能够和被用于实现任务的调度,业务人员可以对任务调度接口进行定义,进而便于通过所述任务调度接口实现基于所述redis数据库的分布式任务的调度。优选地,业务逻辑包括命名空间的逻辑;业务逻辑包括获取批量任务的逻辑;业务逻辑包括监控业务执行状态的逻辑。在其中一种实施方式中,本申请是使用基于java范型的模版方法设计模式来定义任务调度接口。业务开发人员只需要按照接口文档规范,编写相应的业务逻辑即可。例如:1、接口定义,业务实现接口时提供命名空间,组件会校验命名空间的合法性,避免跟其他业务冲突;2、接口定义,业务实现接口时提供获取批量任务的逻辑,返回值使用接口定义的范型3、接口定义,业务实现接口时提供任务执行、任务是否完成、提供需要保存的任务上下文信息的逻辑等。在前述的任务监控模块、任务执行模块、基于redis的数据库(服务平台)基础上可以联合任务调度接口将业务接入任务调度组件模板中,以实现分布式任务的调度,根据分布式任务的特点,从严到宽,依次从冲突、类型、监控中选择逻辑,有效适配分布式任务的调度,在业务开发人员执行该措施时,判断是否需要避免业务冲突;若需要避免业务冲突,获取未定义的所述任务调度接口的命名空间的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;使得任务调度过程更为具体化,避免调度后的任务与其他任务混乱。若不需要避免业务冲突,判断是否需要返回接口定义类型,若需要返回接口定义类型,获取未定义的所述任务调度接口的批量任务的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义,实现针对性调度业务;若不需要返回接口定义类型,获取未定义的所述任务调度接口的监控业务执行状态的逻辑,通过增加业务执行状态的逻辑对所述任务调度接口进行定义。通过前述过程,可以定义某一类型业务执行出现问题时,通过定义的其他任务调度接口接入前述的执行过程,实现上下文重现,进而依据上下文在此进行业务的执行。在通过任务调度组件调度任务时,本申请利用redis的原子特性进行分布式任务的抢占分发操作,提供任务执行实例宕机之后,任务可以被其他任务执行实例获取并且恢复任务上下文重现执行的能力。在两判断步骤中,可以是开发人员自行人工判断,也可以依据任务调度组件模块中的任务调度监控模块进行判断。
具体的,在本申请,定义接口的逻辑如下:
结合前述的定义接口的逻辑以及图2,对本申请进行进一步地说明。
在ITask中封装了实现任务调度的任务调度组件模板:即TaskMaster是通过抽象现实封装在ITask中的。把现实中需要处理的事物通过数据的方法表达出来就是抽象,把事物的数据和方法用类的方式集合起来就是封装,将两者结合在一起便是抽象现实封装。继承实现是将封装的数据和方法通过继承来实现重用,TaskMaster通过继承了TaskWoker中的数据和方法,因此,TaskMaster可以调用TaskWoker中的数据和方法实现更新同一批次任务的状态。
在图2中,1、TaskMaster所有操作Redis的任务队列都必须先获取分布式锁,如果获取不到,休眠随机毫秒数;2、TaskMaster判断队列是否为空,判断如果为空(redis llen为0),执行3,不为空执行4;3、TaskMaster调用TaskWorker实现的获取批次任务的接口,将任务初始化(心跳时间、状态、业务上下文),将任务倒排序调用redis lpush插入队列中,每个任务的TaskId对应其在队列的位置下标;4、TaskMaster调用redis Lrange拉去整个队列,遍历所有任务,判断状态为init或者心跳时间超出范围的,获取该任务,更新心跳时间为当前时间,执行6.同时判断完成状态的任务个数是否与任务队列大小相等,如果相等,执行5;5、TaskMaster调用TaskWoker实现的更新该批次任务的状态,并且删除redispendingList对应的key,当前Task置为null;6、TaskWoker实现获取任务对应的数据集,TaskWorker需要实现接口来判断此任务是否完成,同时最多N秒更新对应redispendingList里的心跳时间(调用redis lindex,封装在Master里面了,且不需要加锁)。结合前文所述,在本申请提供的实施例中,所述任务监控模块为前述的Taskmaster,任务执行模块为前述的TaskWorker。需要说明的是,前述的步骤1至6和图2中的1至6数字一一对应。
S300:响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。
为了使得前述的任务调度组件模块增加了接口定义后能够调度任务,用户完成前述的编辑过程之后,在操作界面上触发完成保存的控件,以使得前述编辑后的任务调度组件模块能够生成能够调用对应任务的任务调度组件。在本申请公开的实施例中,结合前文的说明,由于使用基于java范型的模版方法设计模式来定义接口,因此,该接口具有基于java的多态特性,用户在实例化业务类后,调用TaskMaster的调度接口,就可以启动调度程序,调度组件会自动执行实现了规定接口的具体实现类的模版方法。其中多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具体的类,这样,不用修改源程序逻辑代码,就可以让引用变量绑定到各种不同的类实现上,从而导致该引用调用的具体方法随之改变,即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,使得本申请中的任务调度组件具有多态性。
结合前述过程以及图2,在通过前述的分布式任务组件进行业务处理过程中,由TaskMaster负责初始化、传入额外信息到分布式任务调度组件中,例如规则、上下文等。其中,在每次需要发送心跳、更新上下文信息到redis的时候由TaskMaster设置。批量id在具体获取批量任务的时候设置,同时实时更新TaskMaster的任务状态,由于TaskMaster主要用于监控,因此,在任务调度过程汇总,由TaskMaster先初始化任务队列到redis,然后在从redis任务队列中取出初始化的,并获取上一次发送心跳时间。Master的核心逻辑:获取队列,在此方法包含发送保活心跳。调用此方法间隔必须在心跳间隔时间与最大心跳间隔时间之内,否则任务会被释放。在发送保活心跳再判断是否需要置位于任务完成状态,在此过程中需要判断队列是否为空,在队列为空的时候,即没有执行的业务,TaskMaster调用TaskWoker获取下个批量任务。若TaskWoker判断出任务队列为空,且没有余下的批量任务时,TaskWoker睡眠,直接返回空队列。在有任务需要插队时,TaskMaster初始化心跳时间、任务状态等,并逆序插入队列,在此过程中,需要获取所有任务,判断任务执行状态以及心跳时间,在刚初始化的或者没有保活心跳时,直接置成完成、无效,并告警用户退出该业务执行状态,避免业务相互之间冲突。
本发明实施例中还提拱了一种任务调度组件构造装置,在其中一种实施方式中,如图3所示,包括:
获取模块100,用于获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;
定义模块200,用于对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;
生成模块300,用于响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。
进一步地,如图3所示,本发明实施例中提供的一种任务调度组件构造装置,还包括:接口定义单元210,用于通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义。第一判断单元211,用于判断是否需要避免业务冲突;第一获取单元212,用于若需要避免业务冲突,获取未定义的所述任务调度接口的命名空间的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;第二判断单元213,用于若不需要避免业务冲突,判断是否需要返回接口定义类型;第二获取单元214,用于若需要返回接口定义类型,获取未定义的所述任务调度接口的批量任务的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;第三获取单元215,用于若不需要返回接口定义类型,获取未定义的所述任务调度接口的监控业务执行状态的逻辑,通过增加业务执行状态的逻辑对所述任务调度接口进行定义。优选地,业务逻辑包括命名空间的逻辑、获取批量任务的逻辑、监控业务执行状态的逻辑。
本发明实施例提供的一种任务调度组件构造装置可以实现上述任务调度组件构造方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
本发明实施例提供的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现任一项技术方案所述的任务调度组件构造方法。其中,所述计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、CD-ROM、和磁光盘)、ROM(Read-Only Memory,只读存储器)、RAM(Random AcceSS Memory,随即存储器)、EPROM(EraSable Programmable Read-Only Memory,可擦写可编程只读存储器)、EEPROM(Electrically EraSable Programmable Read-Only Memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,存储设备包括由设备(例如,计算机、手机)以能够读的形式存储或传输信息的任何介质,可以是只读存储器,磁盘或光盘等。
本发明实施例提供的一种计算机可读存储介质,可实现上述任务调度组件构造方法的实施例,在本申请中通过降低任务调度组件轻量级别,即基于redis构造任务调度组件,降低任务调度组件对业务系统的侵入性,提高任务调度组件接入业务系统的友好性,同时封装的任务调度模块(即分布式处理的逻辑),可以减少业务开发人员的负担,由于该部分的逻辑最为复杂,同时减少了系统出bug的可能,在业务开发人员定义接口时,只需要按照接口文档规范,编写相应的业务逻辑即可,降低运维开发成本;本发明实施例中还提拱了一种任务调度组件构造方法,包括:获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。通过本申请将大部分的任务调度组件进行封装,进而减少了业务人员的负担,业务人员只需要对执行业务的接口进行定义,便能通过任务调度组件模块中的逻辑和新定义的接口实现业务的执行,同时由于复杂部分的逻辑被封装后,也减少系统出bug的可能。又由于redis是一个基于内存和键值对(key–value)的存储数据库。由于具有轻量级特性,Redis为备受关注的键值对存储数据库。Redis中值(Value)支持存储多种数据类型,例如字符串(String),哈希(Map),链表(list),集合(sets)和有序集合(sorted sets)等类型。Redis中提供的链表可以作为轻量级的任务数据队列。Redis中任务数据队列的名称由任务名称和队列编号组成,使得在Redis中能够通过关键字模糊查询命令获得所有待处理的任务数据队列。优选的,任务名称具有统一前缀,例如,任务名称均具有前缀“Queue-”则可以通过“keysQueue-*”命令模糊匹配,动态获得Redis中当前时刻所有待处理的任务数据队列的名称。因此通过接入轻量化的redis服务平台,进而减轻了调度框架的厚重度,降低部署运维业务成本,同时轻量级的分布式任务调度组件同时也降低了对业务系统侵入性弱,通过自行定义接口类型,使得任务调度组件和运行业务的接入方式友好。
本发明实施例提供的计算机可读存储介质可以实现上述任务调度组件构造方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
此外,在又一种实施例中,本发明还提供一种服务器,如图4所示,所述服务器处理器503、存储器505、输入单元507以及显示单元509等器件。本领域技术人员可以理解,图4示出的结构器件并不构成对所有服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件。存储器505可用于存储应用程序501以及各功能模块,处理器503运行存储在存储器505的应用程序501,从而执行设备的各种功能应用以及数据处理。存储器505可以是内存储器或外存储器,或者包括内存储器和外存储器两者。内存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)、快闪存储器、或者随机存储器。外存储器可以包括硬盘、软盘、ZIP盘、U盘、磁带等。本发明所公开的存储器包括但不限于这些类型的存储器。本发明所公开的存储器505只作为例子而非作为限定。
输入单元507用于接收信号的输入,以及业务开发人员输入定义接口的逻辑。输入单元507可包括触控面板以及其它输入设备。触控面板可收集客户在其上或附近的触摸操作(比如客户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并根据预先设定的程序驱动相应的连接装置;其它输入设备可以包括但不限于物理键盘、功能键(比如播放控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。显示单元509可用于显示客户输入的信息或提供给客户的信息以及计算机设备的各种菜单。显示单元509可采用液晶显示器、有机发光二极管等形式。处理器503是计算机设备的控制中心,利用各种接口和线路连接整个电脑的各个部分,通过运行或执行存储在存储器503内的软件程序和/或模块,以及调用存储在存储器内的数据,执行各种功能和处理数据。图4中所示的一个或多个处理器503能够执行、实现图3中所示的获取模块100的功能、定义模块200的功能、生成模块300的功能、接口定义单元210的功能、第一判断单元211的功能、第一获取单元212的功能、第二判断单元的功能213、第二获取单元214的功能、第三获取单元215的功能。
在一种实施方式中,所述服务器包括一个或多个处理器503,以及一个或多个存储器505,一个或多个应用程序501,其中所述一个或多个应用程序501被存储在存储器505中并被配置为由所述一个或多个处理器503执行,所述一个或多个应用程序301配置用于执行以上实施例所述的任务调度组件构造方法。
本发明实施例提供的一种服务器,可实现上述任务调度组件构造方法的实施例,在本申请中通过降低任务调度组件轻量级别,即基于redis构造任务调度组件,降低任务调度组件对业务系统的侵入性,提高任务调度组件接入业务系统的友好性,同时封装的任务调度模块(即分布式处理的逻辑),可以减少业务开发人员的负担,由于该部分的逻辑最为复杂,同时减少了系统出bug的可能,在业务开发人员定义接口时,只需要按照接口文档规范,编写相应的业务逻辑即可,降低运维开发成本;一种本发明实施例中还提拱了一种任务调度组件构造方法,包括:获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。通过本申请将大部分的任务调度组件进行封装,进而减少了业务人员的负担,业务人员只需要对执行业务的接口进行定义,便能通过任务调度组件模块中的逻辑和新定义的接口实现业务的执行,同时由于复杂部分的逻辑被封装后,也减少系统出bug的可能。又由于redis是一个基于内存和键值对(key–value)的存储数据库。由于具有轻量级特性,Redis为备受关注的键值对存储数据库。Redis中值(Value)支持存储多种数据类型,例如字符串(String),哈希(Map),链表(list),集合(sets)和有序集合(sorted sets)等类型。Redis中提供的链表可以作为轻量级的任务数据队列。Redis中任务数据队列的名称由任务名称和队列编号组成,使得在Redis中能够通过关键字模糊查询命令获得所有待处理的任务数据队列。优选的,任务名称具有统一前缀,例如,任务名称均具有前缀“Queue-”则可以通过“keysQueue-*”命令模糊匹配,动态获得Redis中当前时刻所有待处理的任务数据队列的名称。因此通过接入轻量化的redis服务平台,进而减轻了调度框架的厚重度,降低部署运维业务成本,同时轻量级的分布式任务调度组件同时也降低了对业务系统侵入性弱,通过自行定义接口类型,使得任务调度组件和运行业务的接入方式友好。
本发明实施例提供的服务器可以实现上述提供的任务调度组件构造方法的实施例,具体功能实现请参见方法实施例中的说明,在此不再赘述。
以上所述仅是本发明的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种任务调度组件构造方法,其特征在于,包括:
获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;
对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;
响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。
2.根据权利要求1所述的任务调度组件构造方法,其特征在于,在所述对未定义的所述任务调度接口进行定义的步骤中,具体包括:
通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义。
3.根据权利要求2所述的任务调度组件构造方法,其特征在于,所述业务逻辑包括命名空间的逻辑、获取批量任务的逻辑、监控业务执行状态的逻辑。
4.根据权利要求2或3所述的任务调度组件构造方法,其特征在于,在所述通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义的步骤中,具体包括:
判断是否需要避免业务冲突;
若需要避免业务冲突,获取未定义的所述任务调度接口的命名空间的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;
若不需要避免业务冲突,判断是否需要返回接口定义类型;
若需要返回接口定义类型,获取未定义的所述任务调度接口的批量任务的逻辑,通过增加所述命名空间的逻辑对所述任务调度接口进行定义;
若不需要返回接口定义类型,获取未定义的所述任务调度接口的监控业务执行状态的逻辑,通过增加业务执行状态的逻辑对所述任务调度接口进行定义。
5.根据权利要求1至3任一项所述的任务调度组件构造方法,其特征在于,所述任务调度组件模块包括:任务监控模块、任务执行模块。
6.根据权利要求6所述的任务调度组件构造方法,其特征在于,所述任务监控模块和任务执行模块通过抽象现实封装在所述任务调度模块中。
7.一种任务调度组件构造装置,其特征在于,包括:
获取模块,用于获取基于redis数据库的任务调度组件模块,所述任务调度组件模块包括未定义的任务调度接口;
定义模块,用于对未定义的所述任务调度接口进行分布式任务定义,以通过所述任务调度接口实现基于所述redis数据库的分布式任务调度;
生成模块,用于响应于生成指令,利用所述任务调度组件模块生成与将要调度分布式任务类型相关且能调度分布式任务的任务调度组件。
8.根据权利要求7所述的任务调度组件构造装置,其特征在于,还包括:
业务逻辑增加模块,用于通过增加未定义的所述任务调度接口的业务逻辑对所述任务调度接口进行定义。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现权利要求1至6任一项所述的任务调度组件构造方法。
10.一种服务器,其特征在于,包括:
一个或多个处理器;
存储器;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行根据权利要求1至6任一项所述的任务调度组件构造方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811137939.7A CN109408212B (zh) | 2018-09-28 | 2018-09-28 | 任务调度组件构造方法、装置及存储介质、服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811137939.7A CN109408212B (zh) | 2018-09-28 | 2018-09-28 | 任务调度组件构造方法、装置及存储介质、服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109408212A true CN109408212A (zh) | 2019-03-01 |
CN109408212B CN109408212B (zh) | 2023-09-19 |
Family
ID=65466440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811137939.7A Active CN109408212B (zh) | 2018-09-28 | 2018-09-28 | 任务调度组件构造方法、装置及存储介质、服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109408212B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955508A (zh) * | 2019-11-28 | 2020-04-03 | 广州鼎甲计算机科技有限公司 | 基于分布式架构的异步任务调度方法、装置和计算机设备 |
CN111147571A (zh) * | 2019-12-24 | 2020-05-12 | 京东数字科技控股有限公司 | 分布式任务调度方法、装置、系统、存储介质及电子设备 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836448B1 (en) * | 2004-06-30 | 2010-11-16 | Emc Corporation | System and methods for task management |
CN103793273A (zh) * | 2014-01-24 | 2014-05-14 | 北京京东尚科信息技术有限公司 | 一种基于Redis的分布式队列调度方法及装置 |
CN105760221A (zh) * | 2016-02-02 | 2016-07-13 | 中博信息技术研究院有限公司 | 分布式计算框架的任务调派系统 |
CN105930171A (zh) * | 2016-05-13 | 2016-09-07 | 乐视控股(北京)有限公司 | 分布式统一缓存实现方法、装置及系统 |
CN106201694A (zh) * | 2016-07-13 | 2016-12-07 | 北京农信互联科技有限公司 | 一种分布式系统下执行定时任务的配置方法及系统 |
CN106874047A (zh) * | 2017-01-25 | 2017-06-20 | 广东神马搜索科技有限公司 | 分布式系统调度方法、装置及分布式系统 |
CN107231443A (zh) * | 2017-08-10 | 2017-10-03 | 深圳市中青合创传媒科技有限公司 | 一种应用程序高并发高负荷处理方法和系统 |
CN107665144A (zh) * | 2016-07-29 | 2018-02-06 | 北京京东尚科信息技术有限公司 | 分布式任务的均衡调度中心、方法、系统和装置 |
CN108132833A (zh) * | 2017-12-08 | 2018-06-08 | 广州视源电子科技股份有限公司 | 一种基于zookeeper技术的分布式定时任务调度方法和装置 |
-
2018
- 2018-09-28 CN CN201811137939.7A patent/CN109408212B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7836448B1 (en) * | 2004-06-30 | 2010-11-16 | Emc Corporation | System and methods for task management |
CN103793273A (zh) * | 2014-01-24 | 2014-05-14 | 北京京东尚科信息技术有限公司 | 一种基于Redis的分布式队列调度方法及装置 |
CN105760221A (zh) * | 2016-02-02 | 2016-07-13 | 中博信息技术研究院有限公司 | 分布式计算框架的任务调派系统 |
CN105930171A (zh) * | 2016-05-13 | 2016-09-07 | 乐视控股(北京)有限公司 | 分布式统一缓存实现方法、装置及系统 |
CN106201694A (zh) * | 2016-07-13 | 2016-12-07 | 北京农信互联科技有限公司 | 一种分布式系统下执行定时任务的配置方法及系统 |
CN107665144A (zh) * | 2016-07-29 | 2018-02-06 | 北京京东尚科信息技术有限公司 | 分布式任务的均衡调度中心、方法、系统和装置 |
CN106874047A (zh) * | 2017-01-25 | 2017-06-20 | 广东神马搜索科技有限公司 | 分布式系统调度方法、装置及分布式系统 |
CN107231443A (zh) * | 2017-08-10 | 2017-10-03 | 深圳市中青合创传媒科技有限公司 | 一种应用程序高并发高负荷处理方法和系统 |
CN108132833A (zh) * | 2017-12-08 | 2018-06-08 | 广州视源电子科技股份有限公司 | 一种基于zookeeper技术的分布式定时任务调度方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955508A (zh) * | 2019-11-28 | 2020-04-03 | 广州鼎甲计算机科技有限公司 | 基于分布式架构的异步任务调度方法、装置和计算机设备 |
CN110955508B (zh) * | 2019-11-28 | 2021-04-13 | 广州鼎甲计算机科技有限公司 | 基于分布式架构的异步任务调度方法、装置和计算机设备 |
CN111147571A (zh) * | 2019-12-24 | 2020-05-12 | 京东数字科技控股有限公司 | 分布式任务调度方法、装置、系统、存储介质及电子设备 |
CN111147571B (zh) * | 2019-12-24 | 2023-04-18 | 京东科技控股股份有限公司 | 分布式任务调度方法、装置、系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109408212B (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Babuji et al. | Parsl: Pervasive parallel programming in python | |
CN110806923B (zh) | 一种区块链任务的并行处理方法、装置、电子设备和介质 | |
US8024405B2 (en) | Declarative model for concurrency-control across lightweight threads | |
Ochoa et al. | Hyflex: A benchmark framework for cross-domain heuristic search | |
JP5140067B2 (ja) | ワークフローにおいて継続をモデル化するフレームワーク | |
Syriani et al. | A modular timed graph transformation language for simulation-based design | |
EP2062136B1 (en) | System and method for using stream objects to perform stream processing in a text-based computing environment | |
Salim et al. | Balsam: Automated scheduling and execution of dynamic, data-intensive hpc workflows | |
CN106104483A (zh) | 微处理器系统中的异常处理 | |
JP2009532754A (ja) | 継続ベースのメタランタイムのための抽象実行モデル | |
EP2668568A1 (en) | Registration and execution of highly concurrent processing tasks | |
US20070022424A1 (en) | Technique for processing a computer program | |
WO2008003536A2 (en) | Method, system and computer program for determining the processing order of a plurality of events | |
US9128783B1 (en) | Scheduling and executing model components in response to un-modeled events detected during an execution of the model | |
CN109408212A (zh) | 任务调度组件构造方法、装置及存储介质、服务器 | |
CN106293687B (zh) | 一种打包流程的控制方法,及装置 | |
CN110347735A (zh) | 配置化的数据转发异常补处理方法、装置及可读存储介质 | |
EP1212705A1 (en) | A system, method, and computer program product for configuring stochastic simulation models in an object oriented environment | |
CN102214094B (zh) | 经由异步编程模型执行操作 | |
Bánhelyi et al. | The Global Optimization Algorithm: Newly Updated with Java Implementation and Parallelization | |
CN109829005A (zh) | 一种大数据处理方法及装置 | |
Caromel et al. | Proactive parallel suite: From active objects-skeletons-components to environment and deployment | |
CN109062571A (zh) | 用于用户界面动态配置的方法和装置 | |
Morman et al. | The Future of GNU Radio: Heterogeneous Computing, Distributed Processing, and Scheduler-as-a-Plugin | |
Belgacem et al. | Towards a high level programming paradigm to deploy e-science applications with dynamic workflows on large scale distributed systems |
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 |