CN111782352A - 一种业务调度方法和装置 - Google Patents
一种业务调度方法和装置 Download PDFInfo
- Publication number
- CN111782352A CN111782352A CN201911203874.6A CN201911203874A CN111782352A CN 111782352 A CN111782352 A CN 111782352A CN 201911203874 A CN201911203874 A CN 201911203874A CN 111782352 A CN111782352 A CN 111782352A
- Authority
- CN
- China
- Prior art keywords
- service
- scheduling
- bucket
- host
- barrel
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 238000001914 filtration Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000002860 competitive effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- VYPSYNLAJGMNEJ-UHFFFAOYSA-N silicon dioxide Inorganic materials O=[Si]=O VYPSYNLAJGMNEJ-UHFFFAOYSA-N 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000010453 quartz Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
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
本发明公开了一种业务调度方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度。该实施方式能够通过实现了多主机并行执行调度任务,方法适用性广,提高了业务调度的保障性和调度效率,降低了调度成本。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种业务调度方法和装置。
背景技术
现有应用***中存在大量定时业务进行调度的场景,如在应用***的实际开发过程中存在大量无需人工干预又需定期执行的***后台业务。现有技术中主要采用下列方法进行业务调度:一是应用于java领域的Spring quartz定时调度执行***;二是通过业务管理***和业务执行***两个子***协同处理业务调度。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1.Spring quartz的业务调度效率较低,适用性窄,难以使用大量业务调度的场景;
2.子***协同调度的耦合性较高,当某一子***出现宕机等故障时,业务调度的执行无法继续进行,业务调度的执行保障性低,且调度成本较高。
发明内容
有鉴于此,本发明实施例提供一种业务调度方法和装置,能够通过实现了多主机并行执行调度任务,适用性广,提高了业务调度的保障性和调度效率,降低了调度成本。
为实现上述目的,根据本发明实施例的第一方面,提供了一种业务调度方法,包括:
获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;
根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;
根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度。
进一步地,在获取消息队列中的业务的步骤之后,业务调度方法还包括:根据调度参数对业务进行过滤。
进一步地,根据业务对应的业务主键进行分桶,确定业务对应的业务桶号的步骤包括:对业务对应的业务主键进行哈希计算,得到哈希值,根据哈希值和业务桶的数量确定业务对应的业务桶号。
进一步地,根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度的步骤包括:确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务。
进一步地,在确定业务集群内每台主机对应的初始业务桶号的步骤之前,业务调度方法还包括:配置每台主机对应的调度任务,调度任务指示了调度周期和调度数量,根据调度任务循环执行上一步所述步骤。
进一步地,每台主机执行相应业务桶号对应的业务时,通过数据库锁对相应业务桶进行锁定。
根据本发明实施例的第二方面,提供了一种业务调度装置,包括:
业务注册模块,用于接收消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;
业务桶号确定模块,用于根据业务指示的业务主键进行分桶,确定业务对应的业务桶号;
调度模块,用于根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度。
进一步地,调度模块还用于:确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务。
根据本发明实施例的第三方面,提供了一种终端装置,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上述任一种业务调度方法。
根据本发明实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任一种业务调度方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度的技术手段,所以克服了现有的业务调度方法存在的适用性窄、保障性低以及调度成本高的技术问题,进而达到能够通过实现了多主机并行执行调度任务,适用性广,提高了业务调度的保障性和调度效率,降低了调度成本的技术效果。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明第一实施例提供的业务调度方法的主要流程的示意图;
图2是根据本发明第二实施例提供的业务调度方法的主要流程的示意图;
图3是根据本发明实施例提供的业务调度装置的主要模块的示意图;
图4是本发明实施例可以应用于其中的示例性***架构图;
图5是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明第一实施例提供的业务调度方法的主要流程的示意图;如图1所示,本发明实施例提供的业务调度方法主要包括:
步骤S101,获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间。
进一步地,根据本发明实施例,在获取消息队列中的业务的步骤之前,上述业务的调度方法还包括:收集应用程序的业务,构成消息队列。
通过消息队列收集个应用程序内的业务,然后执行后续业务的调度,实现了业务的调度与执行的解耦,保证了本发明提供的业务的调度方法能够在业务量较多的场景仍然适用,提高了调度方法的适用性。
进一步地,根据本发明实施例,在获取消息队列中的业务的步骤之后,业务的调度方法还包括:根据调度参数对业务进行过滤。
通过通用协议的参数或各应用程序自定义的参数对业务进行过滤,提高了整体的调用效率。
步骤S102,根据业务对应的业务主键进行分桶,确定业务对应的业务桶号。
具体地,根据本发明实施例,根据业务对应的业务主键进行分桶,确定业务对应的业务桶号的步骤包括:对业务对应的业务主键进行哈希计算,得到哈希值,根据哈希值和业务桶的数量确定业务对应的业务桶号。其中,每个业务桶号对应至少一个业务。
每个业务均具有唯一对应的业务主键,通过对业务主键进行哈希计算,然后根据得到的哈希值与业务桶的数量进行取模,能够较为简便的确定每个业务的业务桶号。通过上述设置还避免了将调度时间一致的业务全部归于同一业务桶中导致的业务的调度效率降低的场景。
需要说明的是,上述仅为将业务分配至不同的业务桶内(即给不同业务确定相应的业务桶号)的一种方法,但并不为本申请的限定,在实际处理时,可采用现有的任一种方法进行业务桶号的确定。
步骤S103,根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度。
根据本发明实施例,上述根据业务桶号和调度时间,通过业务集群内的主机进行业务的调度的步骤包括:确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务。
通过为每台主机确定一个初始业务桶号(可通过随机确定,只需保证每台主机的初始业务同好不一致即可),便于多台主机并行执行业务的调度,避免了多台主机针对同一业务桶进行业务调度导致的竞争锁的场景,提高了业务的调度速率。
进一步地,根据本发明实施例,在确定业务集群内每台主机对应的初始业务桶号之前,上述业务的调度方法还包括:配置每台主机对应的调度任务,所述调度任务指示了调度周期和调度数量,根据调度周期和调度数量循环执行确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务的步骤。
具体地,根据本发明实施例,每台主机执行相应业务桶号对应的业务时,通过数据库锁对相应业务桶进行锁定。
由于每个业务桶中满足调度时间的业务的数量不一致,随着调度的执行,可能会出现多个主机同时对一个业务桶内的业务进行调度的场景,通过数据库锁,保证了某台主机对一业务桶内的业务进行调度时不受其他主机的干扰,有效保障了业务调度的顺利执行。
根据本发明实施例的技术方案,因为采用获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度的技术手段,所以克服了现有的业务调度方法存在的适用性窄、保障性低以及调度成本高的技术问题,进而达到能够通过实现了多主机并行执行调度任务,适用性广,提高了业务调度的保障性和调度效率,降低了调度成本的技术效果。
图2是根据本发明第二实施例提供的业务调度方法的主要流程的示意图;如图2所示,本发明实施例提供的业务调度方法主要包括:
步骤S201,收集应用程序的业务,构成消息队列,获取消息队列中的业务。
通过消息队列收集个应用程序内的业务,然后执行后续业务的调度,实现了业务的调度与执行的解耦,保证了本发明提供的业务的调度方法能够在业务量较多的场景仍然适用,提高了调度方法的适用性。
具体地,根据本发明实施例,当某应用程序有待执行的定时业务时,首先注册业务topic(主题),该业务主题中设置了相应业务的调用接口,通过该业务主题调用相应的应用程序中的业务,构成消息队列。
步骤S202,根据调度参数对业务进行过滤。
具体地,根据本发明实施例,在接收到业务后,通过两部分调度参数对业务进行过滤,一部分为通用参数,一部分为各应用程序自定义的参数,如对于json(JavaScriptObject Notation,JS对象简谱)接口的业务,设置参数“{"jobKey":"promotion","jobName":"催拍业务推送",data:""}”,其中jobKey,jobName是通用的,每个业务都通过该参数进行过滤(当然还包括一些其它的,这里仅为示例);data,为应用程序自定义的参数自定义的参数。
通过通用协议的参数或各应用程序自定义的参数对业务进行过滤,提高了整体的调用效率。
步骤S203,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间。通过设置调度时间实现了业务的定时调度。
根据本发明实施例的一具体实施方式,采用redis数据库来进行业务的业务注册。redis是一款优秀的分布式内存数据库,具有读写速度快,数据类型丰富等优点,redis在单进程下工作,很好的解决了分布式环境下的并发问题。本发明提供的方法可以先将业务在数据库中进行注册后再进行分桶;也可以先根据业务主键对业务进行分桶,在取得相应的业务桶号后,对任务主键进行编码后再保存到redis中完成任务的注册。本发明提供的调度方法可支持业务的延时启动(即执行定时业务的调度),在业务注册时可以将调度时间记录到业务中存储。
通过上述设置,通过redis数据库注册业务任务,各调度执行节点(业务集群中的主机)从redis中获取业务,当单点发生故障后,只是使得调度任务的执行主机减少,调度处理速度下降,并不影响调度***的可用性。并且在单节点退出(某台主机出现故障或者停止执行调度任务)或加入调度任务的执行时,无需对业务再次分桶,因为,业务桶的数量确定后,hash计算确定相应的业务桶号就不会改变,降低了调度***的复杂性。
步骤S204,根据业务对应的业务主键进行分桶,确定业务对应的业务桶号。
具体地,根据本发明实施例,根据业务对应的业务主键进行分桶,确定业务对应的业务桶号的步骤包括:对业务对应的业务主键进行哈希计算,得到哈希值,根据哈希值和业务桶的数量确定业务对应的业务桶号。
根据本发明实施例一具体实施方式,通过对某一业务的业务主键进行哈希(hash)计算后得到的hash值为1345,假设业务桶的数量为100,那么将hash值根据业务桶的数量进行取模,即将1345除以100得到的余数为45,即可确定该业务对应的业务桶号为45。需要说明的是,业务桶的数量仅为示例,可通过实际情况进行调整。
每个业务均具有唯一对应的业务主键,通过对业务主键进行哈希计算,然后根据得到的哈希值与业务桶的数量进行取模,能够较为简便的确定每个业务的业务桶号。通过上述设置还避免了将调度时间一致的业务全部归于同一业务桶中导致的业务的调度效率降低的场景。
步骤S205,配置每台主机对应的调度任务,调度任务指示了调度周期和调度数量。
本发明提供的方法尤其适用于定时业务的调度,这就涉及到主机需要及时对业务桶内的业务进行扫描和执行。根据本发明实施例的一具体实施方式,本法幸事主要采用单机的spring task实现业务的定时启动。spring task是依赖JDK Timer的简单单机业务调度器,能完成单点定时调用业务。通过为每台主机设置好调度任务,相应的主机根据调度周期遍历不同的业务桶号,执行满足调度时间的业务。调度数量可进行配置,主要是能够保证在一个调度周期内尽量完成相应业务的调度即可。
在业务集群的每台主机上配置的调度周期可以一致也可以不一致。但是若将每台主机的调度周期设置为一致,则可仅通过设置一份代码即可部署多台机子的调度任务,可可对多台机子的调度任务进行统一维护。进一步地降低调度***的负载压力。
步骤S206,确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务。
根据本发明实施例,调度任务执行时,每台主机先产生一个随机数作为该台主机调度任务的初始任务桶号,其中,随机数的范围为0到N-1,(N为业务桶的总数量)。然后每台主机从初始业务桶号对应的业务桶开始,循环执行全部业务桶内满足调度时间的业务的调度。
具体地,根据本发明实施例的一具体实施方式,假设某台主机的初始业务桶号为S,则该台主机顺序执行S到N-1号的业务桶内的业务,然后再继续执行从0至S-1号的业务桶内的业务,遍历一圈,完成全部业务桶内满足调度时间的业务的调度。初始业务桶号是为了减少多台主机同时启动调度任务时发生争抢,顺序执行的目的是为了保证每台主机的调度任务执行都会顺序执行一次每个任务桶。
具体地调度的执行中,调度任务的逻辑可通过上述设置的调用接口实现,还可以在通过RPC(Remote Procedure Call Protocol,远程服务调用)来实现业务的调度。
根据本发明实施例,每台主机执行相应业务桶号对应的业务时,通过数据库锁对相应业务桶进行锁定。
由于每个业务桶中满足调度时间的业务的数量不一致,随着调度的执行,可能会出现多个主机同时对一个业务桶内的业务进行调度的场景,通过数据库锁,保证了某台主机对一业务桶内的业务进行调度时不受其他主机的干扰,有效保障了业务调度的顺利执行。
通过上述设置多节点(主机)对业务桶的争抢通过redis锁(也可以采用其他数据库锁)机制保障,使其不会出现任务重复执行的情况,有效解决了现有调度方法中常出现的单点问题。
根据本发明实施例提供的一应用场景:在执行过程中,某台主机确定好下一个待执行调度的业务桶号后,通过redis锁机制将相应的业务桶进行锁定,其他主机若也循环至该业务桶的业务的调度,则按顺序跳过该业务桶,执行下一业务桶内业务的调度。每一调度周期内,相应的主机根据调度数量执行相应的调度任务,若调度数量过多,在一个调度周期内为执行完毕,则在下一调度周期内执行剩余调度数量,直至上一调度周期设定的调度数量执行完毕为止。
通过上述设置,在业务集群中每个节点(主机)调度开始时,为节点分配了不同的初始业务桶号以及分桶机制,减少了竞争锁的产生,实现了多节点并行执行调度任务,提高了调度效率。
根据本发明实施例的技术方案,因为采用获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度的技术手段,所以克服了现有的业务调度方法存在的适用性窄、保障性低以及调度成本高的技术问题,进而达到能够通过实现了多主机并行执行调度任务,适用性广,提高了业务调度的保障性和调度效率,降低了调度成本的技术效果。
图3是根据本发明实施例提供的业务的调度装置的主要模块的示意图;如图3所示,本发明实施例提供的业务的调度装置300主要包括:
业务注册模块301,用于获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间。
进一步地,根据本发明实施例,上述业务的调度装置300还包括消息队列构成模块,在获取消息队列中的业务的步骤之前,消息队列构成模块用于收集应用程序的业务,构成消息队列。
通过消息队列收集个应用程序内的业务,然后执行后续业务的调度,实现了业务的调度与执行的解耦,保证了本发明提供的业务的调度方法能够在业务量较多的场景仍然适用,提高了调度方法的适用性。
进一步地,根据本发明实施例,上述业务的调度装置300还包括过滤模块,在获取消息队列中的业务的步骤之后,过滤模块用于根据调度参数对业务进行过滤。
通过通用协议的参数或各应用程序自定义的参数对业务进行过滤,提高了整体的调用效率。
业务桶号确定模块302,用于根据业务对应的业务主键进行分桶,确定业务对应的业务桶号。
具体地,根据本发明实施例,上述业务桶号确定模块302还用于:对业务对应的业务主键进行哈希计算,得到哈希值,根据哈希值和业务桶的数量确定业务对应的业务桶号。
每个业务均具有唯一对应的业务主键,通过对业务主键进行哈希计算,然后根据得到的哈希值与业务桶的数量进行取模,能够较为简便的确定每个业务的业务桶号。通过上述设置还避免了将调度时间一致的业务全部归于同一业务桶中导致的业务的调度效率降低的场景。
调度模块303,用于根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度。
根据本发明实施例,上述调度模块303还用于:确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务。
通过为每台主机确定一个初始业务桶号(可通过随机确定,只需保证每台主机的初始业务同好不一致即可),便于多台主机并行执行业务的调度,避免了多台主机针对同一业务桶进行业务调度导致的竞争锁的场景,提高了业务的调度速率。
进一步地,根据本发明实施例,上述业务的调度装置300还包括调度任务配置模块,在确定业务集群内每台主机对应的初始业务桶号之前,调度任务配置模块用于配置每台主机对应的调度任务,所述调度任务指示了调度周期和调度数量,根据调度周期和调度数量循环执行确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务的步骤。
具体地,根据本发明实施例,上述业务的调度装置300还包括数据库锁模块,每台主机执行相应业务桶号对应的业务的调度时,数据库锁模块用于通过数据库锁对相应业务桶进行锁定。
由于每个业务桶中满足调度时间的业务的数量不一致,随着调度的执行,可能会出现多个主机同时对一个业务桶内的业务进行调度的场景,通过数据库锁,保证了某台主机对一业务桶内的业务进行调度时不受其他主机的干扰,有效保障了业务调度的顺利执行。
根据本发明实施例的技术方案,因为采用获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度的技术手段,所以克服了现有的业务调度方法存在的适用性窄、保障性低以及调度成本高的技术问题,进而达到能够通过实现了多主机并行执行调度任务,适用性广,提高了业务调度的保障性和调度效率,降低了调度成本的技术效果。
可以理解的是,由于方法实施例与装置实施例为相同技术构思的不同呈现形式,因此,本申请中方法实施例部分的内容应同步适配于装置实施例部分,此处不再赘述。
图4示出了可以应用本发明实施例的业务调度方法或业务调度装置的示例性***架构400。
如图4所示,***架构400可以包括终端设备401、402、403,网络404和服务器405(此架构仅仅是示例,具体架构中包含的组件可以根据申请具体情况调整)。网络404用以在终端设备401、402、403和服务器405之间提供通信链路的介质。网络404可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备401、402、403通过网络404与服务器405交互,以接收或发送消息等。终端设备401、402、403上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备401、402、403可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器405可以是提供各种服务的服务器,例如对用户利用终端设备401、402、403所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的业务、调度时间等数据进行分析等处理,并将处理结果(例如执行业务的调度--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的业务调度方法一般由服务器405执行,相应地,业务调度装置一般设置于服务器405中。
应该理解,图4中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图5,其示出了适于用来实现本发明实施例的终端设备的计算机***500的结构示意图。图5示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图5所示,计算机***500包括中央处理单元(CPU)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM 503中,还存储有***500操作所需的各种程序和数据。CPU 501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。在该计算机程序被中央处理单元(CPU)501执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括业务注册模块、业务桶号确定模块和调度模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,业务注册模块还可以被描述为“用于获取消息队列中的业务,将所述业务在数据库中进行业务注册的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度。
根据本发明实施例的技术方案,因为采用获取消息队列中的业务,将业务在数据库中进行业务注册,业务注册指示了业务的调度时间;根据业务对应的业务主键进行分桶,确定业务对应的业务桶号;根据业务桶号和调度时间,通过业务集群内的主机执行业务的调度的技术手段,所以克服了现有的业务调度方法存在的适用性窄、保障性低以及调度成本高的技术问题,进而达到能够通过实现了多主机并行执行调度任务,适用性广,提高了业务调度的保障性和调度效率,降低了调度成本的技术效果。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种业务调度方法,其特征在于,包括:
获取消息队列中的业务,将所述业务在数据库中进行业务注册,所述业务注册指示了业务的调度时间;
根据所述业务对应的业务主键进行分桶,确定所述业务对应的业务桶号;
根据所述业务桶号和所述调度时间,通过业务集群内的主机执行业务的调度。
2.根据权利要求1所述的业务调度方法,其特征在于,在所述获取消息队列中的业务的步骤之后,所述业务调度方法还包括:根据调度参数对所述业务进行过滤。
3.根据权利要求1所述的业务调度方法,其特征在于,所述根据所述业务对应的业务主键进行分桶,确定所述业务对应的业务桶号的步骤包括:对所述业务对应的业务主键进行哈希计算,得到哈希值,根据所述哈希值和业务桶的数量确定所述业务对应的业务桶号。
4.根据权利要求1所述的业务调度方法,其特征在于,所述根据所述业务桶号和所述调度时间,通过业务集群内的主机执行业务的调度的步骤包括:确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从所述初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务。
5.根据权利要求4所述的业务调度方法,其特征在于,在所述确定业务集群内每台主机对应的初始业务桶号的步骤之前,所述业务调度方法还包括:配置每台主机对应的调度任务,所述调度任务指示了调度周期和调度数量,根据所述调度任务循环执行权利要求5所述步骤。
6.根据权利要求4所述的业务调度方法,其特征在于,每台主机执行相应业务桶号对应的业务的调度时,通过数据库锁对相应业务桶进行锁定。
7.一种业务调度装置,其特征在于,包括:
业务注册模块,用于获取消息队列中的业务,将所述业务在数据库中进行业务注册,所述业务注册指示了业务的调度时间;
业务桶号确定模块,用于根据所述业务对应的业务主键进行分桶,确定所述业务对应的业务桶号;
调度模块,用于根据所述业务桶号和所述调度时间,通过业务集群内的主机执行业务的调度。
8.根据权利要求7所述的业务调度装置,其特征在于,所述调度模块还用于:确定业务集群内每台主机对应的初始业务桶号,根据业务桶号,通过主机从所述初始业务桶号起,遍历执行全部业务桶号内满足调度时间的业务。
9.一种终端装置,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911203874.6A CN111782352A (zh) | 2019-11-29 | 2019-11-29 | 一种业务调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911203874.6A CN111782352A (zh) | 2019-11-29 | 2019-11-29 | 一种业务调度方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782352A true CN111782352A (zh) | 2020-10-16 |
Family
ID=72755779
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911203874.6A Pending CN111782352A (zh) | 2019-11-29 | 2019-11-29 | 一种业务调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782352A (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885832A (zh) * | 2006-07-07 | 2006-12-27 | Ut斯达康通讯有限公司 | 用于无线通信***的分组调度方法和装置 |
CN101299679A (zh) * | 2008-06-13 | 2008-11-05 | 南京邮电大学 | 泛在网络业务动态重配置方法 |
US20090190470A1 (en) * | 2008-01-30 | 2009-07-30 | Hinosugi Hideki | Traffic shaping method and device |
US20140307624A1 (en) * | 2013-04-15 | 2014-10-16 | Samsung Electronics Co., Ltd. | Method and apparatus for scheduling video traffic in wireless communication system |
WO2014187232A1 (zh) * | 2013-05-23 | 2014-11-27 | 中兴通讯股份有限公司 | 基站、基站调度业务的方法 |
US20170034843A1 (en) * | 2015-07-29 | 2017-02-02 | Qualcomm Incorporated | Scheduler methods for data aggregation over multiple links |
CN108848146A (zh) * | 2018-05-25 | 2018-11-20 | 西安云维智联科技有限公司 | 一种基于时间触发通信业务的调度优化方法 |
CN109213584A (zh) * | 2018-07-27 | 2019-01-15 | 阿里巴巴集团控股有限公司 | 任务执行方法、装置、电子设备及计算机可读存储介质 |
CN110046029A (zh) * | 2019-03-13 | 2019-07-23 | 平安科技(深圳)有限公司 | 应用于集群内多级缓存的数据处理方法和装置 |
CN110139251A (zh) * | 2019-06-03 | 2019-08-16 | 北京智芯微电子科技有限公司 | 基于动态分组的海量m2m业务混合调度方法 |
CN110308979A (zh) * | 2019-06-27 | 2019-10-08 | 苏宁消费金融有限公司 | 基于任务调度的异步处理框架及其实现方法 |
-
2019
- 2019-11-29 CN CN201911203874.6A patent/CN111782352A/zh active Pending
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1885832A (zh) * | 2006-07-07 | 2006-12-27 | Ut斯达康通讯有限公司 | 用于无线通信***的分组调度方法和装置 |
US20090190470A1 (en) * | 2008-01-30 | 2009-07-30 | Hinosugi Hideki | Traffic shaping method and device |
CN101299679A (zh) * | 2008-06-13 | 2008-11-05 | 南京邮电大学 | 泛在网络业务动态重配置方法 |
US20140307624A1 (en) * | 2013-04-15 | 2014-10-16 | Samsung Electronics Co., Ltd. | Method and apparatus for scheduling video traffic in wireless communication system |
WO2014187232A1 (zh) * | 2013-05-23 | 2014-11-27 | 中兴通讯股份有限公司 | 基站、基站调度业务的方法 |
US20170034843A1 (en) * | 2015-07-29 | 2017-02-02 | Qualcomm Incorporated | Scheduler methods for data aggregation over multiple links |
CN108848146A (zh) * | 2018-05-25 | 2018-11-20 | 西安云维智联科技有限公司 | 一种基于时间触发通信业务的调度优化方法 |
CN109213584A (zh) * | 2018-07-27 | 2019-01-15 | 阿里巴巴集团控股有限公司 | 任务执行方法、装置、电子设备及计算机可读存储介质 |
CN110046029A (zh) * | 2019-03-13 | 2019-07-23 | 平安科技(深圳)有限公司 | 应用于集群内多级缓存的数据处理方法和装置 |
CN110139251A (zh) * | 2019-06-03 | 2019-08-16 | 北京智芯微电子科技有限公司 | 基于动态分组的海量m2m业务混合调度方法 |
CN110308979A (zh) * | 2019-06-27 | 2019-10-08 | 苏宁消费金融有限公司 | 基于任务调度的异步处理框架及其实现方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108388479B (zh) | 延迟消息推送方法、装置、计算机设备及存储介质 | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
CN111950988B (zh) | 分布式工作流调度方法、装置、存储介质及电子设备 | |
CN111897633A (zh) | 一种任务处理的方法和装置 | |
CN110213620B (zh) | 带宽分配方法及装置 | |
CN112051993A (zh) | 状态机模板的生成及任务处理方法、装置、介质及设备 | |
CN110928912A (zh) | 一种生成唯一标识的方法和装置 | |
CN113672357A (zh) | 任务调度的方法、装置和*** | |
CN109428926B (zh) | 一种调度任务节点的方法和装置 | |
CN113127225A (zh) | 一种数据处理任务的调度方法、装置和*** | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN111831503A (zh) | 一种基于监控代理的监控方法和监控代理装置 | |
CN108683608B (zh) | 分配流量的方法和装置 | |
US10893015B2 (en) | Priority topic messaging | |
CN114095571A (zh) | 数据处理方法、数据服务总线、终端和存储介质 | |
CN109284177B (zh) | 一种数据更新方法和装置 | |
CN111177109B (zh) | 一种删除过期键的方法和装置 | |
CN110807058B (zh) | 一种导出数据的方法和*** | |
CN112860421A (zh) | 用于作业处理的方法、设备和计算机程序产品 | |
CN111782352A (zh) | 一种业务调度方法和装置 | |
CN112783613B (zh) | 一种单元调度的方法和装置 | |
CN114035861A (zh) | 集群配置方法、装置、电子设备和计算机可读介质 | |
CN112182003A (zh) | 一种数据同步方法和装置 | |
CN113779122A (zh) | 导出数据的方法和装置 | |
CN113760487A (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 |