CN111045804A - 一种任务分配方法、装置、介质及电子设备 - Google Patents
一种任务分配方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN111045804A CN111045804A CN201911179073.0A CN201911179073A CN111045804A CN 111045804 A CN111045804 A CN 111045804A CN 201911179073 A CN201911179073 A CN 201911179073A CN 111045804 A CN111045804 A CN 111045804A
- Authority
- CN
- China
- Prior art keywords
- job
- participant
- task
- participants
- ordered set
- 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
- 238000000034 method Methods 0.000 title claims abstract description 98
- 230000008569 process Effects 0.000 claims abstract description 55
- 230000004044 response Effects 0.000 claims description 30
- 238000012545 processing Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 10
- 239000003795 chemical substances by application Substances 0.000 description 54
- 238000010586 diagram Methods 0.000 description 14
- 230000009286 beneficial effect Effects 0.000 description 11
- 230000000694 effects Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 238000012163 sequencing technique Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000003203 everyday effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 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/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/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
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
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种任务分配方法、装置、介质及电子设备。
背景技术
在计算机出现后,无论是互联网时代、移动互联网时代还是其他时代,都涉及通过计算机处理作业任务,这时候就需要进行任务分配。为了实现公平,在将多个任务分配给作业参与者时,通常要考虑任务的均衡分配问题,以尽可能避免或者减少有的作业参与者相对繁忙而其他作业参与者相对清闲这种情况的出现。
目前常见的是静态任务分配,作业参与者形成环状链表,该环状链表中每个成员的状态及相对位置基本上固定不变,每次通过调整指针寻找下一个作业参与者。而在分布式环境下,作业参与者的状态及其之间的相对位置都是动态变化的,采用轮询的方式很难实现任务的均衡分配。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施例的目的在于提供一种任务分配方法、装置、介质及电子设备,进而至少在一定程度上克服当前分布式环境下,作业参与者是动态变化的,很难简单高效地完成任务均衡分配的问题。
本发明的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本发明的实践而习得。
根据本发明实施例的第一方面,提供了一种任务分配方法,所述方法包括:响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在所述有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前;基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序。
在本发明的一些实施例中,基于前述方案,所述作业参与者的初始分数被设置为该作业参与者加入所述有序集的时间。
在本发明的一些实施例中,基于前述方案,所述基于当前时间更新所选择的作业参与者的分数包括将该作业参与者的分数设置为该作业参与者被选择来处理所述任务请求的当前时间。
在本发明的一些实施例中,基于前述方案,所述作业参与者的分数是基于作业参与者的空闲时间来设置的。
在本发明的一些实施例中,基于前述方案,所述基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序包括:将该作业参与者的分数重置为使其在有序集中排在最后位置的值;将用于检测该作业参与者的空闲时间的计时器清零;响应于检测到该作业参与者完成对其任务的处理,启动所述计时器来记录该作业参与者的空闲时间;响应于收到新的待处理的任务请求,对于有序集中每个作业参与者,基于其计时器中相应的空闲时间来重新设置其对应的分数,并按照新的分数对作业参与者重新排序。
在本发明的一些实施例中,基于前述方案,所述方法包括:响应于作业参与者的组成发生变化,刷新有序集中所有作业参与者的排序。
在本发明的一些实施例中,基于前述方案,在响应于待处理的任务请求分配任务之前,刷新有序集中所有作业参与者的排序。
根据本发明实施例的第二方面,提供了一种任务分配装置,包括:调度模块,可以用于响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在所述有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前;排序模块,可以用于基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序。
在本发明的一些实施例中,基于前述方案,排序模块也可以用于让作业参与者在有序集中按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前。
在本发明的一些实施例中,基于前述方案,本发明的任务分配装置可以包括:数据收发模块,可以用于接收任务请求。数据收发模块也可以用于将任务请求对应的任务分派给作业参与者处理任务的终端。
在本发明的一些实施例中,基于前述方案,本发明的任务分配装置可以包括:配置模块,用于配置有序集,将作业参与者设为有序集中的成员,将作业参与者对应的时间戳设为有序集中该成员对应的分数。
根据本发明实施例的第三方面,提供了一种计算机可读存储介质,其特征在于,其上包含有计算机程序,所述计算机程序可被处理器执行以实现如上述实施例中第一方面所述的任务分配方法。
根据本发明实施例的第四方面,提供了一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储一个或多个可执行指令;所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以实现如上述实施例中第一方面所述的任务分配方法。
本发明实施例提供的技术方案可以包括以下有益效果:
在本发明的一些实施例所提供的技术方案中,通过响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在所述有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前;基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序,从而以简单高效的方式来解决任务分配不均衡的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示意性示出了根据本发明实施例的任务分配方法的流程图;
图2示意性示出了根据本发明实施例的通过有序集对作业参与者进行排序时采用的有序集元素结构图;
图3示意性示出了根据本发明实施例的一种任务分配方法在基于有序集实现排序时的流程示意图;
图4示意性示出了根据本发明实施例的一个示例中咨询事件发生时对应的任务请求处理的时间轴示意图;
图5示意性示出了根据本发明实施例的一种任务分配装置的模块图;
图6示意性示出了根据本发明实施例的一种任务分配装置向多个作业参与者分配多个任务请求的应用场景图;
图7示出了适于用来实现本发明实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
如在背景技术部分提到的,现有的静态任务分配方式通常采用环状链表来实现,将其成员按照顺序(比如,身份标识的大小顺序)形成一个环形的链表。在这个环状链表中,通过调整指针来选择下一个作业参与者。形成环状链表后,除有成员上下线外,各成员的相对位置关系是固定不变的。但是,发明人发现这种任务分配方式在实际的应用场景中会出现任务难以均衡的情况。比如,在指针指到某个成员给该成员分配任务时,该成员当前没能及时响应任务,如成员是人工坐席时,人工坐席正在与前一个客户电话沟通而不能接受下一个任务,为了任务能够尽快得到响应,避免客户等待时间过长,导致用户体验不佳,则任务会被分配给下一个成员,而这种情况下,下次给没能及时响应任务的成员分配下一个任务时,得让指针经历一个循环再次回到该成员时,才会给该成员分配下一个任务,由此导致任务分配不均的问题。另外,在分布式环境中,作业参与者本身的状态(例如,在线或离线,忙或空闲等)及与其他作业参与者的相对位置经常发生变化,例如对于新加入分配序列的作业参与者,如果其插入位置距离上一次被分配任务的作业参与者的位置较近,则可以很快接收到任务;反之如果距离较远则需要等待较长时间,这也可能会导致任务分配不均衡。因此,在本发明的实施例中基于有序集来对作业参与者进行管理,简单高效地实现了任务的均衡分配,可以更好地适应分布式环境。
在对本发明的实施例进行具体介绍之前,先对其中使用到的部分术语作如下解释:
有序集,是指有序集合(sorted set)。有序集合中的成员根据成员对应的分数或权值的大小而有序排列。该有序集中每个成员至少包括两个属性:该成员的身份标识(id)和该成员对应的分数(score)或权值(weight),为方便描述,下文均统一为分数。
作业参与者,其可以接收任务并执行任务,其可以是能够执行具体作业任务的计算装置、在计算装置上运行的软件程序、计算进程、计算线程等等,甚至可以是人(比如,人工坐席或人工客服),本文对此不进行限制。
时间戳(Timestamp)可以是绝对时间,也可以是相对时间,也可以是能用于指示作业参与者被选择来处理任务请求时的时序性的特定序号。例如时间戳可以是指某个具体时刻点,例如系统当前时间;也可以指一段时间,例如等待时间,也可以指序号生成器生成的特定序号。特定序号可以是根据预设的序号生成规则根据生成时间按照由小到大的方式生成的连续数字形式的顺序标识符。时间戳可以通过多种形式来表示,例如对于同一计算装置上的多个计算进程,可以采用该计算装置的系统时间来记录当前时间为时间戳或基于系统当前时间来生成时间戳;对于分布在不同地区的多个计算装置,可以例如采用分布式系统的Lamport时间戳、或者可以从格林威治时间1970年01月01日00时00分00秒以来的总秒数来产生时间戳等等,本文对此不进行任何限制。为方便描述,下文均以从格林威治时间1970年01月01日00时00分00秒以来的总秒数产生的时间戳进行举例。
图1示意性示出了根据本发明一个实施例的任务分配方法的流程图,该任务分配方法的执行主体可以是服务器或用于进行任务分配的任何一个或多个计算装置及其组合等。如图1所示,根据本发明的一个实施例的一种任务分配方法,可以包括步骤S110、步骤S120和步骤S130中的一个或多个,以下详细进行说明:
在步骤S110中,获取待处理的任务请求。
在本发明的一个实施例中,任务请求可以来自于作业数据流,接收数据的方式不限,比如可以通过监听或者订阅的方式,完成外界作业生成者投递过来的作业数据。任务请求例如可以是处理客户咨询的请求。比如,任务请求可以是处理客户来电咨询业务的请求。作业方式可以是接听来电。又比如,意向客户在网页上浏览商品信息后,意向客户可能通过网页的即时聊天窗口咨询问题。任务请求可以是处理意向客户通过网页的即时聊天窗口咨询问题的请求。作业方式可以是通过网页的即时聊天窗口与客户聊天。又例如,任务请求可以是处理数据的请求。作业方式可以是通过多个计算机线程、多个计算机进程,甚至是多个计算装置来执行处理数据的作业任务。应理解,在本文对于作业任务的具体形式不进行限制,适用于任何能够通过计算装置进行分配的作业任务。
在步骤S120中,响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求。在该有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前。
在本发明的一个实施例中,以有序集的形式管理的所有作业参与者可以是指所有作业参与者是以被设置为有序集中的成员的形式来进行管理的作业参与者。参见图2,图2示意性示出了根据本发明实施例的通过有序集对作业参与者进行排序时采用的有序集元素结构图。其中,有序集是由元素信息和分数信息组成的。元素信息内记录了参与作业的各个成员,更具体地,元素信息内记录了参与作业的各个成员的身份标识(id),以成员的身份标识(id)来区分不同的作业参与者。分数信息内记录各个成员的分数。在本发明中,分数的数值是时间戳。具体地说,作业参与者可以设为有序集中的成员。该作业参与者对应的时间戳可以设为有序集中该成员对应的分数。通过该有序集对所有作业参与者进行排序。换言之,有序集的成员内记录的是对应的作业参与者或者说作业参与者的身份标识,该成员对应的分数中记录的是该作业参与者对应的时间戳。有序集中的成员根据分数的大小有序排列。该实施例的技术方案至少能够实现以下有益技术效果:作业参与者在有序集中可以动态调整,保证均衡调度的条件是开放且灵活的,巧妙且简单的实现了服务时间窗内任务分配的均衡性,特别是在分布式环境下,实施简单高效,且使用的约束条件少,能够灵活地、动态地对参与作业的作业参与者进行调度。
在本发明的一个实施例中,有序集可以是维持在本发明的任务分配装置中或者电子设备中,也可以是维持在第三方的设备中,比如第三方的服务器。也就是说,排序并非一定是由本发明的任务分配装置中或者电子设备计算得出的,也可能是第三方的设备计算得出的。在有序集维持在第三方的设备中的情况下,本发明的任务分配装置中或者电子设备可以仅是获取从有序集中获取排序最靠前的作业参与者或者获取排序结果后从中选择排序最靠前的作业参与者来处理任务请求,从而利用第三方的设备中的有序集中的排序来选择处理相应任务请求的任务参与者。该实施例的技术方案至少能够实现以下有益技术效果:让有序集的部署方式更灵活,让用户能够基于自身条件,选择合适的部署方式,可以不增加任何额外的服务组件情况下,动态灵活的配置作业参与者,轻量地满足用户在复杂环境下的作业均衡调度诉求,而且该技术方案的实现和部署简单,在要改造现有的其他类似任务分配系统来使用本发明的技术方案执行任务分配时,对原有的系统的改造工作量小,可以方便地扩展到任何涉及作业调度或者任务分配的系统、装置或者电子设备中。
在本发明的一个实施例中,有序集可以为Redis有序集。Redis有序集可以设置于第三方的Redis服务器中。当Redis有序集设置在第三方的Redis服务器中时,该Redis服务器直接或者间接通信连接于任务分配装置、电子设备和/或作业参与者处理任务的终端以即时获取作业参与者的状态和/或时间戳来动态维持该Redis有序集。处理任务的终端例如可以是坐席的语音通话设备、通过即时聊天窗口处理客户咨询任务的客服的手机或者电脑。或者,有序集可以为SSDB有序集。SSDB有序集可以设置于第三方的SSDB服务器中。当SSDB有序集设置在第三方的SSDB服务器中时,该SSDB服务器直接或者间接通信连接于任务分配装置、电子设备和/或作业参与者处理任务的终端以即时获取作业参与者的状态和/或时间戳来动态维持该SSDB有序集。又或者,有序集可以为动态环状有序链表。有序集可以设于电子设备中。该电子设备即时从作业参与者处理任务的终端获取作业参与者的状态和/或时间戳来维持该动态环状有序链表。该实施例的技术方案至少能够实现以下有益技术效果:本发明可以利用Redis服务器、SSDB服务器或者电子设备作为中间共享资源,实现分布式环境下作业任务的均衡分配和调度。本发明可以基于有序集对作业参与者进行排序,获取当前最久未被分配任务的空闲作业参与者作为当前任务的任务处理者,整个架构实现简单,扩缩容方便,最重要的是在作业参与者动态变化的情况下,依然可以简单高效的完成任务的均衡分配。
在本发明的一个实施例中,时间戳可以是从格林威治时间1970年01月01日00时00分00秒以来的总秒数。比如,假设此时仅有两个作业参与者,第一作业参与者被选择来处理任务请求时的北京时间是2019.10.24 18:01:44,其对应的时间戳为1571911304,第二作业参与者被选择来处理任务请求时的北京时间是2019.10.24 18:06:44,其对应的时间戳为1571911604。在有序集对所有作业参与者进行排序,1571911304<1571911604,则在有序集中,第一作业参与者会排在第二作业参与者之前,第一作业参与者相对于第二作业参与者越久未被分配任务,此时,若第一作业参与者是空闲状态,则在响应于待处理的任务请求时,会选择第一作业参与者来处理该任务请求。在该实施例中,由于时间戳可能相同,有序集中基于时间戳得到的排序会出现两个或者两个以上作业参与者的排名相同的情况,因此可能需要进行二次排序。举例来说,以作业参与者是保险公司的人工坐席为例,一个保险公司可能在位于不同地方的分公司都设有客服部,但为了充分利用保险公司所有的客服资源,所有分公司的人工坐席可以都由一个用于分配任务的电子设备来分配接线任务,这个电子设备比如是设于总公司的一台服务器。而这种情况下,任务请求的数量较多,人工坐席的数量也较多,当服务器直接使用该时间戳作为排序依据的时候,可能会出现两个或者两个以上作业参与者在同一时间接受了不同的任务的情况。下次根据时间戳的数值大小对所有作业参与者进行排序后,则会在出现两个或者两个以上作业参与者的排名相同的情况。由此,每个作业参与者每次上线时会被写入一个代表该作业参与者的身份标识,每个身份标识有对应的写入时间。由此,本发明的方法还可以包括:作业参与者按照其相应分数有序排列后,在出现两个或者两个以上作业参与者的排名相同的情况下,根据两个或者两个以上作业参与者上线时其身份标识被写入的顺序对两个或者两个以上作业参与者进行二次排序。两个或者两个以上作业参与者中身份标识越先被写入的作业参与者的排序越靠前。比如,当前电子设备中记录了一百个作业参与者,第一、第二、第三和第四作业参与者是其中的四个作业参与者,假设这四作业参与者的身份标识的写入顺序分别是31、12、13、45。如果某次第一作业参与者和第三作业参与者的时间戳相同,则两者根据时间戳的分数排序的排名相同,此时再根据两者的身份标识被写入的顺序来二次排序,13<31,则二次排序后第三作业参与者排在第一作业参与者之前,此时,若第一作业参与者是空闲状态,则在响应于待处理的任务请求时,会选择第一作业参与者来处理该任务请求。该实施例的技术方案至少能够实现以下有益技术效果:该实施例直接使用从格林威治时间1970年01月01日00时00分00秒以来的总秒数来作为排序用的分数,直接可以从系统时间获取,无需额外的序号生成器即可实现,实现方式简单高效。
在本发明的一个实施例中,时间戳可以是特定序号。特定序号可以是根据预设的序号生成规则根据生成时间按照由小到大的方式生成的连续数字形式的顺序标识符。连续数字形式可以是指在一定时期内连续,比如,在一天内、一个月内或者一年内连续。下面举的例子中的特定序号就是在一天内连续的特定序号。特定序号的数值越小则代表其对应的作业参与者是越久未被分配任务的作业参与者。比如,特定序号可以被设定为年月日加多位顺序号的纯数字形式。这里以五位十进制顺序号为例,特定序号的序号生成规则可以是从系统时钟获取年月日后加上五位顺序号,顺序号每日从00000到99999依据生成先后顺序由小到大生成。比如,两个前后相邻生成的特定序号可以依次为2019102400099和2019102400100。基于上面生成的这两个特定序号来进一步举例,假设此时只有两个作业参与者,2019102400099对应于第一作业参与者,2019102400100对应于第二作业参与者。2019102400099<2019102400100,则在有序集中,第一作业参与者排在第二作业参与者之前,在第一作业参与者作为任务请求对应的任务处理者。该实施例的技术方案至少能够实现以下有益技术效果:该实施例中,由于特定序号是依据生成先后顺序由小到大生成,唯一且不重复,有序集中基于特定序号得到的排序中不会出现两个或者两个以上作业参与者的排名相同的情况,因此无需进行二次排序,排序简单方便。
在步骤S130中,基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序。
在本发明的一个实施例中,作业参与者的初始分数可以被设置为该作业参与者加入有序集的时间。在本发明中,时间可以是以时间戳的形式表示的。其中,初始分数是作业参与者加入有序集时初始设置的分数。初始分数被设置为该作业参与者加入有序集的时间。比如,一个作业参与者加入有序集时的北京时间是2019.10.24 08:00:00,其对应的时间戳是1571875200。则该作业参与者的初始分数可以被设置为1571875200。该实施例的技术方案至少能够实现以下有益技术效果:作业参与者的初始分数被设置为该作业参与者加入有序集的时间可以使得每次新加入有序集中的作业参与者在有序集中的排序都会位于最靠后的位置,简单高效地解决了前面提到的技术问题(对于新加入分配序列的作业参与者,如果其插入位置距离上一次被分配任务的作业参与者的位置较近,则可以很快接收到任务;反之如果距离较远则需要等待较长时间,这也可能会导致任务分配不均),使得任务分配更均衡。
在本发明的一个实施例中,基于当前时间更新所选择的作业参与者的分数可以包括将该作业参与者的分数设置为该作业参与者被选择来处理任务请求的当前时间。比如,前一个实施例中例举的作业参与者被选择来处理任务请求,其上线后,第一次被选择来处理任务请求的当前时间是北京时间2019.10.24 08:39:05,其对应的时间戳是1571877545,则该作业参与者的初始分数1571875200将会被更新,重新设置为1571877545。该实施例的技术方案至少能够实现以下有益技术效果:将该作业参与者的分数设置为该作业参与者被选择来处理任务请求的当前时间可以让作业参与者一被选择来处理任务请求后则分数便会更新,从而由排在最前变为排在最后,便于为后续任务请求分配其他作业参与者,而且,由于该实施例的技术方案没有考虑任务的作业时长,使得同一作业班次的所有作业参与者被分配任务的次数更均衡,在一些单个任务的任务量差别不大的场景下,更有利于任务的均衡分配。
在本发明的一个实施例中,为了选择越久未被分配任务的空闲作业参与者,有序集可以采用求交集的形式来实现。比如,有序集可以包括第一、第二和第三集合。第一、第二和第三集合都是有序集的形式,只是为了和本发明的有序集区分,采用第一、第二和第三集合来表述。有序集的最终的排序来自于第一集合和第二集合求交集的得到的第三集合。第一集合的成员可以设置为所有上线的作业参与者。第一集合中成员对应的分数可以设置为作业参与者开始处理任务请求对应的任务的当前时间。第二集合的成员可以设置为所有处于空闲状态的作业参与者。第二集合成员对应的分数可以设置为作业参与者被写入第一集合的写入时间或者统一的固定值。写入时间可以是指该作业参与者加入所述有序集的时间。统一的固定值可以是指将所有作业参与者的分数都设为相同的值,比如0或者1。求交集时可以用到Redis有序集的zinterstore命令。基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序可以包括:将该作业参与者在第一集合的分数重置为使其在第一集合中排在最后位置的值;将该作业参与者暂时从第二集合移除,直至响应于检测到该作业参与者完成对其任务的处理,才将该作业参与者再次加入第二集合;响应于收到新的待处理的任务请求,对第一集合和第二集合求交集得到第三集合,第三集合中成员对应的分数设置为该成员在第一和第二集合中的分数和,在第三集合中按照新的分数对作业参与者重新排序,以第三集合中的排序作为该有序集的排序。该实施例的技术方案至少能够实现以下有益技术效果:该实施例使用有序集来维护作业参与者的时间戳和空闲状态,实现方式简单高效,且响应速度更快。
在本发明的一个实施例中,最久未被分配任务的空闲作业参与者可以是指空闲了最久的作业参与者,或者空闲时间最长的作业参与者。而在前面给出的实施例中,最久未被分配任务的空闲作业参与者是指当前时间距离其上次被分配任务的时间的时长最长且当前其处于空闲状态的作业参与者,该作业参与者甚至有可能是刚刚处理完一个较长作业时间的任务的作业参与者。空闲时间可以是指作业参与者完成对其当前的任务的处理后,等待下一个任务的过程中的等待时长。由此,优选的,作业参与者的分数可以是基于作业参与者的空闲时间来设置的。优选的,基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序可以包括:将该作业参与者的分数重置为使其在有序集中排在最后位置的值;将用于检测该作业参与者的空闲时间的计时器清零;响应于检测到该作业参与者完成对其任务的处理,启动计时器来记录该作业参与者的空闲时间;响应于收到新的待处理的任务请求,对于有序集中每个作业参与者,基于其计时器中相应的空闲时间来重新设置其对应的分数,并按照新的分数对作业参与者重新排序。比如,作业参与者被选择来处理任务请求后,将其分数重置为0,空闲时间为0,在该有序集中,按照空闲时间由大到小排列,由此该作业参与者的分数重置为使其在有序集中排在最后位置的值,将用于检测该作业参与者的空闲时间的计时器清零,直至响应于检测到该作业参与者完成对其任务的处理,启动计时器来记录该作业参与者的空闲时间,而对于有序集中的每个作业参与者,都采用此方式来记录其空闲时间,并在响应于收到新的待处理的任务请求,对于有序集中每个作业参与者,基于其计时器中相应的空闲时间来重新设置其对应的分数,并按照新的分数对作业参与者重新排序,从而让空闲时间越长的作业参与者越先被分配任务。可见,该实施例中通过计算等待时间,实现了以相对的空闲时长来进行排序。该实施例的技术方案至少能够实现以下有益技术效果:该实施例中,作业参与者的分数是基于作业参与者的空闲时间来设置的,由此,避免或者减少了单个作业的作业时间较长,作业参与者刚刚结束上一个任务就立即被分配下一个任务的情况出现,使得同一作业班次的所有作业参与者被分配任务的总作业时长更均衡,在一些单个任务的任务量差别较大的场景下,更有利于任务的均衡分配。
在本发明的一个实施例中,该任务分配方法可以包括:响应于作业参与者的组成发生变化,刷新有序集中所有作业参与者的排序。该任务方法还可以包括:响应于作业参与者对应的分数发生变化,刷新有序集中所有作业参与者的排序。比如,本发明的方法中,由电子设备监控被写入的作业参与者的状态,在任意作业参与者的状态发生相应变化时,对应地更新作业参与者组成,并且响应于有序集中的作业参与者组成的更新,刷新有序集中所有作业参与者的排序。作业参与者的状态例如可以包括上线状态、下线状态、作业状态和/或空闲状态。处于上线状态的作业参与者是刚参与作业的新增作业参与者。处于下线状态的作业参与者是退出作业的既有作业参与者。处于作业状态的作业参与者是正在处理前期的任务请求对应的任务的作业参与者。处于空闲状态的作业参与者是已经处理完前期的任务请求对应的任务且处于待命状态的作业参与者。优选的,该方法还可以包括:响应任意新增作业参与者的状态变为上线状态,更新作业参与者组成,加入该作业参与者且将该作业参与者的上线操作视为其被选择来处理一次任务请求,基于当前时间对应更新该作业参与者的分数;响应任意作业参与者的状态变为下线状态,更新作业参与者组成,移除该作业参与者;和/或响应任意作业参与者的状态由上线状态或者空闲状态变为作业状态,基于当前时间对应更新该作业参与者的分数。由此,空闲作业参与者至少可以包括处于空闲状态的作业参与者。如果作业参与者处理的作业是可以多个作业一起进行的,如任务是通过网页的即时聊天窗口与客户聊天来处理客户咨询,则一个作业参与者可以一对多与几个客户聊天。这种情况下,可用作业参与者可以是处于上线状态、作业状态和空闲状态的作业参与者。由此,空闲作业参与者可以是指当前能够响应新增任务的作业参与者。比如,如果作业参与者处理的作业是只能一对一单个处理的作业,比如通过电话交流的方式来处理咨询任务的,则空闲作业参与者只能是处于上线状态和空闲状态的作业参与者。优选的,该方法还可以包括:根据作业参与者的状态,将当前能够响应新增任务的作业参与者标记为空闲作业参与者,和/或将当前不能响应新增任务的作业参与者标记为非空闲作业参与者。比如,处于作业状态的作业参与者此刻正在和某个客户电话沟通,此刻其可以被标记为非空闲业参与者。当该作业参与者结束与客户电话沟通时,比如,挂电话后,其可以被标记为空闲作业参与者。优选的,在响应于待处理的任务请求分配任务之前,刷新有序集中所有作业参与者的排序。比如,每次在响应待处理的任务请求分配任务之前,都刷新有序集中所有作业参与者的排序,以使得当前的排序是最准确的。在有作业参与者因下班(人)或者故障(机器)而退出作业时,及时的刷新会避免任务分配给一个短期内难于处于任务的作业参与者。这里的机器可以是计算装置、在计算装置上运行的软件程序、计算进程、计算线程等等,本文对此不进行限制。该实施例的技术方案至少能够实现以下有益技术效果:在作业参与者的组成或者其对应的分数发生变化时,即时刷新有序集中所有作业参与者的排序,可以使得有序集中成员排序更准确,而且可以避免或者减少出现被选择来处理所述任务请求的任务参与者难以快速处理任务的情况。
下面结合一个具体的示例来说明在相应作业参与者对应的分数发生更新时,刷新有序集中所有作业参与者的排序的过程。
在本发明的一个示例中,假设当前电子设备的有序集中记录了三个作业参与者,分别是第一、第二和第三作业参与者。第一、第二和第三作业参与者被选择来处理所述任务请求的时间戳分别是1571880012、1571877133和1571877611。当有任务请求时,响应于待处理的任务请求,因为1571877133<1571877611<1571880012,可见此时有序集中的排序由前到后依次为第二、第三、第一作业参与者。电子设备则会选择第二作业参与者来处理任务请求。若第二作业参与者在北京时间2019年10月24日09:40:22被选择来处理所述任务请求,会将其分数更新为1571881222,而1571877611<1571880012<1571881222,刷新有序集中所有作业参与者的排序的过程后,使得有序集中的排序由前到后依次为第三、第一、第二作业参与者。第二作业参与者在有序集中的排序由最靠前变为了最靠后。这样,下一次的任务请求对应的任务则会被优先分给此时排在最靠前的第三作业参与者。
图3示意性示出了根据本发明一个实施例的任务分配方法在基于有序集实现排序时的流程示意图。如图3所示,在采用有序集来实现排序时,根据本发明的一个实施例的一种任务分配方法,可以包括如下步骤中的一个或者多个:
S210、将作业参与者设为有序集中的成员,将作业参与者被选择来处理任务请求的时间作为成员的分数;
S220、实时接收任务请求;
S230、判断该任务请求对应的任务是否为新任务,如果是新任务,则转至步骤S240,如果不是新任务,则将该任务分配给原任务处理者;
S240、响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前;
S250、响应于作业参与者被选择来处理任务请求的操作,基于当前时间更新所选择的作业参与者的分数。
图4示意性示出了根据本发明实施例的咨询事件发生时对应的任务请求处理示例的时间轴示意图。下面根据图4,结合一个具体的示例来说明图3中的各个步骤。
在本发明的一个示例中,以作业参与者是接听来电咨询的人工坐席为例。当前各大电商平台,都有人工坐席,任务分配装置或者电子设备用来解决客户的咨询任务的分配问题,每个客户的咨询会话可以抽象为作业或者任务,在这个会话里面处理客户咨询的请求的可以看作任务请求。典型的,当前客服系统一般都是24小时在线服务的,人工坐席通常会采取3*8h的排班模式,即三班倒每班8小时的排班模式。为了解决人工坐席承担的客户会话咨询的均匀性,会尽可能让当前服务班次时间窗内的人工坐席接待基本一样多的客户。采用本发明方案,可以很好的解决调度不均衡的问题,而且还不增加系统的额外成本,类似班次调转的作业参与者动态变化的情况下,很好保证调度分配的均衡性。在该示例中,假设有四个人工坐席A、B、C和D,但人工坐席A、B和人工坐席C、D分别在两个班次上班。其中,8:00-16:00时段的班次正常是有两个人工坐席A和B,16:00-24:00时段正常是有两个人工坐席C和D。但是,B为了争取业绩,额加班1个小时,与人工坐席C、D共同作业1个小时。这样,16:00-17:00时段实际有三个人工坐席B、C、D,17:00-24:00实际有两个人工坐席C、D。为了简便,该示例中以时间点tc0、tc1、t1、t2、t3、t4、t5、t6来指代时间及其对应的时间戳。
在步骤S210中,将作业参与者设为有序集中的成员,将作业参与者被选择来处理任务请求的时间作为成员的分数。
在8:00时,人工坐席A、B上线,先采集人工坐席A、B的身份标识,假设身份标识就是A、B,依次写入有序集,将A、B设置为有序集中的成员,身份标识A、B可以是到作业时间后自动写入有序集,且刚上线时,可以将上线操作发生的这个过程视为其被选择来处理任务请求的时间,即以当前时间初始化人工坐席A、B的分数。该示例中,将同一个班次的人工坐席上线时的时间戳都设为相同的时间戳,即将人工坐席A、B的分数都设为tc0。
在步骤S220中,实时接收任务请求。
例如,在图4中,任务分配装置或者电子设备在8:00~24:00之间接收到7个任务请求,分别是任务请求G1、G2、G3、G4、G5、G6、G7。
在步骤S230中,判断该任务请求对应的任务是否为新任务,如果是新任务,则转至步骤S240,如果不是新任务,则将该任务分配给原任务处理者。
例如,在图4中,时刻t1,第一次收到任务请求G1,判断结果是任务请求G1为新任务,则会转至步骤S240处理。时刻t3,第二收到任务请求G1,判断结果是任务请求G1不是新任务,则将该任务分配给原任务处理者,即将其分配给在时刻t1为其分配的任务处理者处理。这种情况可能是因为客户中途退出,导致任务临时中断,期间客户再次发起咨询,为了保证服务的连续性,提高客户体验,以及提高工作效率,任务分配装置或者电子设备将其第二次咨询不视为新任务,以便分给原任务处理者处理。
在步骤S240中,响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前。
在步骤S250中,响应于作业参与者被选择来处理任务请求的操作,基于当前时间更新所选择的作业参与者的分数。
由于步骤S240发生后会即时执行步骤S250,此处将两个步骤合在一起举例说明。该示例中,排序时可以被设置为时间戳对应的数值越小越靠前。身份标识被写入的顺序越早越靠前。时间戳可以被视为用于排序的第一分数。身份标识被写入的顺序可以被视为用于排序的第二分数。
在时刻t1,响应待处理的任务请求G1,此时人工坐席A、B的时间戳都为tc0,有序集中两者基于时间戳的排序相同,如前面提到的,这种情况下,可以再依据两者的写入顺序进行二次排序,由于人工坐席A比B先写入,则此时有序集中人工坐席的排序依次为人工坐席A、B,则选择人工坐席A作为任务请求G1对应的任务处理者。人工坐席A接收任务请求G1对应的任务参与作业时,响应被选为任务处理者的人工坐席A接收任务请求对应的任务参与作业的操作,基于当前时间更新人工坐席A的分数,即将人工坐席A的分数更新为t1。
在时刻t2,收到任务请求G2,此时人工坐席A的分数为t1,人工坐席B的分数为tc0,tc0<t1,有序集中人工坐席的排序依次为人工坐席B、A,则选择人工坐席B作为任务请求G2对应的任务处理者。人工坐席B接收任务请求G2对应的任务参与作业时,响应被选为任务处理者的人工坐席B接收任务请求对应的任务参与作业的操作,基于当前时间更新人工坐席B的分数,即将人工坐席B的分数更新为t2。
在时刻t3,收到任务请求G1,任务请求G1对应的任务被视为不是新任务,派发给原任务处理者A处理。在实际应用中,不视为新任务的任务再次派发给原任务处理者时,将人工坐席A的分数更新为t3。
在16:00时,人工坐席A下线,人工坐席C、D上线,人工坐席A被从有序集中移除,初始化人工坐席C、D,将人工坐席C、D的分数均初始化为tc1,此时有序集中含人工坐席B、C、D。
在时刻t4,收到任务请求G3和G4,假设任务请求G3先于任务请求G4处理,此时人工坐席B的分数为t2,人工坐席C、D的分数为tc1,t2<tc1=tc1,人工坐席C的身份标识先于人工坐席D的身份标识被写入有序集,则有序集中人工坐席的排序依次为人工坐席B、C、D,则选择人工坐席B作为任务请求G3对应的任务处理者,人工坐席C作为任务请求G3对应的任务处理者。然后,将人工坐席B、C的分数更新为t4。
在17:00时,人工坐席B下线,人工坐席B被从有序集中移除,此时有序集只含有人工坐席C、D。
在时刻t5,收到任务请求G5,此时人工坐席C的分数为t4,人工坐席D的分数为tc1,tc1<t4,则有序集中人工坐席的排序依次为人工坐席D、C,则选择人工坐席D作为任务请求G5对应的任务处理者。然后,将人工坐席D的分数更新为t5。
同理,在时刻t6,会选择人工坐席C作为任务请求G6对应的任务处理者。在时刻t7,会选择人工坐席D作为任务请求G7对应的任务处理者。
图5示意性示出了根据本发明一个实施例的任务分配装置的模块图。该任务分配装置可以包括:时间戳获取模块100、排序模块200、数据收发模块300、调度模块400、配置模块500和用户数据库600中的一个或者多个。
其中,时间戳获取模块100,其可以用于获取每个作业参与者被选择来处理任务请求时的时间戳。
排序模块200,其可以用于让作业参与者在有序集中按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前。排序模块200也可以用于基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序。如先前提到的,排序模块200也可以不是任务分配装置内的模块,排序模块200可以是第三方服务器或者第三方服务器内的、Redis数据库、SSDB数据库、Redis有序集或者SSDB有序集。
数据收发模块300,其可以用于接收任务请求。数据收发模块300也可以用于将任务请求对应的任务分派给作业参与者处理任务的终端。数据收发模块300可以用于对作业数据流中的作业数据格式做处理后将其承载的任务请求和/或任务请求对应的任务投递到调度模块400。
调度模块400,其可以用于从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前。调度模块400也可以用于判断该任务请求对应的任务是否为新任务,如果是新任务,则为该新任务分配任务处理者,如果不是新任务,则将该任务分配给原来的任务处理者。
配置模块500,其可以用于配置有序集,将作业参与者设为有序集中的成员,将作业参与者对应的时间戳设为有序集中成员对应的分数。配置模块500也可以用于将作业参与者加入有序集的时间设置为该作业参与者的初始分数。配置模块500,也可以用于对作业参与者的组成进行调整。比如,配置模块500可以对有序集的成员做增删改查操作。
用户数据库600,其可以用于存储用户数据。比如,用户数据可以包括作业参与者的身份信息、对应于每个作业参与者的身份标识和/或登录密码。
图6示意性示出了根据本发明一个实施例的任务分配装置向多个作业参与者分配多个任务请求的应用场景图。在不同的客户在不同的时段有咨询需求时,对应的任务请求G1、G2、G3、G4、G5、G6和G7可能会分时段地通过作业数据流传输给任务分配装置。任务分配装置可以响应于相应的任务请求,根据Redis服务器中有序集内的排序,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求。如前面提到的,这里的Redis服务器可以是任务处理装置或者电子设备自带的Redis服务器,也可以是第三方的Redis服务器。
下面参考图7,其示出了适于用来实现本发明实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备的计算机系统700仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统操作所需的各种程序和数据。CPU701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如上述实施例中的任务分配方法。
例如,所述的电子设备可以实现如图1中所示的步骤中的一个或者多个:步骤S110,获取待处理的任务请求;步骤S120,响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求。在该有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前;步骤S130,基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序。
又如,所述的电子设备可以实现如图3所示的步骤中的一个或者多个。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本发明实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本发明实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种任务分配方法,所述方法包括:
响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在所述有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前;
基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序。
2.根据权利要求1所述的任务分配方法,其特征在于,所述作业参与者的初始分数被设置为该作业参与者加入所述有序集的时间。
3.根据权利要求2所述的任务分配方法,其特征在于,所述基于当前时间更新所选择的作业参与者的分数包括将该作业参与者的分数设置为该作业参与者被选择来处理所述任务请求的当前时间。
4.根据权利要求1所述的任务分配方法,其特征在于,所述作业参与者的分数是基于作业参与者的空闲时间来设置的。
5.根据权利要求4所述的任务分配方法,其特征在于,所述基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序包括:
将该作业参与者的分数重置为使其在有序集中排在最后位置的值;
将用于检测该作业参与者的空闲时间的计时器清零;
响应于检测到该作业参与者完成对其任务的处理,启动所述计时器来记录该作业参与者的空闲时间;
响应于收到新的待处理的任务请求,对于有序集中每个作业参与者,基于其计时器中相应的空闲时间来重新设置其对应的分数,并按照新的分数对作业参与者重新排序。
6.根据权利要求1所述的任务分配方法,其特征在于,所述方法包括:响应于作业参与者的组成发生变化,刷新有序集中所有作业参与者的排序。
7.根据权利要求6所述的任务分配方法,其特征在于,在响应于待处理的任务请求分配任务之前,刷新有序集中所有作业参与者的排序。
8.一种任务分配装置,其特征在于,包括:
调度模块,用于响应于待处理的任务请求,从以有序集的形式管理的所有作业参与者中选择排序最靠前的作业参与者来处理该任务请求,在所述有序集中作业参与者按照其相应分数有序排列,越久未被分配任务的空闲作业参与者排序越靠前;
排序模块,用于基于当前时间更新所选择的作业参与者的分数并依据该更新后的分数调整该作业参与者在有序集中的次序。
9.一种计算机可读存储介质,其特征在于,其上包含有计算机程序,所述计算机程序可被处理器执行以执行权利要求1至7中任一项所述的任务分配方法。
10.一种电子设备,其特征在于,包括:
一个或多个处理器;以及
存储器,其中存储器用于存储一个或多个可执行指令;
所述一个或多个处理器被配置为经由执行所述一个或多个可执行指令以执行权利要求1至7中任一项所述的任务分配方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911179073.0A CN111045804B (zh) | 2019-11-26 | 2019-11-26 | 一种任务分配方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911179073.0A CN111045804B (zh) | 2019-11-26 | 2019-11-26 | 一种任务分配方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045804A true CN111045804A (zh) | 2020-04-21 |
CN111045804B CN111045804B (zh) | 2024-03-19 |
Family
ID=70233609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911179073.0A Active CN111045804B (zh) | 2019-11-26 | 2019-11-26 | 一种任务分配方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045804B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448737A (zh) * | 2021-07-26 | 2021-09-28 | 安徽清博大数据科技有限公司 | 一种在多任务系统使用的高速均衡分配方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198319A1 (en) * | 2001-10-08 | 2007-08-23 | David Sciuk | Automated system and method for managing a process for the shopping and selection of human entities |
WO2009057208A1 (ja) * | 2007-10-31 | 2009-05-07 | Fujitsu Limited | 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム |
JP2010282533A (ja) * | 2009-06-08 | 2010-12-16 | Mitsubishi Electric Corp | 計算機システム、計算機リソース制御方法および計算機リソース制御プログラム |
CN103092692A (zh) * | 2013-01-28 | 2013-05-08 | 中国航空结算有限责任公司 | 适用于软件批处理作业的作业管理器实现方法及作业管理器 |
CN104778080A (zh) * | 2014-01-14 | 2015-07-15 | 中兴通讯股份有限公司 | 基于协处理器的作业调度处理方法及装置 |
CN107430526A (zh) * | 2015-03-24 | 2017-12-01 | 瑞典爱立信有限公司 | 用于调度数据处理的方法和节点 |
CN109426557A (zh) * | 2017-08-23 | 2019-03-05 | 东芝存储器株式会社 | 基于信用的命令调度 |
CN110427253A (zh) * | 2019-07-04 | 2019-11-08 | 中国建设银行股份有限公司 | 机器人资源任务周期管控方法及装置 |
-
2019
- 2019-11-26 CN CN201911179073.0A patent/CN111045804B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070198319A1 (en) * | 2001-10-08 | 2007-08-23 | David Sciuk | Automated system and method for managing a process for the shopping and selection of human entities |
WO2009057208A1 (ja) * | 2007-10-31 | 2009-05-07 | Fujitsu Limited | 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム |
JP2010282533A (ja) * | 2009-06-08 | 2010-12-16 | Mitsubishi Electric Corp | 計算機システム、計算機リソース制御方法および計算機リソース制御プログラム |
CN103092692A (zh) * | 2013-01-28 | 2013-05-08 | 中国航空结算有限责任公司 | 适用于软件批处理作业的作业管理器实现方法及作业管理器 |
CN104778080A (zh) * | 2014-01-14 | 2015-07-15 | 中兴通讯股份有限公司 | 基于协处理器的作业调度处理方法及装置 |
CN107430526A (zh) * | 2015-03-24 | 2017-12-01 | 瑞典爱立信有限公司 | 用于调度数据处理的方法和节点 |
CN109426557A (zh) * | 2017-08-23 | 2019-03-05 | 东芝存储器株式会社 | 基于信用的命令调度 |
CN110427253A (zh) * | 2019-07-04 | 2019-11-08 | 中国建设银行股份有限公司 | 机器人资源任务周期管控方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113448737A (zh) * | 2021-07-26 | 2021-09-28 | 安徽清博大数据科技有限公司 | 一种在多任务系统使用的高速均衡分配方法 |
CN113448737B (zh) * | 2021-07-26 | 2024-03-22 | 北京清博智能科技有限公司 | 一种在多任务系统使用的高速均衡分配方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111045804B (zh) | 2024-03-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110290180B (zh) | 分布式任务调度方法、装置、计算机设备和存储介质 | |
CN106919445B (zh) | 一种在集群中并行调度容器的方法和装置 | |
CN112000473A (zh) | 深度学习模型的分布式训练方法以及装置 | |
Koole et al. | Resource allocation in grid computing | |
Boloor et al. | Dynamic request allocation and scheduling for context aware applications subject to a percentile response time SLA in a distributed cloud | |
CN111381950A (zh) | 一种面向边缘计算环境基于多副本的任务调度方法和系统 | |
US10686728B2 (en) | Systems and methods for allocating computing resources in distributed computing | |
CN104796422A (zh) | 一种在线客服均衡分配的方法及装置 | |
CN111694646A (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
JPWO2007072544A1 (ja) | 情報処理装置、計算機、リソース割り当て方法及びリソース割り当てプログラム | |
CN109815007A (zh) | 基于云监控的线程控制方法、装置、电子设备及存储介质 | |
CN110944219B (zh) | 资源分配方法、装置、服务器及存储介质 | |
CN111078404B (zh) | 一种计算资源确定方法、装置、电子设备及介质 | |
CN110599148B (zh) | 集群数据处理方法、装置、计算机集群及可读存储介质 | |
CN115543615A (zh) | 一种资源分配方法、装置、电子设备及存储介质 | |
CN110704465A (zh) | 一种处理业务工单表的方法、装置及存储介质 | |
CN112235373A (zh) | 基于应用ai的云桌面调度系统及其调度方法 | |
Ullah et al. | LSTPD: least slack time-based preemptive deadline constraint scheduler for Hadoop clusters | |
CN109783236B (zh) | 用于输出信息的方法和装置 | |
CN111045804B (zh) | 一种任务分配方法、装置、介质及电子设备 | |
CN110290228A (zh) | 一种互联网协议ip地址分配方法及装置 | |
Javanmardi et al. | An architecture for scheduling with the capability of minimum share to heterogeneous Hadoop systems | |
Teng et al. | Scheduling real-time workflow on MapReduce-based cloud | |
Yao et al. | Scheduling heterogeneous mapreduce jobs for efficiency improvement in enterprise clusters | |
US20200382463A1 (en) | Priority topic messaging |
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 |