CN110532111B - 高并发请求异步处理方法、装置、计算机设备及存储介质 - Google Patents
高并发请求异步处理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN110532111B CN110532111B CN201910810289.6A CN201910810289A CN110532111B CN 110532111 B CN110532111 B CN 110532111B CN 201910810289 A CN201910810289 A CN 201910810289A CN 110532111 B CN110532111 B CN 110532111B
- Authority
- CN
- China
- Prior art keywords
- request
- hash
- queue
- threads
- message
- 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/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了高并发请求异步处理方法、装置、计算机设备及存储介质,方法包括:Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;根据所述取模结果,将所述请求发送至对应的消息队列;通过与所述消息队列一一对应的线程对所述请求进行处理。本申请既能解决响应客户端的效率问题,又能保证后端的多线程在处理时,每个客户端的请求只由同一个线程处理,避免了发生数据库锁表及脏数据的情况。
Description
技术领域
本申请涉及请求处理技术领域,尤其涉及高并发请求异步处理方法、装置、计算机设备及存储介质。
背景技术
目前,随着移动互联网的发展,在很多应用场景下,客户端的数量非常大,这些客户端请求的频率居高不下,为了应对客户端的这些请求,现有技术提供了很多方法,例如使用多线程进行处理,但这些现有技术提供的方法,在多线程并发处理存储入库时容易发生锁表及脏数据的问题。
申请内容
本申请实施例提供了高并发请求异步处理方法、装置、计算机设备及存储介质,旨在解决现有技术中提供的方法在多线程并发处理存储入库时发生锁表及脏数据的问题。
第一方面,本申请实施例提供了一种高并发请求异步处理方法,其包括:
Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;
通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;
根据所述取模结果,将所述请求发送至对应的消息队列;
通过与所述消息队列一一对应的线程对所述请求进行处理。
第二方面,本申请实施例提供了一种高并发请求异步处理装置,其包括:
HASH模块,用于在Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;
取模模块,用于通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;
请求发送模块,用于根据所述取模结果,将所述请求发送至对应的消息队列;
请求处理模块,用于通过与所述消息队列一一对应的线程对所述请求进行处理。
第三方面,本申请实施例提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的高并发请求异步处理方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述高并发请求异步处理方法。
本申请实施例提供一种高并发请求异步处理方法,其包括:Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;根据所述取模结果,将所述请求发送至对应的消息队列;通过与所述消息队列一一对应的线程对所述请求进行处理。本申请实施例提供的方法,既能解决响应客户端的效率问题,又能保证后端的多线程在处理时,每个客户端的请求只由同一个线程处理,避免发生数据库锁表及脏数据的情况。本申请实施例同时还提供了一种高并发请求异步处理装置、一种计算机可读存储介质和一种计算机设备,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的高并发请求异步处理方法的流程示意图;
图2为本申请实施例提供的高并发请求异步处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本申请实施例提供的一种高并发请求异步处理方法的流程示意图,所述方法可以包括步骤:
S101、Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;
由于客户端数量非常多,并且客户端会发送高频请求给Web端,所以此时需要解决客户端响应效率的问题。本申请实施例中,Web端接收到客户端的请求后,先对请求的主键字段进行HASH计算。通过HASH计算可以确保得到一个唯一的HASH值。该HASH值即为HASH计算得到的HASH码。
进一步,所述主键字段为客户端唯一标识字段。即本申请实施例中,是对客户端的一个唯一标识字段进行HASH计算,这样可以确保最终计算得到的HASH值是唯一的。
进一步,所述步骤S101包括:步骤一、Web端接收到客户端的请求后,对所述请求进行解析获取其主键字段;步骤二、通过散列算法对所述主键字段进行计算得到一串长度固定且唯一的数字,并作为HASH值。
即Web端接收到客户端的请求后,可以先对请求进行解析,从而获取其中的主键字段,本申请实施例中提到的获取主键字段指的是获取该字段的值。然后通过散列算法对所述主键字段进行计算,从而得到一串长度固定且唯一的数字,以便进行后续的取模运算,计算得到的数字即为HASH值。
本申请中,所述散列算法可以是MD5 HASH算法,也可以是SHA1 HASH算法。
本申请中,在进行HASH计算时,优选对客户端的多个主键字段进行HASH计算,然后将计算得到的多个HASH值进行组合,然后得到最终的HASH值。这样做的好处是可以确保最终的HASH值是唯一的,当然,按照这种组合的方式确定最终的HASH值时,每次采用的关键字段、采用的散列算法、每次的计算方式、每次的组合方式均需要相同。例如可以预先确定采用客户端的ID以及手机号两个主键字段,然后对两个主键字段可以采用相同的散列算法,也可以采用不同的散列算法(如确定采用不同的散列算法,那么在之后的计算过程中,均采用上述计算方式),计算得到两个HASH值,然后将对ID进行HASH计算得到的第一HASH值与对ID进行HASH计算得到的第二HASH值进行组合,例如将第一HASH值在前、第二HASH值在后组合得到最终的HASH值。
S102、通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;
本步骤中,利用计算得到的HASH值对消息队列的数量进行取模运算,最终得到的取模结果就会有固定的范围。例如消息队列的数量为qcount,那么取模结果就会是从0到qcount-1的范围。具体来说,假如消息队列的数量为10,那么取模结果就是从0到9的范围,假如消息队列的数量为30,那么取模结果就是从0到29的范围。
在一个具体应用场景中,选取的主键字段为客户端的企业税号,假如一个而具体的企业税号为92410302664657486R,客户端的每次请求都需要携带该主键字段,并且在该具体应用中,消息队列qcount的数量为6个。那么可先对92410302664657486R进行HASH计算,得到的HASH值为1539205023,然后用1539205023对6进行取模运算,得到的取模结果为3。
S103、根据所述取模结果,将所述请求发送至对应的消息队列;
本步骤就是根据取模结果来确定将请求发送给哪个消息队列。
具体来说,所述步骤S103包括:步骤一、预先确定各消息队列的队列索引值;步骤二、将所述取模结果与所述队列索引值进行匹配;步骤三、根据匹配结果将所述请求发送至匹配的队列索引值所在的消息队列。
本申请实施例中,需要预先确定好消息队列的队列索引值,例如存在6个消息队列,其队列索引值分别为0、1、2、3、4和5。然后将取模结果与队列索引值进行匹配,例如取模结果为3,则可以将3与上述的队列索引值进行匹配。最后根据匹配结果来确定将请求发送给哪个消息队列,例如对于取模结果为3的情况,则可以将消息发送给队列索引值为3的消息队列。这样就可以利用Web端来确定将客户端的消息发送给哪种队列,从而实现分摊处理客户端的请求,不会集中处理海量客户端的请求,缓解处理压力。同时由于同一客户端其主键字段不会发生变化,所以得到的HASH值不会发生变化,最终达到的效果是同一客户端的请求会发送给同一个消息队列。
进一步,所述根据匹配结果将所述请求发送至匹配的队列索引值所在的消息队列之后包括:
Web端返回响应消息至客户端。
再将请求发送给消息队列后,可立即返回响应消息给客户端,从而达到异步处理的效果。
S104、通过与所述消息队列一一对应的线程对所述请求进行处理。
此步骤是通过线程来处理具体的请求。本申请实施例中,线程与消息队列是一一对应的,即消息队列有几个,那么线程也有几个,并且这两者一一对应。当然,本申请实施例中,可以根据消息队列的数量来启动相应数量的线程,然后将二者一一对应。即线程的数量与消息队列的数量保持一致,每个线程只处理对应的某个消息队列。例如30个消息队列,队列索引值分别为mq0-mq29,则启动30个线程,分别为thread0-thread29,并且thread0只处理mq0消息队列中的请求,thread1只处理mq1消息队列中的请求,依此类推。
进一步,所述的高并发请求异步处理方法还包括:
当消息队列的数量变化时,相应的修改线程的数量,并使消息队列与线程一一对应。
如果消息队列的数量发生变化,那么可以相应的修改线程的数量,例如消息队列的数量增加,那么可多启动一些线程,从而使线程的数量与消息队列的数量相同并一一对应,又或者消息队列的数量减少,那么可关闭一些线程,从而使线程的数量与消息队列的数量相同并一一对应。
本申请中,线程的数量可以随消息队列的数量变化而变化,当消息队列的数量增加时,则增加线程的数量,消息队列的数量减少时,则减少线程的数量,具体而言,线程的数量应预先设置多于消息队列的数量,并且将多余的线程作为备份线程,并将关闭这些备份线程,当检测到消息队列增加时,则需要开启对应数量的备份线程,从而激活这些备份线程,当检测到消息队列减少时,则可以关闭对应的线程,作为备份线程。
另外,当消息队列的数量变化时,各消息队列的队列索引值也将发生变化,例如原消息队列为6个,队列索引值分别为mq0-mq5,而现消息队列为4个,其中减少的消息队列是mq1和mq4,所以剩下的消息队列,其队列索引值分别为mq0、mq2、mq3、mq5。如果继续采用上述队列索引值,其总的队列数量为4,取模结果可能为0、1、2和3,这将导致取模结果为1的情况无法匹配到队列索引值,并且队列索引值为5的消息队列无法接收到请求。所以在检测到消息队列的数量变化时,应重新确定各消息队列的队列索引值,例如对于上述例子,各消息队列的队列索引值应重新确定为mq0、mq1、mq2、mq3,这样才能确保正常发送消息给消息队列。
由于线程是与消息队列一一对应的,所以消息队列的队列索引值发生变化,需要同步更新线程与消息队列的对应关系,例如原来消息队列mq1与线程thread1对应,即mq1与thread1对应,此时减少的消息队列正是消息队列mq1,所以需要关闭线程thread1,同时消息队列的队列索引值重新确定后,原消息队列mq2的队列索引值更新为mq1,所以此时的对应关系是mq1与thread1对应,这样会造成对应关系错乱,所以在对消息队列的队列索引值重排后,也同样需要对线程的编号进行重排,以便使消息队列的队列索引值与线程的编号一一对应,且依据消息队列的队列索引值变化而更新。
另外,本申请实施例中,对消息队列的队列索引值进行更新(即重排)以及对线程的编号进行更新,是按照同样的方式来进行更新。例如消息队列的队列索引值全部变化,则线程的编号也全部适应性变化,消息队列的队列索引值部分变化,则线程的编号也是部分适应性变化。以使消息队列的队列索引值与线程的编号一一对应。
更进一步的,本申请实施例中,在对消息队列的队列索引值进行更新时,先确定发生变化的队列索引值的开始位置,然后从该队列索引值开始进行重排,例如在前述例子中,原队列索引值分别为mq0-mq5,而现消息队列为4个,其中减少的消息队列是mq1和mq4,也就是说,发生变化的队列索引值的开始位置mq1,所以从mq1开始进行重排,而不会对mq0进行重排,即原消息队列的队列索引值为mq0,重排后,该消息队列的队列索引值仍为mq0,同时对后面的消息队列的队列索引值进行重排。同时,在重排过程中,按照原消息队列的队列索引值的先后顺序依次进行重排,例如mq2先重排到发生变化的队列索引值的开始位置即mq1,然后mq3再重排到mq1后面即mq2,mq5再重排到mq2后面即mq3,如此原队列索引值mq2、mq3、mq5将分别重排为mq1、mq2、mq3,这样最终各消息队列的队列索引值将分别为mq0、mq1、mq2、mq3,并且mq0的消息队列,其队列索引值未发生变化,这样可以尽可能减少重排量,减少对计算过程中的影响,避免经常重排导致消息发送错误。同样的,在对线程的编号进行重排时,也是按照上述过程进行同样设置。例如在上述例子中,如果mq0的消息队列其队列索引值未发生变化,那么thread0的线程其编号也不进行修改,而是同步修改thread2、thread3、thread5的编号,即分别修改为thread1、thread2、thread3,使这些线程的编号与消息队列的队列索引值一一对应。通过上述方法,本申请实施例可以尽量减少重排工作量,同时减少对对应关系的影响以及对转发请求的影响,提高请求处理的稳定性。
这样,本申请实施例中不仅可保证同一个客户端的请求,始终只发到同一个消息队列,同时也可以保证同一个消息队列的请求只会由一个线程进行处理。本申请实施例中,一个客户端只对应一个消息队列,而一个消息队列可以对应多个客户端,客户端与消息队列是一对一,消息队列与客户端是一对多,因为一个消息队列以及线程处理的请求是海量的,所以客户端数量可能远超消息队列以及线程的数量,故一个消息队列可以对应多个客户端。
进一步,所述步骤S104包括:
所述线程从数据库中查询数据或者将处理结果保存至数据库中。本申请中,由于同一个客户端的请求只会被同一个线程处理,而不会同时被其他线程处理,从而解决了多线程并发处理存储入库时发生的锁表及脏数据问题。
请参见图2,图2为本申请实施例所提供的一种高并发请求异步处理装置的结构示意图;
该装置可以包括:
HASH模块201,用于在Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;
取模模块202,用于通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;
请求发送模块203,用于根据所述取模结果,将所述请求发送至对应的消息队列;
请求处理模块204,用于通过与所述消息队列一一对应的线程对所述请求进行处理。
进一步,所述主键字段为客户端唯一标识字段。
进一步,所述请求发送模块203包括:
队列索引值确定单元,用于预先确定各消息队列的队列索引值;
匹配单元,用于将所述取模结果与所述队列索引值进行匹配;
请求发送单元,用于根据匹配结果将所述请求发送至匹配的队列索引值所在的消息队列。
进一步,所述请求发送模块203还包括:
响应单元,用于返回响应消息至客户端。
进一步,所述HASH模块201包括:
解析单元,用于在Web端接收到客户端的请求后,对所述请求进行解析获取其主键字段;
计算单元,用于通过散列算法对所述主键字段进行计算得到一串长度固定且唯一的数字,并作为HASH值。
进一步,装置还包括:
修改模块,用于当消息队列的数量变化时,相应的修改线程的数量,并使消息队列与线程一一对应。
进一步,所述请求处理模块204包括:
保存单元,用于所述线程从数据库中查询数据或者将处理结果保存至数据库中。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的方法。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请还提供了一种计算机设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的方法。当然所述计算机设备还可以包括各种网络接口,电源等组件。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (5)
1.一种高并发请求异步处理方法,其特征在于,包括:
Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;所述对所述请求的主键字段进行HASH计算得到HASH值,包括:采用相同的散列算法对客户端的两个主键字段进行HASH计算,得到两个HASH值,然后将两个HASH值组合得到最终的HASH值;
通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;消息队列的数量为qcount,取模结果是从0到qcount-1的范围;
根据所述取模结果,将所述请求发送至对应的消息队列;
通过与所述消息队列一一对应的线程对所述请求进行处理;
所述根据所述取模结果,将所述请求发送至对应的消息队列包括:
预先确定各消息队列的队列索引值;队列索引值分别为mq0-mqn-1;其中,mqn为消息队列的数量,mqn与qcount相同;
将所述取模结果与所述队列索引值进行匹配;
根据匹配结果将所述请求发送至匹配的队列索引值所在的消息队列;
所述Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值包括:
Web端接收到客户端的请求后,对所述请求进行解析获取其主键字段;
通过散列算法对所述主键字段进行计算得到一串长度固定且唯一的数字,并作为HASH值;
所述高并发请求异步处理方法还包括:当消息队列的数量变化时,相应的修改线程的数量,并使消息队列与线程一一对应;当消息队列的数量变化时,同时对各消息队列的队列索引值和对线程的编号进行更新,在对消息队列的队列索引值进行更新时,先确定发生变化的队列索引值的开始位置,然后从该队列索引值开始按顺序进行重排;在对线程的编号进行更新时,先确定发生变化的线程的开始位置,然后从该线程开始按顺序进行重排,以使消息队列的队列索引值与线程的编号一一对应;
所述主键字段为客户端唯一标识字段;
所述通过与所述消息队列一一对应的线程对所述请求进行处理包括:所述线程从数据库中查询数据或者将处理结果保存至数据库中。
2.根据权利要求1所述的高并发请求异步处理方法,其特征在于,所述根据匹配结果将所述请求发送至匹配的队列索引值所在的消息队列之后包括:
Web端返回响应消息至客户端。
3.一种高并发请求异步处理装置,其特征在于,包括:
HASH模块,用于在Web端接收到客户端的请求后,对所述请求的主键字段进行HASH计算得到HASH值;所述对所述请求的主键字段进行HASH计算得到HASH值,包括:采用相同的散列算法对客户端的两个主键字段进行HASH计算,得到两个HASH值,然后将两个HASH值组合得到最终的HASH值;
取模模块,用于通过所述HASH值对消息队列的数量进行取模运算,得到取模结果;消息队列的数量为qcount,取模结果是从0到qcount-1的范围;
请求发送模块,用于根据所述取模结果,将所述请求发送至对应的消息队列;
请求处理模块,用于通过与所述消息队列一一对应的线程对所述请求进行处理;
所述请求发送模块包括:
队列索引值确定单元,用于预先确定各消息队列的队列索引值;队列索引值分别为mq0-mqn-1;其中,mqn为消息队列的数量,mqn与qcount相同;
匹配单元,用于将所述取模结果与所述队列索引值进行匹配;
请求发送单元,用于根据匹配结果将所述请求发送至匹配的队列索引值所在的消息队列;
所述HASH模块包括:
解析单元,用于在Web端接收到客户端的请求后,对所述请求进行解析获取其主键字段;
计算单元,用于通过散列算法对所述主键字段进行计算得到一串长度固定且唯一的数字,并作为HASH值;
装置还包括:
修改模块,用于当消息队列的数量变化时,相应的修改线程的数量,并使消息队列与线程一一对应;当消息队列的数量变化时,同时对各消息队列的队列索引值和对线程的编号进行更新,在对消息队列的队列索引值进行更新时,先确定发生变化的队列索引值的开始位置,然后从该队列索引值开始按顺序进行重排;在对线程的编号进行更新时,先确定发生变化的线程的开始位置,然后从该线程开始按顺序进行重排,以使消息队列的队列索引值与线程的编号一一对应;
所述主键字段为客户端唯一标识字段;
所述请求处理模块包括:保存单元,用于所述线程从数据库中查询数据或者将处理结果保存至数据库中。
4.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至2任一项所述的高并发请求异步处理方法。
5.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至2任一项所述高并发请求异步处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910810289.6A CN110532111B (zh) | 2019-08-29 | 2019-08-29 | 高并发请求异步处理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910810289.6A CN110532111B (zh) | 2019-08-29 | 2019-08-29 | 高并发请求异步处理方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110532111A CN110532111A (zh) | 2019-12-03 |
CN110532111B true CN110532111B (zh) | 2023-07-28 |
Family
ID=68665169
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910810289.6A Active CN110532111B (zh) | 2019-08-29 | 2019-08-29 | 高并发请求异步处理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110532111B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111078413B (zh) * | 2019-12-17 | 2024-04-19 | 深圳前海环融联易信息科技服务有限公司 | 一种定时任务的执行方法、装置、计算机设备及存储介质 |
CN113051279B (zh) * | 2021-03-05 | 2024-05-10 | 北京顺达同行科技有限公司 | 数据消息的存储方法、存储装置、电子设备及存储介质 |
CN116595099A (zh) * | 2023-05-22 | 2023-08-15 | 北京言子初科技有限公司 | 高并发数据异步处理方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547755A (zh) * | 2015-09-17 | 2017-03-29 | 北京国双科技有限公司 | 一种基于片键的数据处理方法及装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5937162A (en) * | 1995-04-06 | 1999-08-10 | Exactis.Com, Inc. | Method and apparatus for high volume e-mail delivery |
CN101599027B (zh) * | 2009-06-30 | 2013-02-13 | 中兴通讯股份有限公司 | 一种线程池管理方法及其系统 |
CN104378400B (zh) * | 2013-08-15 | 2018-10-02 | 腾讯科技(深圳)有限公司 | 数据分散并发方法和装置 |
CN104866339B (zh) * | 2015-04-27 | 2019-08-16 | 努比亚技术有限公司 | Fota数据的分布式持久化管理方法、系统和装置 |
US20170031908A1 (en) * | 2015-07-30 | 2017-02-02 | Futurewei Technologies, Inc. | Efficient parallel insertion into an open hash table |
-
2019
- 2019-08-29 CN CN201910810289.6A patent/CN110532111B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106547755A (zh) * | 2015-09-17 | 2017-03-29 | 北京国双科技有限公司 | 一种基于片键的数据处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
一种静态Android重打包恶意应用检测方法;孙伟,等;;信息安全研究;第3卷(第8期);693-700 * |
抗几何攻击的图像哈希算法研究;肖勇;中国优秀硕士学位论文全文数据库信息科技辑(月刊)(第4期);I138-685 * |
Also Published As
Publication number | Publication date |
---|---|
CN110532111A (zh) | 2019-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110532111B (zh) | 高并发请求异步处理方法、装置、计算机设备及存储介质 | |
CN105512244B (zh) | 基于消息队列实现数据库事务处理的方法及装置 | |
US20150138968A1 (en) | Scaling redundancy elimination middleboxes | |
EP2577517B1 (en) | Scalable policy-based database synchronization of scopes | |
US8370326B2 (en) | System and method for parallel computation of frequency histograms on joined tables | |
EP2453368B1 (en) | Custom web services data link layer | |
US7831554B2 (en) | Mobile data management using association table | |
CN110019231A (zh) | 一种并行数据库动态关联的方法及节点 | |
CN110858197A (zh) | 一种同步数据的方法和装置 | |
US8655920B2 (en) | Report updating based on a restructured report slice | |
CN112214505A (zh) | 数据同步方法、装置、计算机可读存储介质及电子设备 | |
CN111045988B (zh) | 文件查找方法、设备和计算机程序产品 | |
CN115185787B (zh) | 处理事务日志的方法及装置 | |
CN115495463A (zh) | 一种数据处理方法、装置、智能设备及存储介质 | |
CN115827657A (zh) | 数据库的数据同步方法、存储介质以及设备 | |
US10372690B2 (en) | Dynamic joining of database tables | |
CN113111127A (zh) | 数据存储的方法、装置、电子设备和可读介质 | |
US20220027337A1 (en) | Parallel processing of changes in a distributed system | |
CN114020368A (zh) | 基于状态机的信息处理方法、装置和存储介质 | |
CN110069539B (zh) | 一种数据关联方法及系统 | |
CN112052341A (zh) | 知识图谱剪枝方法及装置 | |
AU2015268665B2 (en) | Information processing device and information processing program | |
CN117131071B (zh) | 一种数据处理方法、装置、电子设备及计算机可读介质 | |
US11461302B1 (en) | Storing multiple instances of data items to implement key overloading in database tables | |
Wang et al. | On optimal concurrency control for optimistic replication |
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 |