CN104133724B - 并发任务调度方法及装置 - Google Patents
并发任务调度方法及装置 Download PDFInfo
- Publication number
- CN104133724B CN104133724B CN201410134173.2A CN201410134173A CN104133724B CN 104133724 B CN104133724 B CN 104133724B CN 201410134173 A CN201410134173 A CN 201410134173A CN 104133724 B CN104133724 B CN 104133724B
- Authority
- CN
- China
- Prior art keywords
- service
- processing threads
- task
- task object
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/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/505—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 load
-
- 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/5083—Techniques for rebalancing the load in a distributed system
-
- 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/5018—Thread allocation
Abstract
本发明提供了一种并发任务调度方法,包括:接收上传的业务请求,将所述业务请求封装成任务对象;获取处理线程,将所述任务对象分配给所述处理线程,由所述处理线程选取业务服务器,并将所述任务对象发送至所述选取的业务服务器进行处理;通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。此外,还提供了一种并发任务调度装置及系统。上述并发任务调度方法、装置及系统能够降低系统维护的开销。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种并发任务调度方法及装置。
背景技术
传统技术中的应用服务器在处理并发任务时,通常采用多进程的方式对多个业务请求进行并行处理,每个进程独立执行相应的处理任务,并将处理结果生成响应返回给相应的客户端。
然而,在高并发环境下,需要根据业务需求添加业务服务器,使用多进程的处理方式则在添加删除业务服务器时需要进行根据业务需求配置进程间通信的协议,使得维护的开销较大。
发明内容
基于此,有必要提供一种能够降低维护开销的并发任务调度方法。
一种并发任务调度方法,包括:
接收上传的业务请求,将所述业务请求封装成任务对象;
获取处理线程,将所述任务对象分配给所述处理线程,由所述处理线程选取业务服务器,并将所述任务对象发送至所述选取的业务服务器进行处理;
通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
此外,还有必要提供一种能够降低维护开销的并发任务调度装置。
一种并发任务调度装置,包括:
请求接收模块,用于接收上传的业务请求,将所述业务请求封装成任务对象;
任务分配模块,用于获取处理线程,将所述任务对象分配给所述处理线程,由所述处理线程选取业务服务器,并将所述任务对象发送至所述选取的业务服务器进行处理;
响应生成模块,用于通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
此外,还有必要提供一种能够降低维护开销的并发任务调度方法。
一种并发任务调度方法,包括:
入口节点接收客户端上传的业务请求,将所述业务请求封装成任务对象;获取处理线程,将所述任务对象分配给所述处理线程,由所述处理线程选取业务节点,并将所述任务对象发送至所述选取的业务节点;
所述业务节点通过对与其对应的数据节点进行读写操作生成与所述任务对象对应的处理结果,并返回给所述入口节点;
所述入口节点通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
此外,还有必要提供一种能够降低维护开销的并发任务调度系统。
一种并发任务调度系统,包括客户端、入口节点、业务节点和数据节点,其中:
所述入口节点用于接收客户端上传的业务请求,将所述业务请求封装成任务对象;获取处理线程,将所述任务对象分配给所述处理线程,由所述处理线程选取业务节点,并将所述任务对象发送至所述选取的业务节点;
所述业务节点用于通过对与其对应的数据节点进行读写操作生成与所述任务对象对应的处理结果,并返回给所述入口节点;
所述入口节点还用于通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
上述并发任务调度方法、装置及系统中,以线程为单位并发地处理业务请求,使得在进行线程调度时,同一进程下的多线程本身共享同一内存,可在进程内通信,即可直接使用操作系统提供的线程调度方法对处理业务请求的多线程进行调度。与传统技术相比,开发人员在添加或移除业务时,不需要编写或修改大量的用于维护的进程通信代码,从而降低了维护的开销。
附图说明
图1为传统技术中基于多进程的任务调度系统的结构示意图;
图2为传统技术中使用多进程的进行任务调度的原理示意图;
图3为一个实施例中并发任务调度方法的流程图;
图4为一个实施例中使用多进程的进行任务调度的原理示意图;
图5为一个实施例中并发任务调度系统的结构示意图;
图6为一个实施例中并发任务调度装置的结构示意图;
图7为另一个实施例中并发任务调度方法的流程图;
图8为一个实施例中运行web应用中执行业务逻辑的方法的服务器运行环境示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
在传统技术中,如图1所示,PN节点(Proxy Node)为提供业务服务入口的入口服务器,例如,web应用中的web服务器,移动互联网应用的应用服务器;C1和C2为客户端,客户端可以有多个。BN节点(Business Node)即业务节点,PN节点与多个BN节点连接(即图中的BN1、BN2、BN3和BN4),每个BN节点可根据预设的业务逻辑算法处理业务请求。客户端通过向PN节点发起业务请求来获得服务,BN节点通过处理PN节点转发或重定向的业务请求执行业务,PN节点通过向客户端返回由BN节点回复的响应来提供服务。
然而,如图2所示,在传统技术中,PN节点在转发业务请求时,采用的是多进程的方法,即接收到业务请求后,为其分配一个进程以及一个端口号,然后该进程通过该端口号与某个业务服务器建立socket连接,将业务请求通过该socket连接转发给业务服务器。通常情况下,进程还包括类别信息,每一类的多个进程对应处理该种业务的业务服务器(如图2中的A类业务对应多个业务服务器进行处理,PN节点有多个进程与A类业务服务器进行通信),在多进程的机制下,则根据业务请求的业务类型对多个进程进行调度(例如A类进程等待B类进程接收到的响应数据,需要进入阻塞状态)。对多个进程进行调度则需要在多进程之间进行通信。
而传统技术中,进程间通信的机制(IPC,Inter-Process Communication)通常需要开发人员根据业务需求设计,若业务类型较多,或者在添加或移除某种业务类型时,则相应的需要添加或修改相应的IPC代码。对于较大的应用来说,需要花费在维护上的开销较大。
而在本实施例中,未解决上述系统维护开销较大的问题,提出了一种并发任务调度方法,该方法可依赖于计算机程序,能够运行于基于冯洛伊曼体系的计算机系统上。该计算机系统可以是web服务器、移动互联网应用服务器、游戏入口服务器等。
在本实施例中,如图3所示,该方法包括:
步骤S102,接收上传的业务请求,将业务请求封装成任务对象。
业务请求即为前述的客户端向PN节点发起的期望获得数据服务的业务请求。
例如,在一个基于web的视频点播系统中,用户发起的业务请求即为通过浏览器发起的基于http协议的web访问请求,该web访问请求中包含了该用户的用户标识、点播视频的视频标识以及视频地址等参数信息。
再例如,在一个手机游戏系统中,用户发起的业务请求即为通过手机游戏客户端发起的基于该手机游戏的应用协议的游戏业务相关的业务请求,例如,用户在游戏中选择进入某个场景进行游戏时,即会通过手机游戏客户端向PN节点发起场景切换请求。
在本实施例中,可将业务请求中的参数信息提取出来,然后将该参数信息封装在任务对象(在某些程序语言中也可以是集合、数组或结构体)中。进一步的,可将封装的任务对象按照接收到业务请求的先后顺序缓存在预设的任务队列中。
例如,在基于web应用服务器的应用场景中,可存在请求队列和任务队列,请求队列可基于web容器(即web应用框架)本身,队列中存储httprequest对象。即可根据按照先进先出的顺序由请求队列中提取httprequest对象,并提取httprequest对象中的某些属性值,然后按顺序根据提取的属性值封装任务对象,任务对象封装完毕后,即可将其添加到任务队列的队尾(队列只可在尾部插入,首部取出)。
也就是说,底层的web容器在接收到业务请求后先将其封装成请求对象,并以接收到业务请求的先后顺序将其缓存在web应用框架的请求队列中。运行该方法的计算机程序可直接提取请求队列中的请求对象并将其封装成任务对象。
以队列的形式缓存任务对象,可保证先抵达的业务请求可以优先得到处理(但不能保证优先得到响应,因为对多个任务对象异步并发处理时,不能保证先处理的任务对象先处理完)。且可设置任务队列的长度上限,若任务队列中任务对象的数量达到该长度上限时,可对接收到的业务请求直接返回服务器忙的响应,也可根据请求队列中请求对象的数量提示排队信息,即当前正在等待处理的业务请求的数量。
步骤S104,获取处理线程,将任务对象分配给处理线程,由处理线程选取业务服务器,并将任务对象发送至选取的业务服务器进行处理。
在本实施例中,如图4所示,可设置多个处理线程,在处理线程启动之后即自动以先进先出的方式(即在任务队列的队首提取)从任务队列中提取任务对象。在其他实施例中,也可预设线程池,每封装一个任务对象则由线程池中获取一个处理线程,将该任务对象分配给处理线程处理。
业务服务器通常有多个,且如图5所示,运行该方法的入口节点10,与多个业务节点30连接,每个业务节点也与和业务类型相关的数据节点40连接,且可包含多个业务服务器。入口节点中可存储业务节点状态表,并通过定期与业务节点互发探测包活的业务节点的运行状态信息(例如带宽、CPU占用率和内存占用率等信息),并根据该运行状态信息维护该业务节点状态表。处理线程在选取业务服务器时,则可根据该业务节点状态表选择负载较低的业务节点,然后将任务对象发送给该业务节点。每个处理对象可与业务节点建立socket连接,具有独立的端口。
如图4所示,业务节点与数据服务器连接,数据服务器也可以有多个。例如,在一个应用场景中,某个大型应用系统需要用到多个数据库,且每个数据库的数据量较大,则可在每个数据服务器的上独立运行这些数据库。业务节点在对任务对象进行处理时,可使用数据服务器提供的数据接口对处理任务对象需要的和生成的数据进行读写操作。处理完毕后,则可通过前述的socket连接将处理结果发送至入口节点。入口节点根据端口即可将接收到处理结果的转到相应的处理线程中。
需要说明的是,图5中的入口节点可以是独立的web服务器、移动互联网应用服务器或游戏入口服务器,也可以包含在现有的web服务器、移动互联网应用服务器或游戏入口服务器等入口服务器的基础上添加的任务分发服务器,且入口服务器可对应多个任务分发服务器。若单个任务分发服务器由于内存大小的限制而使得任务队列长度较小时,则可设置多个任务分发服务器,从而增大任务队列的长度上限,并在任务分发服务器的后端增加相应的业务服务器,从而减少排队的情况。
步骤S106,通过处理线程接收业务服务器返回的处理结果,根据处理结果生成响应并返回。
例如,在一个应用场景中,若用户希望查看其在网站上填写的个人资料,则可通过点击查看按钮发起httprequest请求。入口节点接收到该业务请求后将其封装成任务对象,将业务请求中包含的查询参数添加到任务对象的属性中。处理线程可读取该属性,然后通过socket连接以预设的协议格式发送给业务服务器。业务服务器可根据参数中的该用户的用户标识在用户资料数据库中查找相应的昵称、年龄、学历、生日等个人信息,然后通过socket连接返给入口节点,入口节点则可生成包含上述昵称、年龄、学历、生日等个人信息的httpresponse对象,然后将其返回给用户。用户即可在浏览器上查看到其个人信息页面。
需要说明的是,在本实施例中,入口节点的处理线程将任务对象发送给业务服务器的过程中,并不需要将任务对象本身发送给业务服务器,而可仅提取任务对象中的部分属性值,然后基于自定义的通信协议将其发送给业务服务器。通信协议中可包括任务标识及业务服务器根据任务标识进行相应业务处理的协议内容。也就是说,处理线程按照预先定义的通信协议向业务服务器发送相应的任务标识后,业务服务器即可根据通信协议执行与任务标识对应的具体的业务操作。
例如,在一个应用场景中,采用文本格式的通信协议(字符串),请求协议包采用cgi的参数格式,每个字段用“&”分割,以“\n”作为结束符,字段的前后顺序不固定,字段名和值用“=”分割。
例如,处理线程发送给业务服务器的消息可以是如下格式:
cmd=001001&uin=88883960&area=0\n
其中,cmd为任务标识属性,001001即为响应的任务标识。uin为用户标识属性,即88883960;area为=区域标识,即0。任务标识可根据任务对象对应的业务请求的链接地址得到。例如,开发人员在开发时,每添加一个业务则相应需要为该业务提供一个作为入口的链接地址,则可在预设的链接地址与任务标识映射表中添加相应的映射,入口节点即可根据业务请求中的链接地址查询该映射表得到相应的任务标识。
由于&号作为各个字段的分隔符,不能作为内容使用,字符串内容中不允许有多余的“&”和“\n”符号出现。业务服务器将处理结果返回给入口节点时也可遵照上述通信协议,例如:
“cmd=001001&result=0&info=…\n”
需要说明的是:
3.如参数值中可能含有特殊字符(协议的分割符,比如“&=%”等),则用%XX(XX为该字符的16进制值)表示字符串,和浏览器下调用cgi输入的参数类似。例如:sQQPasswd=&%改为用sQQPasswd=%26%25表示。
字符转换规则如下:
1.可将协议中的字符转换成%+字符的ASCII码的16进制数,且字母必须大写,例如:“\n”的正确转换值为%0D,其他的都是错误的,比如:%13,%0d。对于中文字符占大多数的系统可统一采用base64编码,对所有字符转换成16进制的两个字母的形式。以便节省编码后的空间。
2.仅将与协议有关的字符进行转换,包括:'&','=','|',空格、'\n','\r',':'以及所有不可见字符
3.除2规定的字符外,所有字符均不需要转换。
4.通信协议中的协议关键字。
5.协议制定的时候参数是列表的形式可使用参数名称为“…list”,取值的协议格式为‘|’作为一级分隔符(一般也用于不用用户之间数据的分割),空格或者逗号作为二级分隔符的列表(如果一个字段不存在两级分割的问题建议尽量用空格做分割,这样将来批量查询的时候要一个字段传递多个用户的信息可以用|做分割),~_等可以作为三级分隔符(设计时尽量少用到三层分割以上的情况)。比如:uin1time1|uin2time2|…|。
在一个实施例中,将任务对象分配给处理线程的步骤还包括:
将任务对象拆分成子任务对象,并为子任务对象分配对应的处理线程。
例如,在一个应用场景中,用户请求访问的页面为游戏平台中用户在多个游戏中的得分记录情况,且页面中的展示栏列表中需要展示用户在5个不同的游戏中的得分纪录。则该业务请求对应的任务对象可被拆分成5个子任务对象,且每个子任务对象中均包含有该用户的用户标识。然后分配给5个处理线程,该5个处理线程可分别将子任务对象中的用户标识发送给相应的业务服务器,业务服务器则可访问5种游戏各自对应的数据服务器,在5种游戏对应的数据库中并行地查询得分纪录,然后各自返回给入口节点。入口节点则可将返回的该用户在5种游戏中各自的得分纪录整合后生成响应,然后返回给用户,用户则可在浏览器中看到。任务对象经过拆分后,使得任务对象中不相关联的多个处理过程能够并发的进行处理,如上例中,在5个数据服务器中同时执行查询任务和按顺序在5个数据服务器上依次执行查询任务相比,生成响应的速度能够快很多,且使得任务队列中的任务对象能够快速地被消化,不会造成任务拥塞。
在本实施例中,可根据任务对象的对应的业务请求的链接地址对任务对象进行拆分。如前例中,若用户查看在多个游戏中的得分记录情况时点击的链接为:http://a.b.c/info?uid=x&gid=all,其中http://a.b.c为入口节点的host地址,/info为资源路径,uid为用户标识,即x,gid为游戏类型标识,即all(表示所有的5种游戏),则可预先定义与/info对应的拆分逻辑:若gid为g1,则可生成查询任务标识为g1的子任务对象,例如:
cmd=0000301&gid=g1&uid=x…
并将该子任务对象发送至处理业务服务器,由业务服务器根据该参数在g1类型游戏数据库中查找相关数据;若gid为g1g2,则将该任务对象拆分成两个子任务对象,且子任务对象的查询任务标识分别为g1和g2,例如:
cmd=0000301&gid=g1&uid=x…
cmd=0000301&gid=g2&uid=x…
分别发送至业务服务器后,由业务服务器分别根据查询任务标识访问g1和g2类型游戏数据库中查找相关数据;若gid为all,则将该任务对象拆分成5个子任务对象,且子任务对象的查询任务标识分别为g1、g2、g3、g4和g5,例如:
cmd=0000301&gid=g1&uid=x…
cmd=0000301&gid=g2&uid=x…
cmd=0000301&gid=g3&uid=x…
cmd=0000301&gid=g4&uid=x…
cmd=0000301&gid=g5&uid=x…
分别发送至业务服务器后,由业务服务器分别根据查询任务标识访问g1、g2、g3、g4和g5类型游戏数据库中查找相关数据。
上述拆分逻辑预先定义完成后,则在处理上述http://a.b.c/info?uid=x&gid=all对应的任务对象时,即可将该任务对象拆分成查询任务标识分别为g1、g2、g3、g4和g5的子任务对象。
也就是说,可预先对链接地址定义相应的拆分逻辑,然后在处理该链接地址对应的任务对象时,即可调用相应的拆分逻辑进行拆分。
进一步的,拆分后的多个子任务对象可分配给同一个处理线程。例如,若某个任务对象被拆分成A、B、C、D4个子任务对象,其中A、B和C是可以并发执行的子任务,而D的执行需要等待A的处理结果。则可将子任务对象A和D先以队列的形式存储,然后将该队列分配给一个处理线程,该处理线程按顺序同步执行队列中的子任务:先由队列中提取出子任务对象A,得到处理结果后,再根据该处理结果后执行子任务B。而与此同时,子任务B和C分别分配给了另外两个处理线程,可并行地得到处理。
也就是说,在定义拆分逻辑时,也可定义子任务同步或异步的执行方式,以及在同步执行时,子任务的执行顺序,从而方便讲复杂的任务对象分解为多个并行处理的子任务对象。
在一个实施例中,为子任务对象分配对应的处理线程的步骤还包括:获取子任务对象的业务类型,为子任务对象分配与其业务类型对应的处理线程。
在大型系统中,通常包含多种业务,每种业务则与独立的数据服务器对应。如前例中,g1至g5的游戏的数据服务器为各自独立的游戏数据库,则可预先为g1和g5分别设置一定数量的处理线程,则在分配业务类型为g1(在生成子任务对象时,可根据链接地址或链接地址中的参数信息得到该子任务对象的业务类型)的子任务对象时,即可将其分配给与g1类型对应的处理线程;在分配业务类型为g2的子任务对象时,即可将其分配给与g2类型对应的处理线程。
由于处理线程通信较进程通信较简单,因此同一类型的处理线程在处理具有相同的业务类型的子任务对象时,可方便地共享数据,例如统计数据和日志数据等,从而方便根据具体的业务对处理线程进行管理。
在另一个实施例中,由处理线程选取业务服务器的步骤包括:由处理线程获取分配的子任务对象的业务类型,选取与业务类型对应的业务服务器。
也就是说,同样可预先根据业务类型的不同将业务服务器分类,如前例中,g1至g5的游戏的数据服务器分别对应的业务服务器。但子任务对象可分配给任意处理线程,由处理线程根据业务类型来选取响应的业务服务器进行处理。在该实施例中,选取业务服务器的逻辑在处理线程中,从而降低了系统中各模块的耦合度,提高了扩展性。
在一个实施例中,如图6所示,一种并发任务调度装置,包括请求接收模块102、任务分配模块104和响应生成模块106,其中:
一种并发任务调度装置,包括:
请求接收模块102,用于接收上传的业务请求,将业务请求封装成任务对象。
任务分配模块104,用于获取处理线程,将任务对象分配给所述处理线程,由处理线程选取业务服务器,并将任务对象发送至选取的业务服务器进行处理。
响应生成模块106,用于通过处理线程接收业务服务器返回的处理结果,根据处理结果生成响应并返回。
在本实施例中,请求接收模块102还用于将封装的任务对象按照接收到业务请求的先后顺序缓存在预设的任务队列中。任务分配模块104还用于以先进先出的方式由任务队列中提取任务对象。
在本实施例中,任务分配模块104还用于将任务对象拆分成子任务对象,并为子任务对象分配对应的处理线程。
在一个实施例中,任务分配模块104还用于获取子任务对象的业务类型,为子任务对象分配与其业务类型对应的处理线程。
在一个实施例中,任务分配模块104还用于由处理线程获取分配的子任务对象的业务类型,选取与业务类型对应的业务服务器。
在一个实施例中,如图7所示,一种并发任务调度方法,包括:
步骤S202,入口节点接收客户端上传的业务请求,将业务请求封装成任务对象;获取处理线程,将任务对象分配给所述处理线程,由处理线程选取业务节点,并将任务对象发送至选取的业务节点。
步骤S204,业务节点通过对与其对应的数据节点进行读写操作生成与任务对象对应的处理结果,并返回给入口节点。
步骤S206,入口节点通过处理线程接收业务服务器返回的处理结果,根据处理结果生成响应并返回。
在一个实施例中,如图5所示,一种并发任务调度系统,包括入口节点10、客户端20、业务节点30和数据节点40,其中:
入口节点10用于接收客户端20上传的业务请求,将业务请求封装成任务对象;获取处理线程,将任务对象分配给所述处理线程,由处理线程选取业务节点,并将任务对象发送至选取的业务节点。
业务节点30用于通过对与其对应的数据节点40进行读写操作生成与任务对象对应的处理结果,并返回给入口节点。
入口节点10还用于通过处理线程接收业务服务器返回的处理结果,根据处理结果生成响应并返回。
上述并发任务调度方法、装置及系统中,以线程为单位并发地处理业务请求,使得在进行线程调度时,同一进程下的多线程本身共享同一内存,可在进程内通信,即可直接使用操作系统提供的线程调度方法对处理业务请求的多线程进行调度。与传统技术相比,开发人员在添加或移除业务时,不需要编写或修改大量的用于维护的进程通信代码,从而降低了维护的开销。
在一个实施例中,如图8所示,提供了一种可运行前述并发任务调度方法的服务器结构示意图,该服务器结构可应用于图5中的入口节点10之上。该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(如前述的请求接收模块102、任务分配模块104和响应生成模块106),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述图3所示实施例中所述的由服务器所执行的步骤可以基于该图8所示的服务器结构。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种并发任务调度方法,包括:
接收上传的业务请求,将所述业务请求封装成任务对象;
将所述封装的任务对象按照接收到业务请求的先后顺序缓存在预设的任务队列中;
获取处理线程,以先进先出的方式由所述任务队列中提取任务对象,将所述任务对象分配给所述处理线程,由所述处理线程选取业务服务器,并将所述任务对象发送至所述选取的业务服务器进行处理;
通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
2.根据权利要求1所述的并发任务调度方法,其特征在于,所述将所述任务对象分配给所述处理线程的步骤还包括:
将所述任务对象拆分成子任务对象,并为所述子任务对象分配对应的处理线程。
3.根据权利要求2所述的并发任务调度方法,其特征在于,所述为所述子任务对象分配对应的处理线程的步骤包括:
获取所述子任务对象的业务类型,为所述子任务对象分配与其业务类型对应的处理线程。
4.根据权利要求2所述的并发任务调度方法,其特征在于,所述由处理线程选取业务服务器的步骤包括:
由处理线程获取分配的子任务对象的业务类型,选取与所述业务类型对应的业务服务器。
5.一种并发任务调度装置,其特征在于,包括:
请求接收模块,用于接收上传的业务请求,将所述业务请求封装成任务对象;
所述请求接收模块还用于将所述封装的任务对象按照接收到业务请求的先后顺序缓存在预设的任务队列中;
任务分配模块,用于获取处理线程,以先进先出的方式由所述任务队列中提取任务对象,将所述任务对象分配给所述处理线程,由所述处理线程选取业务服务器,并将所述任务对象发送至所述选取的业务服务器进行处理;
响应生成模块,用于通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
6.根据权利要求5所述的并发任务调度装置,其特征在于,所述任务分配模块还用于将所述任务对象拆分成子任务对象,并为所述子任务对象分配对应的处理线程。
7.根据权利要求6所述的并发任务调度装置,其特征在于,所述任务分配模块还用于获取所述子任务对象的业务类型,为所述子任务对象分配与其业务类型对应的处理线程。
8.根据权利要求6所述的并发任务调度装置,其特征在于,所述任务分配模块还用于由处理线程获取分配的子任务对象的业务类型,选取与所述业务类型对应的业务服务器。
9.一种并发任务调度方法,包括:
入口节点接收客户端上传的业务请求,将所述业务请求封装成任务对象;将所述封装的任务对象按照接收到业务请求的先后顺序缓存在预设的任务队列中;获取处理线程,以先进先出的方式由所述任务队列中提取任务对象,将所述任务对象分配给所述处理线程,由所述处理线程选取业务节点,并将所述任务对象发送至所述选取的业务节点;
所述业务节点通过对与其对应的数据节点进行读写操作生成与所述任务对象对应的处理结果,并返回给所述入口节点;
所述入口节点通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
10.一种并发任务调度系统,其特征在于,包括客户端、入口节点、业务节点和数据节点,其中:
所述入口节点用于接收客户端上传的业务请求,将所述业务请求封装成任务对象;将所述封装的任务对象按照接收到业务请求的先后顺序缓存在预设的任务队列中;获取处理线程,以先进先出的方式由所述任务队列中提取任务对象,将所述任务对象分配给所述处理线程,由所述处理线程选取业务节点,并将所述任务对象发送至所述选取的业务节点;
所述业务节点用于通过对与其对应的数据节点进行读写操作生成与所述任务对象对应的处理结果,并返回给所述入口节点;
所述入口节点还用于通过所述处理线程接收业务服务器返回的处理结果,根据所述处理结果生成响应并返回。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410134173.2A CN104133724B (zh) | 2014-04-03 | 2014-04-03 | 并发任务调度方法及装置 |
PCT/CN2015/075594 WO2015149693A1 (en) | 2014-04-03 | 2015-03-31 | Method and apparatus for scheduling concurrent task |
CA2935505A CA2935505C (en) | 2014-04-03 | 2015-03-31 | Method and apparatus for scheduling concurrent task |
US15/204,424 US10067789B2 (en) | 2014-04-03 | 2016-07-07 | Method and apparatus for scheduling concurrent task among service servers by using processing thread |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410134173.2A CN104133724B (zh) | 2014-04-03 | 2014-04-03 | 并发任务调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104133724A CN104133724A (zh) | 2014-11-05 |
CN104133724B true CN104133724B (zh) | 2015-08-19 |
Family
ID=51806409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410134173.2A Active CN104133724B (zh) | 2014-04-03 | 2014-04-03 | 并发任务调度方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10067789B2 (zh) |
CN (1) | CN104133724B (zh) |
CA (1) | CA2935505C (zh) |
WO (1) | WO2015149693A1 (zh) |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104133724B (zh) | 2014-04-03 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 并发任务调度方法及装置 |
US10162683B2 (en) * | 2014-06-05 | 2018-12-25 | International Business Machines Corporation | Weighted stealing of resources |
CN104793992B (zh) * | 2015-04-21 | 2018-05-01 | 浙江大学 | 一种基于任务分解的并行任务处理方法 |
CN106161572B (zh) * | 2015-04-27 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 一种服务的调用方法和服务器 |
CN106325980A (zh) * | 2015-06-30 | 2017-01-11 | 中国石油化工股份有限公司 | 一种多线程并发系统 |
CN105068912B (zh) * | 2015-07-29 | 2020-05-01 | 北京京东尚科信息技术有限公司 | 用于执行网页任务的方法和装置 |
CN104994177B (zh) * | 2015-08-06 | 2019-01-25 | 上海爱数信息技术股份有限公司 | 网盘系统的同步方法、终端设备和网盘系统 |
CN105071976B (zh) * | 2015-09-08 | 2019-05-03 | 安一恒通(北京)科技有限公司 | 数据传输方法和装置 |
CN106598706B (zh) * | 2015-10-15 | 2022-11-08 | 五八同城信息技术有限公司 | 一种提高服务器的稳定性的方法、装置及服务器 |
CN106681902B (zh) * | 2015-11-10 | 2019-10-25 | 北京国双科技有限公司 | 网页数据的测试方法及装置 |
US10366359B2 (en) * | 2015-11-18 | 2019-07-30 | Microsoft Technology Licensing, Llc | Automatic extraction and completion of tasks associated with communications |
CN106886464A (zh) * | 2015-12-16 | 2017-06-23 | 天脉聚源(北京)科技有限公司 | 一种提高服务器处理并发业务能力的方法和系统 |
CN106980533B (zh) * | 2016-01-18 | 2020-04-28 | 杭州海康威视数字技术股份有限公司 | 基于异构处理器的任务调度方法、装置及电子设备 |
CN105786603B (zh) * | 2016-02-29 | 2022-03-11 | 青岛海尔智能家电科技有限公司 | 一种基于分布式的高并发业务处理系统及方法 |
CN105959711A (zh) * | 2016-04-21 | 2016-09-21 | 乐视控股(北京)有限公司 | 一种直播流媒体的上传方法及装置 |
CN106095546A (zh) * | 2016-06-01 | 2016-11-09 | 深圳市永兴元科技有限公司 | 云计算平台的任务管理方法及装置 |
US10445141B2 (en) * | 2016-08-18 | 2019-10-15 | Honeywell International Inc. | System and method supporting single software code base using actor/director model separation |
CN108230052A (zh) * | 2016-12-22 | 2018-06-29 | 航天信息股份有限公司 | 一种发票开具及上传方法和系统 |
CN108337285B (zh) * | 2017-01-20 | 2021-01-26 | 北京京东尚科信息技术有限公司 | 一种通信系统及通信方法 |
CN108509257B (zh) * | 2017-02-28 | 2022-07-22 | 苏宁易购集团股份有限公司 | 一种基于多线程的消息处理方法及装置 |
CN108572863B (zh) * | 2017-03-13 | 2022-07-12 | 国家新闻出版广电总局广播电视卫星直播管理中心 | 分布式任务调度系统及方法 |
CN106953857B (zh) * | 2017-03-16 | 2020-03-10 | 郑州云海信息技术有限公司 | 一种基于cs架构的服务器端多线程管理方法 |
CN107239334B (zh) * | 2017-05-31 | 2019-03-12 | 清华大学无锡应用技术研究院 | 处理不规则应用的方法及装置 |
CN107315629A (zh) * | 2017-06-14 | 2017-11-03 | 北京小米移动软件有限公司 | 任务处理方法、装置及存储介质 |
CN108429780B (zh) * | 2017-06-25 | 2021-05-07 | 平安科技(深圳)有限公司 | 关联系统间的数据调用系统及方法 |
CN107479973A (zh) * | 2017-08-08 | 2017-12-15 | 西安万像电子科技有限公司 | 数据传输方法、装置、系统 |
CN107450975A (zh) * | 2017-08-16 | 2017-12-08 | 中国银行股份有限公司 | 一种基于分层的任务执行方法及装置 |
CN107493199A (zh) * | 2017-08-31 | 2017-12-19 | 郑州云海信息技术有限公司 | 一种分布式集群管理方法及系统 |
US10911812B2 (en) * | 2017-09-18 | 2021-02-02 | S2 Security Corporation | System and method for delivery of near-term real-time recorded video |
CN107784448A (zh) * | 2017-11-07 | 2018-03-09 | 中国银行股份有限公司 | 一种瀑布模型下的任务管理方法及系统 |
US10419265B2 (en) * | 2017-11-29 | 2019-09-17 | Bank Of America Corporation | Request processing system using a combining engine |
CN108228355A (zh) * | 2018-01-02 | 2018-06-29 | 武汉斗鱼网络科技有限公司 | 任务处理方法及装置、任务调度方法及装置 |
CN108280167A (zh) * | 2018-01-19 | 2018-07-13 | 山东钢铁集团日照有限公司 | 一种热轧产品生产历史多功能查询软件及查询方法 |
CN108566291B (zh) * | 2018-02-13 | 2020-04-28 | 北京三快在线科技有限公司 | 一种事件处理的方法、服务器及系统 |
CN108681481B (zh) * | 2018-03-13 | 2021-10-15 | 创新先进技术有限公司 | 业务请求的处理方法及装置 |
CN110569252B (zh) * | 2018-05-16 | 2023-04-07 | 杭州海康威视数字技术股份有限公司 | 一种数据处理系统及方法 |
CN110532067A (zh) * | 2018-05-25 | 2019-12-03 | 杭州海康威视数字技术股份有限公司 | 事件处理方法、装置、设备及存储介质 |
KR102115758B1 (ko) * | 2018-06-15 | 2020-05-27 | 주식회사 티맥스 소프트 | 데이터 흐름 기반 서비스를 처리하기 위한 방법 및 컴퓨터 판독가능 매체에 저장된 컴퓨터 프로그램 |
CN108920258A (zh) * | 2018-06-26 | 2018-11-30 | 北京中电普华信息技术有限公司 | 一种事务处理方法及应用服务中间件 |
CN109271158B (zh) * | 2018-07-25 | 2022-01-11 | 深圳点猫科技有限公司 | 一种基于图形化编程平台实现同步云变量的方法及其系统 |
CN109460290A (zh) * | 2018-09-30 | 2019-03-12 | 北京工业职业技术学院 | 一种过程控制方法 |
CN109603157B (zh) * | 2018-12-19 | 2022-04-12 | 北京像素软件科技股份有限公司 | 任务管理方法及装置 |
CN109840144B (zh) * | 2018-12-28 | 2023-09-19 | 航天信息股份有限公司 | 一种针对跨机构批量服务请求的信息服务调度方法及系统 |
CN111309458A (zh) * | 2019-07-12 | 2020-06-19 | 北京关键科技股份有限公司 | 一种多节点任务异步协同处理方法 |
CN110392109B (zh) * | 2019-07-23 | 2021-09-07 | 浪潮软件股份有限公司 | 基于cmsp流程编排的任务调度方法及系统 |
US20210136059A1 (en) * | 2019-11-05 | 2021-05-06 | Salesforce.Com, Inc. | Monitoring resource utilization of an online system based on browser attributes collected for a session |
CN113626176A (zh) * | 2020-05-08 | 2021-11-09 | 北京沃东天骏信息技术有限公司 | 一种业务请求处理方法及装置 |
CN112052081B (zh) * | 2020-08-13 | 2022-06-03 | 烽火通信科技股份有限公司 | 一种任务调度方法、装置及电子设备 |
CN112073513B (zh) * | 2020-09-08 | 2023-07-04 | 国家市场监督管理总局信息中心 | 一种计量强检业务的协同处理方法、装置及系统 |
CN112131007B (zh) * | 2020-09-28 | 2023-02-21 | 山东浪潮科学研究院有限公司 | 基于ai平台的gpu资源调度方法、装置及介质 |
CN112181662B (zh) * | 2020-10-13 | 2023-05-02 | 深圳壹账通智能科技有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN113157426B (zh) * | 2020-10-26 | 2024-04-02 | 微医云(杭州)控股有限公司 | 一种任务调度方法、系统、设备及存储介质 |
CN112657180A (zh) * | 2020-12-21 | 2021-04-16 | 北京像素软件科技股份有限公司 | 游戏运行方法和装置、电子设备及存储介质 |
CN114697705B (zh) * | 2020-12-29 | 2024-03-22 | 深圳云天励飞技术股份有限公司 | 视频流对象处理方法、装置、视频流处理系统、电子设备 |
CN112818338B (zh) * | 2021-01-22 | 2022-03-11 | 支付宝(杭州)信息技术有限公司 | 一种程序运行方法及系统 |
CN113806035A (zh) * | 2021-03-09 | 2021-12-17 | 京东科技控股股份有限公司 | 分布式调度方法及业务服务器 |
CN113515358B (zh) * | 2021-04-30 | 2024-04-12 | 北京奇艺世纪科技有限公司 | 任务调度方法、装置、电子设备及存储介质 |
CN113626173B (zh) * | 2021-08-31 | 2023-12-12 | 阿里巴巴(中国)有限公司 | 调度方法、装置及存储介质 |
CN114285894B (zh) * | 2021-12-28 | 2024-01-16 | 浙江吉利控股集团有限公司 | 出行平台任务处理方法、装置、设备及介质 |
CN114610294B (zh) * | 2022-05-09 | 2022-08-09 | 湖南星河云程信息科技有限公司 | 仿真实验效能指标并发计算控制方法、装置和计算机设备 |
CN115292025A (zh) * | 2022-09-30 | 2022-11-04 | 神州数码融信云技术服务有限公司 | 任务调度方法及装置、计算机设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741850A (zh) * | 2009-12-25 | 2010-06-16 | 北京邮电大学 | 面向混合网络服务的多任务并发执行系统及方法 |
CN103516536A (zh) * | 2012-06-26 | 2014-01-15 | 重庆新媒农信科技有限公司 | 基于线程数量限制的服务器业务请求并行处理方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8484348B2 (en) * | 2004-03-05 | 2013-07-09 | Rockstar Consortium Us Lp | Method and apparatus for facilitating fulfillment of web-service requests on a communication network |
US20070263650A1 (en) * | 2006-05-09 | 2007-11-15 | Srivatsa Sivan Subramania | Method for prioritizing web service requests |
CN104133724B (zh) * | 2014-04-03 | 2015-08-19 | 腾讯科技(深圳)有限公司 | 并发任务调度方法及装置 |
-
2014
- 2014-04-03 CN CN201410134173.2A patent/CN104133724B/zh active Active
-
2015
- 2015-03-31 CA CA2935505A patent/CA2935505C/en active Active
- 2015-03-31 WO PCT/CN2015/075594 patent/WO2015149693A1/en active Application Filing
-
2016
- 2016-07-07 US US15/204,424 patent/US10067789B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101741850A (zh) * | 2009-12-25 | 2010-06-16 | 北京邮电大学 | 面向混合网络服务的多任务并发执行系统及方法 |
CN103516536A (zh) * | 2012-06-26 | 2014-01-15 | 重庆新媒农信科技有限公司 | 基于线程数量限制的服务器业务请求并行处理方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US10067789B2 (en) | 2018-09-04 |
CN104133724A (zh) | 2014-11-05 |
WO2015149693A1 (en) | 2015-10-08 |
US20160321104A1 (en) | 2016-11-03 |
CA2935505C (en) | 2019-09-24 |
CA2935505A1 (en) | 2015-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104133724B (zh) | 并发任务调度方法及装置 | |
CN110086636A (zh) | 一种基于mqtt的消息分发方法、服务器及存储介质 | |
CN106453536A (zh) | 一种网络请求处理方法、服务器和系统 | |
CN103581111B (zh) | 一种通信方法及系统 | |
US8713117B2 (en) | Systems and methods for performing live chat functionality via a mobile device | |
KR20200057806A (ko) | 패킷 기반 데이터 메시지 전송의 시퀀스 의존 동작 처리 | |
US20190140982A1 (en) | Communication Methods and Systems, Electronic Devices, and Computer Clusters | |
CN103502943A (zh) | 一种基于消息队列的分布式任务处理的方法、装置及系统 | |
US11381683B2 (en) | System, device, and method of performing data analytics for advising a sales representative during a voice call | |
CN103036910A (zh) | 一种用户Web访问行为控制方法及装置 | |
US9571443B2 (en) | Mobile device message enabled on-line community bulletin board | |
CN105138649B (zh) | 数据的搜索方法、装置及终端 | |
CN113014608B (zh) | 一种流量分发控制方法、装置、电子设备及存储介质 | |
CN101895531A (zh) | 一种客户端设备、多媒体数据卸载系统及卸载方法 | |
CN111371848A (zh) | 一种请求处理方法、装置、设备及存储介质 | |
CN102045274B (zh) | 基于即时通信实现信息交互的方法和通信系统 | |
CN106708854A (zh) | 数据导出方法和装置 | |
US10033737B2 (en) | System and method for cross-cloud identity matching | |
CN103299298A (zh) | 处理业务的方法和系统 | |
JP2002157202A (ja) | 情報処理装置、メッセージ通信方法、記録媒体およびコンピュータ・プログラム | |
CN107395765B (zh) | 一种分布式文件系统、网络通信方法、平台及其创建方法 | |
CN101673281A (zh) | 一种旅行计划的制作方法 | |
CN114328587A (zh) | 一种ndc报文分布式解析系统架构集成方法及装置 | |
CN114490000A (zh) | 任务处理方法、装置、设备及存储介质 | |
CN105338094A (zh) | 一种数据处理方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |