CN108647104A - 请求处理方法、服务器及计算机可读存储介质 - Google Patents
请求处理方法、服务器及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108647104A CN108647104A CN201810460711.5A CN201810460711A CN108647104A CN 108647104 A CN108647104 A CN 108647104A CN 201810460711 A CN201810460711 A CN 201810460711A CN 108647104 A CN108647104 A CN 108647104A
- Authority
- CN
- China
- Prior art keywords
- thread
- request
- queue
- connection
- read
- 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/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
- 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/547—Remote procedure calls [RPC]; Web services
-
- 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/541—Client-server
-
- 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)
- Multi Processors (AREA)
Abstract
本发明公开了一种请求处理方法、服务器及计算机可读存储介质,所述方法包括:通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,并通过创建的多个发送线程并行的将处理后的消息发送给所述客户端;其中,监听到的连接请求存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),处理后得到的消息存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。本发明所述方案,线程间无需做不必要的等待,无需队列加锁,从而提高了服务器的响应时间和吞吐能力。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种请求处理方法、服务器及计算机可读存储介质。
背景技术
服务器Server的性能决定着服务的质量,主要体现在服务的延时和吞吐,如何利用有限的计算机硬件资源攫取更高的服务性能成为Server设计者追求的目标。一般的***都提供了完整的一套网络编程接口和并发编程机制,供开发者使用,如何合理有效地使用这些接口和机制,构建一套完整通用的高效的Server模型,对Server开发者有积极的指导意义,对Server的使用者有更快的响应,更高的性能。
Thrift(Facebook的核心技术框架之一)的TNonblockingServer是Thrift所有Server中可用性和伸缩性最好的。TNonblockingServer的设计全部基于事件回调机制,包括连接监听,创建客户端连接,处理客户端请求等,所有调用都是非阻塞的,但是它并不是不需要等待,在处理线程处理某个连接上的某一个请求时,此连接不再读取下一个调用请求,直到处理线程完成本次处理,并将结果发送给客户端为止,也就是说一个连接在接收请求、处理请求、发送响应这三步中是同步的,虽然处理请求是在一个线程池里完成的,但是接收和发送线程还需要等待。
可见,现有的Server模型存在的连接需要等待,进而影响响应速度的问题。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种解决上述问题的请求处理方法、服务器及计算机可读存储介质。
依据本发明实施例的一个方面,提供一种请求处理方法,应用于服务器侧,包括:
通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,并通过创建的多个发送线程并行的将处理后的消息发送给所述客户端;
其中,监听到的连接请求存入供所述多个读请求线程进行信息读取的连接队列;存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),mod为取余;
处理后得到的消息存入供所述多个发送线程进行信息读取的发送队列;存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。
可选地,所述读请求线程的个数与所述发送线程的个数相同;
和/或,所述多个读请求线程与多个连接队列一一对应;所述多个发送线程与多个发送多列一一对应。
可选地,所述通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,包括:
通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;
通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;
通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列。
可选地,所述请求队列为一个或多个;
当请求队列为多个时,存入的请求队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,任务处理线程的个数)。
可选地,所述通过创建的多个发送线程并行的将处理后的消息发送给所述客户端,具体包括:
通过所述多个发送线程并行的在所述发送队列中读取处理后的消息,并将所述消息写入连接写缓冲区;
通过所述多个发送线程将所述连接写缓冲区中消息发送给所述客户端。
可选地,所述方法还包括:
通过所述多个读请求线程实时的检测所述连接写缓冲区是否已满,并在检测结果为是时,通知所述多个发送线程停止对所述连接写缓冲区的写入操作。
依据本发明实施例的另一个方面,提供一种服务器,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如下方法步骤:
通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,并通过创建的多个发送线程并行的将处理后的消息发送给所述客户端;
其中,监听到的连接请求存入供所述多个读请求线程进行信息读取的连接队列;存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),mod为取余;
处理后得到的消息存入供所述多个发送线程进行信息读取的发送队列;存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。
可选地,所述读请求线程的个数与所述发送线程的个数相同;
和/或,所述多个读请求线程与多个连接队列一一对应;所述多个发送线程与多个发送多列一一对应。
可选地,所述处理器在执行通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理时,具体包括:
通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;
通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;
通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列。
可选地,所述请求队列为一个或多个;当请求队列为多个时,存入的请求队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,任务处理线程的个数)。
可选地,所述处理器在执行通过创建的多个发送线程并行的将处理后的消息发送给所述客户端时,具体包括:
通过所述多个发送线程并行的在所述发送队列中读取处理后的消息,并将所述消息写入连接写缓冲区;
通过所述多个发送线程将所述连接写缓冲区中消息发送给所述客户端。
可选地,所述计算机程序被所述处理器执行时,还包括:
通过所述多个读请求线程实时的检测所述连接写缓冲区是否已满,并在检测结果为是时,通知所述多个发送线程停止对所述连接写缓冲区的写入操作。
依据本发明实施例的第三个方面,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现如下方法步骤:
通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,并通过创建的多个发送线程并行的将处理后的消息发送给所述客户端;
其中,监听到的连接请求存入供所述多个读请求线程进行信息读取的连接队列;存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),mod为取余;
处理后得到的消息存入供所述多个发送线程进行信息读取的发送队列;存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。
本发明实施例提供的方法、服务器及存储介质,将服务器处理的不同阶段进行细分,针对每个阶段通过不同的线程进行并行处理,线程间互不影响、读请求线程和发送线程只处理属于自己的连接和响应,线程间无需做不必要的等待,无需队列加锁,能很大程度提高服务器的吞吐,防止不必要的等待,从而提高服务器的响应时间和吞吐能力,作为服务器设计的普适模型,有很好的指导意义。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明第一实施例提供的一种请求处理方法的流程图;
图2为本发明第二实施例提供的一种请求处理方法的流程图;
图3为本发明第三实施例提供的一种请求处理方法的流程图;
图4为本发明第四实施例中server架构的工作模式示意图;
图5为本发明第五实施例提供的一种服务器的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本发明第一实施中提供一种请求处理方法,应用于服务器,如图1所示,所述方法包括如下步骤:
步骤S101,通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理;
步骤S102,通过创建的多个发送线程并行的将处理后的消息发送给所述客户端。
本发明实施例中,将服务器的各个处理阶段细分为请求接收阶段、读请求阶段、请求处理阶段以及发送响应阶段,针对每个阶段使用不同的多个并行线程去处理,相邻的阶段相互联系,但互不影响,以此达到全异步、无等待、无浪费,进而提高了连接的响应效率。
具体的,本发明实施例中,通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,具体包括:
通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;
通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;
通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列。
本发明实施例中,连接队列、发送队列为多个。具体的,将监听到的连接请求存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),其中,mod为取余;
将请求处理后得到的消息存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。
本发明实施例中,读请求线程的个数与发送线程的个数相同。并且,多个读请求线程与多个连接队列一一对应;多个发送线程与多个发送多列一一对应。
本发明实施例,通过连接请求的来源套接字描述符的值与线程个数取余的方式,确定信息存储的队列,实现了队列不加锁。
总之,本实施例通过将服务器处理的各个环节细分,读请求线程和发送线程只处理属于自己的连接和响应,无需加锁,能很大程度提高服务器的吞吐,防止不必要的等待,最大化利用计算资源,从而提高服务器的响应时间和吞吐能力,作为服务器设计的普适模型,有很好的指导意义。
在本发明第二实施例中,提供一种请求处理方法,应用于服务器,如图2所示,所述方法包括如下步骤:
步骤S201,通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;其中,存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数);
步骤S202,通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;其中,存入的请求队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,任务处理线程的个数);
步骤S203,通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列;其中,存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数);
步骤S204,通过创建的多个发送线程并行的将处理后的消息发送给所述客户端。
本实施例相对于第一实施例,区别在于请求队列也为多个,避免了采用一个请求队列,任务处理线程要互斥的从请求队列中取请求,影响处理效率的问题。所以,进一步的提高了连接响应效率。
在本发明第三实施例中,提供一种请求处理方法,应用于服务器,如图3所示,所述方法包括如下步骤:
步骤S301,通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;其中,存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数);
步骤S302,通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;其中,存入的请求队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,任务处理线程的个数);
步骤S303,通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列;其中,存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数);
步骤S304,通过所述多个发送线程并行的在所述发送队列中读取处理后的消息,并将所述消息写入连接写缓冲区;
步骤S305,通过所述多个发送线程将所述连接写缓冲区中消息发送给所述客户端。
本发明实施例中,多个读请求线程还实时的检测连接写缓冲区是否已满,并在检测结果为是时,通知多个发送线程停止对连接写缓冲区的写入操作。
本发明实施例相对于第二实施例,实现了缓冲区满时收读请求线程与发送线程互相通信,避免了缓冲区溢,为正常的处理请求提供了重要支持。
在本发明的第四实施例中,提供一种请求处理方法,应用于服务器,本实施例通过一个具体的应用示例,对本发明的实施过程进行更详尽的阐述,用以更好的支持第一、第二、第三实施例的实施过程。需要指出的是,本实施例纰漏的技术细节,用于解释本发明,但不用于唯一限定本发明。
本发明实施例的所述请求处理方法,核心思想在于:将server的各个处理阶段细分,每个阶段使用不同的线程组去处理,线程组内线程的数量可以依据计算量大小分配线程资源,各个阶段互不影响,但是相互联系,以此达到server架构的全异步,无等待,无浪费。
如图4所示,为server架构的工作模式示意图,具体的,本实施例中,server分为请求接收阶段,读请求阶段,请求处理阶段,发送响应阶段。
server在各个阶段创建一定数量的并行线程,具体的:接收阶段包括并行的多个接收线程、请求阶段包括并行的多个读请求线程、请求处理阶段包括并行的多个任务处理线程、发送响应阶段包括并行的多个发送线程。其中,读请求线程的个数和发送线程的个数相等。
同时,server内还维护多个队列,分别为连接队列、请求队列和发送队列;其中,连接队列和发送队列为多个,请求队列可以为一个也可以为多个。
本实施例中,每个读请求线程唯一对应一个连接队列、每个发送线程唯一对应一个发送队列。
需要指出的是,图4中示出的是请求队列为一个的情况,并且图4中未将“连接队列”、“发送队列”示出,图中虽然将接收线程和读请求线程做了直连,但是并不说明二者直接通信,二者之间还设有连接队列,存入的连接队列的队列序号为:Fd mod n,其中,Fd表示连接请求的来源套接字描述符的值,n表示读请求线程。同理,任务处理线程和发送线程间也设有发送队列。
下面对本发明实施例提供的请求处理方法的实施过程进行阐述,具体的:
本实施例中,server根据需要创建一定数量的接收线程,负责监听来自客户端的请求。客户端有请求后,接收线程创建描述客户端的连接的结构体,存入连接队列,连接队列有多个,每个连接存放的队列序号=mod(连接请求的来源套接字描述符的值,读请求的线程个数),这样做的目的是不需要对连接队列加锁。
本发明实施例中,读请求线程都有自己独有的连接队列,读请求线程读取自己的连接队列中所有的连接中的所有请求,将请求封装成包,存入请求队列,作为任务处理的输入。具体的,当请求队列列为一个时,直接存入请求队列;当请求队列为多个时,读请求线程将请求存入请求队列的时,存入的请求队列的队列序号=mod(连接请求的来源套接字描述符的值,任务处理线程的个数),目的也是不需要对请求队列加锁。
本发明实施例中,当请求队列为一个时,任务处理线程互斥的从请求队列中取请求,当请求队列为多个时,每一个任务处理线程对应一个请求队列,任务处理线程从自己的请求队列中取请求,不需要互斥访问队列。
本发明实施例中,各任务处理线程并的发处理请求,请求处理完,将处理结果封包,按照这个请求的来源套接字描述符,存入对应的发送队列。存入的发送队列的队列序号=mod(连接请求的来源套接字描述符的值,发送线程的个数),目的也是不需要对发送队列加锁。
本发明实施例中,每一个发送线程对应一个发送队列,发送线程从各自的发送队列中取处理结果,并将处理结果发送给客户端。
本发明实施例中,发送线程从发送队列中取到处理结果后,将其存入连接写缓冲区,读请求线程检测到连接写缓冲区是否已满,并根据检测结果通知发送线程是否可以写缓冲区。
综上可知,本发明实施例中,连接不需要等待请求处理,一直读取客户端请求,任务处理完后不需要关心将响应发送给客户端,有单独的发送线程发送;读请求线程和发送线程不需要对连接队列和发送队列互斥访问,每个线程都有对应的队列;每一个任务处理线程可以有对应的请求队列,不同的任务处理线程并行处理请求。
所以,本发明实施例通过将server处理的各个环节细分,收发线程只处理属于自己的连接和响应,无需加锁,能很大程度提高server的吞吐,防止不必要的等待,最大化利用计算资源,从而提高server的响应时间和吞吐能力,作为server设计的普适模型,有很好的指导意义。
在本发明的第五实施例中,提供一种服务器,如图5所示,包括:存储器510、处理器520及存储在所述存储器510上并可在所述处理器520上运行的计算机程序,所述计算机程序被所述处理器520执行时实现如下方法步骤:
步骤1,通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理;
步骤2,通过创建的多个发送线程并行的将处理后的消息发送给所述客户端;
其中,监听到的连接请求存入供所述多个读请求线程进行信息读取的连接队列;存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),mod为取余;
处理后得到的消息存入供所述多个发送线程进行信息读取的发送队列;存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。
本发明实施例中,读请求线程的个数与所述发送线程的个数相同;并且多个读请求线程与多个连接队列一一对应;多个发送线程与多个发送多列一一对应。
可选地,本发明实施例中,处理器520在执行通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理时,具体包括:
通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;
通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;
通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列。
其中,当请求队列为多个时,存入的请求队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,任务处理线程的个数)。
可选地,本发明实施例中,处理器520在执行通过创建的多个发送线程并行的将处理后的消息发送给所述客户端时,具体包括:
通过所述多个发送线程并行的在所述发送队列中读取处理后的消息,并将所述消息写入连接写缓冲区;
通过所述多个发送线程将所述连接写缓冲区中消息发送给所述客户端。
可选地,本发明实施例中,计算机程序被所述处理器执行时,还包括:
通过所述多个读请求线程实时的检测所述连接写缓冲区是否已满,并在检测结果为是时,通知所述多个发送线程停止对所述连接写缓冲区的写入操作。
针对本发明实施例的具体实施过程可参见第一至第四实施例,本实施例再次不再赘述。
总之,本实施例提供的服务器,将服务器处理的不同阶段进行细分,针对每个阶段通过不同的线程进行并行处理,线程间互不影响、读请求线程和发送线程只处理属于自己的连接和响应,线程间无需做不必要的等待,无需队列加锁,能很大程度提高服务器的吞吐,防止不必要的等待,从而提高服务器的响应时间和吞吐能力,作为服务器设计的普适模型,有很好的指导意义。
在本发明的第六实施例中,提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现如第一、第二、第三或者第四实施例所述的请求处理方法的步骤。
由于第一至第四实施例已经对请求处理的详细过程进行了阐述,本实施例在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种请求处理方法,其特征在于,应用于服务器侧,包括:
通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,并通过创建的多个发送线程并行的将处理后的消息发送给所述客户端;
其中,监听到的连接请求存入供所述多个读请求线程进行信息读取的连接队列;存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),mod为取余;
处理后得到的消息存入供所述多个发送线程进行信息读取的发送队列;存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。
2.如权利要求1所述的方法,其特征在于,所述读请求线程的个数与所述发送线程的个数相同;
和/或,所述多个读请求线程与多个连接队列一一对应;所述多个发送线程与多个发送多列一一对应。
3.如权利要求1所述的方法,其特征在于,所述通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,包括:
通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;
通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;
通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列。
4.如权利要求3所述的方法,其特征在于,所述请求队列为一个或多个;
当请求队列为多个时,存入的请求队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,任务处理线程的个数)。
5.如权利要求1至4任意一项所述的方法,其特征在于,所述通过创建的多个发送线程并行的将处理后的消息发送给所述客户端,具体包括:
通过所述多个发送线程并行的在所述发送队列中读取处理后的消息,并将所述消息写入连接写缓冲区;
通过所述多个发送线程将所述连接写缓冲区中消息发送给所述客户端。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
通过所述多个读请求线程实时的检测所述连接写缓冲区是否已满,并在检测结果为是时,通知所述多个发送线程停止对所述连接写缓冲区的写入操作。
7.一种服务器,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如下方法步骤:
通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理,并通过创建的多个发送线程并行的将处理后的消息发送给所述客户端;
其中,监听到的连接请求存入供所述多个读请求线程进行信息读取的连接队列;存入的连接队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,读请求线程的个数),mod为取余;
处理后得到的消息存入供所述多个发送线程进行信息读取的发送队列;存入的发送队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,发送线程的个数)。
8.如权利要求7所述的服务器,其特征在于,所述读请求线程的个数与所述发送线程的个数相同;
和/或,所述多个读请求线程与多个连接队列一一对应;所述多个发送线程与多个发送多列一一对应。
9.如权利要求7所述的服务器,其特征在于,所述处理器在执行通过创建的多个接收线程、多个读请求线程、多个任务处理线程,并行的对客户端发送的连接请求依次进行监听、读取和处理时,具体包括:
通过所述多个接收线程并行的监听客户端的连接请求,并将监听到的所述连接请求存入所述连接队列;
通过所述多个读请求线程并行的在所述连接队列中读取连接请求,并将读取的连接请求封装后存入请求队列;
通过所述多个任务处理线程并行的在所述请求队列中读取连接请求后进行请求处理,并将请求处理后得到的消息存入所述发送队列。
10.如权利要求9所述的服务器,其特征在于,所述请求队列为一个或多个;当请求队列为多个时,存入的请求队列的队列序号为:mod(所述连接请求的来源套接字描述符的值,任务处理线程的个数)。
11.如权利要求7至10任意一项所述的服务器,其特征在于,所述处理器在执行通过创建的多个发送线程并行的将处理后的消息发送给所述客户端时,具体包括:
通过所述多个发送线程并行的在所述发送队列中读取处理后的消息,并将所述消息写入连接写缓冲区;
通过所述多个发送线程将所述连接写缓冲区中消息发送给所述客户端。
12.如权利要求11所述的服务器,其特征在于,所述计算机程序被所述处理器执行时,还包括:
通过所述多个读请求线程实时的检测所述连接写缓冲区是否已满,并在检测结果为是时,通知所述多个发送线程停止对所述连接写缓冲区的写入操作。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现如权利要求1至6中任一项所述的请求处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810460711.5A CN108647104B (zh) | 2018-05-15 | 2018-05-15 | 请求处理方法、服务器及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810460711.5A CN108647104B (zh) | 2018-05-15 | 2018-05-15 | 请求处理方法、服务器及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108647104A true CN108647104A (zh) | 2018-10-12 |
CN108647104B CN108647104B (zh) | 2022-05-31 |
Family
ID=63755616
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810460711.5A Active CN108647104B (zh) | 2018-05-15 | 2018-05-15 | 请求处理方法、服务器及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108647104B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109495303A (zh) * | 2018-11-19 | 2019-03-19 | 广州开信通讯***有限公司 | 获取设备参量信息的方法、设备网络管理装置及***、电子装置和存储介质 |
CN109492016A (zh) * | 2018-11-19 | 2019-03-19 | ***股份有限公司 | 一种交易清算方法及装置 |
CN109992433A (zh) * | 2019-04-11 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种分布式tgt通信优化方法、装置、设备及存储介质 |
CN110493311A (zh) * | 2019-07-17 | 2019-11-22 | 视联动力信息技术股份有限公司 | 一种业务处理方法及装置 |
CN110532088A (zh) * | 2019-07-15 | 2019-12-03 | 金蝶汽车网络科技有限公司 | 连接处理方法、装置、计算机设备和存储介质 |
CN110851246A (zh) * | 2019-09-30 | 2020-02-28 | 天阳宏业科技股份有限公司 | 一种批量任务处理方法、装置、***及存储介质 |
CN111343239A (zh) * | 2020-02-10 | 2020-06-26 | ***股份有限公司 | 通信请求处理方法、通信方法、通信请求处理装置以及交易*** |
CN111737030A (zh) * | 2020-06-24 | 2020-10-02 | 广东浪潮大数据研究有限公司 | 一种控制指令处理方法、装置、设备及计算机存储介质 |
CN112380028A (zh) * | 2020-10-26 | 2021-02-19 | 上汽通用五菱汽车股份有限公司 | 一种异步非阻塞响应式消息处理方法 |
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
WO2021120374A1 (zh) * | 2019-12-19 | 2021-06-24 | 厦门网宿有限公司 | 报文处理方法、处理单元及虚拟专用网络服务器 |
CN113051243A (zh) * | 2021-03-31 | 2021-06-29 | 上海阵量智能科技有限公司 | 日志处理方法、装置、***、芯片、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
CN101741746A (zh) * | 2009-12-11 | 2010-06-16 | 四川长虹电器股份有限公司 | 基于iocp的双向cas网关与用户终端的通信方法 |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输***及方法 |
US20110196947A1 (en) * | 2002-06-28 | 2011-08-11 | Ladd Dennis D | Method and system for transforming input data streams |
CN102916953A (zh) * | 2012-10-12 | 2013-02-06 | 青岛海信传媒网络技术有限公司 | 基于tcp连接实现并发服务的方法及装置 |
CN103533025A (zh) * | 2013-09-18 | 2014-01-22 | 北京航空航天大学 | 一种减少多核***上tcp连接建立时锁竞争的方法 |
CN103677853A (zh) * | 2013-12-30 | 2014-03-26 | 哈尔滨工业大学 | 一种在dm642型dsp内实现hit-tena中间件的方法 |
CN106790022A (zh) * | 2016-12-14 | 2017-05-31 | 福建天泉教育科技有限公司 | 基于多查询线程的通信方法及其*** |
-
2018
- 2018-05-15 CN CN201810460711.5A patent/CN108647104B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110196947A1 (en) * | 2002-06-28 | 2011-08-11 | Ladd Dennis D | Method and system for transforming input data streams |
CN101217464A (zh) * | 2007-12-28 | 2008-07-09 | 北京大学 | 一种udp数据包的传输方法 |
CN101741746A (zh) * | 2009-12-11 | 2010-06-16 | 四川长虹电器股份有限公司 | 基于iocp的双向cas网关与用户终端的通信方法 |
CN101982955A (zh) * | 2010-11-19 | 2011-03-02 | 深圳华大基因科技有限公司 | 高性能文件传输***及方法 |
CN102916953A (zh) * | 2012-10-12 | 2013-02-06 | 青岛海信传媒网络技术有限公司 | 基于tcp连接实现并发服务的方法及装置 |
CN103533025A (zh) * | 2013-09-18 | 2014-01-22 | 北京航空航天大学 | 一种减少多核***上tcp连接建立时锁竞争的方法 |
CN103677853A (zh) * | 2013-12-30 | 2014-03-26 | 哈尔滨工业大学 | 一种在dm642型dsp内实现hit-tena中间件的方法 |
CN106790022A (zh) * | 2016-12-14 | 2017-05-31 | 福建天泉教育科技有限公司 | 基于多查询线程的通信方法及其*** |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109495303A (zh) * | 2018-11-19 | 2019-03-19 | 广州开信通讯***有限公司 | 获取设备参量信息的方法、设备网络管理装置及***、电子装置和存储介质 |
CN109492016A (zh) * | 2018-11-19 | 2019-03-19 | ***股份有限公司 | 一种交易清算方法及装置 |
US11887068B2 (en) | 2018-11-19 | 2024-01-30 | China Unionpay Co., Ltd. | Transaction settlement method and apparatus |
CN109992433A (zh) * | 2019-04-11 | 2019-07-09 | 苏州浪潮智能科技有限公司 | 一种分布式tgt通信优化方法、装置、设备及存储介质 |
CN110532088A (zh) * | 2019-07-15 | 2019-12-03 | 金蝶汽车网络科技有限公司 | 连接处理方法、装置、计算机设备和存储介质 |
CN110532088B (zh) * | 2019-07-15 | 2022-09-23 | 金蝶汽车网络科技有限公司 | 连接处理方法、装置、计算机设备和存储介质 |
CN110493311A (zh) * | 2019-07-17 | 2019-11-22 | 视联动力信息技术股份有限公司 | 一种业务处理方法及装置 |
CN110493311B (zh) * | 2019-07-17 | 2022-04-19 | 视联动力信息技术股份有限公司 | 一种业务处理方法及装置 |
CN110851246A (zh) * | 2019-09-30 | 2020-02-28 | 天阳宏业科技股份有限公司 | 一种批量任务处理方法、装置、***及存储介质 |
WO2021120374A1 (zh) * | 2019-12-19 | 2021-06-24 | 厦门网宿有限公司 | 报文处理方法、处理单元及虚拟专用网络服务器 |
CN111343239A (zh) * | 2020-02-10 | 2020-06-26 | ***股份有限公司 | 通信请求处理方法、通信方法、通信请求处理装置以及交易*** |
WO2021258750A1 (zh) * | 2020-06-24 | 2021-12-30 | 广东浪潮智慧计算技术有限公司 | 一种控制指令处理方法、装置、设备及计算机存储介质 |
CN111737030A (zh) * | 2020-06-24 | 2020-10-02 | 广东浪潮大数据研究有限公司 | 一种控制指令处理方法、装置、设备及计算机存储介质 |
CN112380028A (zh) * | 2020-10-26 | 2021-02-19 | 上汽通用五菱汽车股份有限公司 | 一种异步非阻塞响应式消息处理方法 |
CN112749028A (zh) * | 2021-01-11 | 2021-05-04 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN112749028B (zh) * | 2021-01-11 | 2024-06-07 | 科大讯飞股份有限公司 | 网络流量处理方法、相关设备及可读存储介质 |
CN113051243A (zh) * | 2021-03-31 | 2021-06-29 | 上海阵量智能科技有限公司 | 日志处理方法、装置、***、芯片、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108647104B (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647104A (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
EP3667496B1 (en) | Distributed computing system, data transmission method and device in distributed computing system | |
CN112602063B (zh) | 用于应用执行的发布-订阅框架 | |
US9164801B2 (en) | Probabilistic optimization of resource discovery, reservation and assignment | |
CN109729106B (zh) | 处理计算任务的方法、***和计算机程序产品 | |
CN109308214A (zh) | 数据任务处理方法和*** | |
CN110719215B (zh) | 虚拟网络的流信息采集方法及装置 | |
CN109634764A (zh) | 工作流控制方法、装置、设备、存储介质和*** | |
CN111580974B (zh) | Gpu实例分配方法、装置、电子设备和计算机可读介质 | |
CN116467091A (zh) | 基于消息中间件的消息处理方法、装置、设备及介质 | |
CN110008173A (zh) | 一种数据存储的方法及装置 | |
CN109815098A (zh) | 区块链***的性能测试方法、相应的装置及电子设备 | |
CN1783121A (zh) | 用于执行设计自动化的方法和*** | |
CN110442766A (zh) | 网页数据采集方法、装置、设备及存储介质 | |
Corodescu et al. | Big data workflows: Locality-aware orchestration using software containers | |
CN111694670B (zh) | 资源分配方法、装置、设备和计算机可读介质 | |
CN116996112B (zh) | 一种遥感卫星数据实时预处理方法 | |
CN116755637B (zh) | 交易数据存储方法、装置、设备及介质 | |
CN115269174A (zh) | 一种数据传输方法、数据处理方法及相关产品 | |
CN117573606A (zh) | 多核异构处理器芯片、设备和可读介质以及物品识别方法 | |
CN109783201A (zh) | 数据交换方法及其*** | |
CN116828035A (zh) | 一种基于云计算的数据集成*** | |
US10678744B2 (en) | Method and system for lockless interprocessor communication | |
CN115378937B (zh) | 任务的分布式并发方法、装置、设备和可读存储介质 | |
CN109829004A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |