CN108319508A - Http同步请求转为异步处理的方法及服务器 - Google Patents
Http同步请求转为异步处理的方法及服务器 Download PDFInfo
- Publication number
- CN108319508A CN108319508A CN201710037894.5A CN201710037894A CN108319508A CN 108319508 A CN108319508 A CN 108319508A CN 201710037894 A CN201710037894 A CN 201710037894A CN 108319508 A CN108319508 A CN 108319508A
- Authority
- CN
- China
- Prior art keywords
- request
- unique identifier
- http
- thread
- processing result
- 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 72
- 230000008569 process Effects 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims description 154
- 230000001360 synchronised effect Effects 0.000 claims description 68
- 238000013507 mapping Methods 0.000 claims description 35
- 230000005059 dormancy Effects 0.000 claims description 18
- 230000007958 sleep Effects 0.000 claims description 16
- 239000000725 suspension Substances 0.000 claims description 9
- 238000009826 distribution Methods 0.000 claims description 2
- 230000002618 waking effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 5
- 238000003860 storage Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000004617 sleep duration Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开一种HTTP同步请求转为异步处理的方法及HTTP同步请求服务器,能够实现高并发场景下HTTP同步请求高效率、低资源消耗地转为异步处理。该方法包括:HTTP同步请求服务器接收外部应用程序发送的HTTP同步请求,对于每一个请求,为该请求分配一个工作线程,启动该工作线程,在该工作线程启动后,该工作线程将对应的HTTP同步请求序列化为消息后放入请求消息队列,指定自身开始休眠预设时间;HTTP同步请求服务器若检测到回复消息队列中的处理结果,读取处理结果,解析出请求唯一标识符,中止对应的工作线程休眠;在被中止休眠的工作线程醒来后,该工作线程获取对应的处理结果并返回给HTTP同步请求服务器,由HTTP同步请求服务器将处理结果反馈给对应的外部应用程序。
Description
技术领域
本发明涉及互联网信息技术领域,具体涉及一种HTTP同步请求转为异步处理的方法及HTTP同步请求服务器。
背景技术
在互联网信息交互过程中,经常会涉及通过HTTP协议向其他系统提供服务请求的场景,HTTP服务请求的提供方式存在同步和异步两种方式,针对同步HTTP请求,服务器端处理、响应请求的过程也存在同步和异步两种方式。
针对同步HTTP服务请求而在服务器端需要异步处理的情况,现有技术方案使用“请求/回复模式”的消息队列实现,由消息队列完成从同步请求方式向异步回复模式的转换,处理方法如图1所示:外部应用程序向HTTP服务器发送同步请求,HTTP服务器接收到该同步请求后,将其放入请求消息队列,并为该请求分配一个线程,之后进入服务请求处理过程。对于服务请求处理过程,则涉及循环从请求消息队列中读取每条请求,对该条请求进行处理,将处理结果放入回复消息队列,并由前述线程从回复消息队列中读取处理结果返回给HTTP服务器,由HTTP服务器将其反馈给对应的外部应用程序。从整个处理过程可知,现有HTTP同步请求转为异步处理的方法存在如下问题:
1.HTTP同步服务器分配的线程一直处于工作状态,HTTP同步请求服务器需要等待所述线程的反馈,使得HTTP同步请求服务器端存在大量的请求被阻塞,导致服务器端内存、CPU资源占用较高;
2.请求/回复模式的消息队列吞吐量较低,无法满足高并发的场景。
发明内容
针对现有技术存在的不足和缺陷,本发明提供一种HTTP同步请求转为异步处理的方法及HTTP同步请求服务器。
一方面,本发明实施例提出一种HTTP同步请求转为异步处理的方法,包括:
HTTP同步请求服务器接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,在该工作线程启动后,该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;
所述HTTP同步请求服务器若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;
在被中止休眠的工作线程醒来后,该工作线程获取其对应的处理结果,并将所述处理结果返回给所述HTTP同步请求服务器,由所述HTTP同步请求服务器将接收的处理结果反馈给对应的外部应用程序。
可选地,所述该工作线程将对应的HTTP同步请求序列化为消息,包括:
为对应的HTTP同步请求生成请求唯一标识符,并保存所述请求唯一标识符与该工作线程的映射关系;
将所述请求唯一标识符附加到所述对应的HTTP同步请求中,并将得到的HTTP同步请求序列化为消息。
可选地,所述中止该请求唯一标识符对应的工作线程休眠,包括:
根据保存的请求唯一标识符与工作线程的映射关系确定对应该请求唯一标识符的工作线程;
调用所确定的工作线程的中断接口,中止该工作线程休眠。
可选地,所述中止该请求唯一标识符对应的工作线程休眠,还包括:
保存该请求唯一标识符与对应的处理结果的映射关系;
其中,所述该工作线程获取其对应的处理结果,包括:
根据保存的请求唯一标识符与工作线程的映射关系确定该工作线程对应的请求唯一标识符;
从保存的请求唯一标识符与对应的处理结果的映射关系中获取该请求唯一标识符对应的处理结果。
可选地,所述方法还包括:
所述HTTP同步请求服务器获取周期内被动唤醒的工作线程的数量,并在所述周期内被动唤醒的工作线程的数量大于预设数值时触发告警。
另一方面,本发明实施例提出一种HTTP同步请求服务器,包括:
分配单元,用于接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,以使该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;
中止单元,用于若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,以使该工作线程在醒来后,获取其对应的处理结果,并将所述处理结果返回给反馈单元,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;
反馈单元,用于将接收的处理结果反馈给对应的外部应用程序。
可选地,所述分配单元,具体用于启动该工作线程,以使该工作线程为对应的HTTP同步请求生成请求唯一标识符,保存所述请求唯一标识符与该工作线程的映射关系,将所述请求唯一标识符附加到所述对应的HTTP同步请求中,并将得到的HTTP同步请求序列化为消息。
可选地,所述中止单元,具体用于:
根据保存的请求唯一标识符与工作线程的映射关系确定对应该请求唯一标识符的工作线程;
调用所确定的工作线程的中断接口,中止该工作线程休眠。
可选地,所述中止单元,还用于:
保存该请求唯一标识符与对应的处理结果的映射关系;
其中,所述中止单元,具体用于中止该请求唯一标识符对应的工作线程休眠,以使该工作线程在醒来后,根据保存的请求唯一标识符与工作线程的映射关系确定该工作线程对应的请求唯一标识符,从保存的请求唯一标识符与对应的处理结果的映射关系中获取该请求唯一标识符对应的处理结果。
可选地,所述服务器还包括:
告警单元,用于获取周期内被动唤醒的工作线程的数量,并在所述周期内被动唤醒的工作线程的数量大于预设数值时触发告警。
本发明实施例提供的HTTP同步请求转为异步处理的方法及HTTP同步请求服务器,基于多线程和消息队列技术,通过请求惟一标识符(UUID)标识请求信息、处理结果、线程对象,并利用线程的休眠、中断机制,将HTTP同步请求高效率、低资源消耗地转换为异步信息,相较于现有技术,本实施例中工作线程不再一直处于工作状态,通过线程休眠时长控制HTTP服务器负载和外部应用程序调用HTTP同步请求的等待时长,特别适合高并发HTTP同步服务提供的场景。
附图说明
图1为现有HTTP同步请求转为异步处理的方法的流程示意图;
图2为本发明HTTP同步请求转为异步处理的方法一实施例的流程示意图;
图3为本发明HTTP同步请求接收/转换流程示意图;
图4为本发明处理结果提取/HTTP响应流程示意图;
图5为本发明HTTP同步请求服务器一实施例的结构示意图;
图6为本发明电子设备一实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参看图2,本实施例公开一种HTTP同步请求转为异步处理的方法,包括:
S1、HTTP同步请求服务器接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,在该工作线程启动后,该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;
S2、所述HTTP同步请求服务器若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;
S3、在被中止休眠的工作线程醒来后,该工作线程获取其对应的处理结果,并将所述处理结果返回给所述HTTP同步请求服务器,由所述HTTP同步请求服务器将接收的处理结果反馈给对应的外部应用程序。
本发明实施例提供的HTTP同步请求转为异步处理的方法,基于多线程和消息队列技术,通过请求惟一标识符(UUID)标识请求信息、处理结果、线程对象,并利用线程的休眠、中断机制,将HTTP同步请求高效率、低资源消耗地转换为异步信息,相较于现有技术,本实施例中工作线程不再一直处于工作状态,通过线程休眠时长控制HTTP服务器负载和外部应用程序调用HTTP同步请求的等待时长,特别适合高并发HTTP同步服务提供的场景。
下面对本发明HTTP同步请求转为异步处理的方法的过程进行详细说明。
针对互联网领域客户基数大、并发请求集中的特点,本解决方案使用多线程、消息队列技术,实现高并发、高效率地将HTTP同步请求转换为异步处理,并同时实现对外部应用程序(调用方)的超时保护机制。
HTTP同步请求转为异步处理的方法分为HTTP同步请求接收/转换和处理结果提取/HTTP响应两部分。
HTTP同步请求接收/转换流程如图3所示,HTTP同步请求接收/转换的步骤如下:
步骤1、HTTP应用服务器通过多线程方式向外提供服务,对于每个收到的请求,分配给一个独立的工作线程处理,并启动该工作线程;
步骤2、每个工作线程启动后,意味着本线程将独立处理当前请求,在当前请求处理结束之前,本线程不会处理其他请求。每个请求的处理步骤如下:
1)为当前请求生成请求惟一标识符(UUID);
2)通过二维数组或者映射(MAP)保存请求惟一标识符(UUID)与本线程对象的映射关系;
3)将请求惟一标识符(UUID)附加到原始请求中,然后将请求序列化为消息之后,通过异步消息队列(先进先出模式)传递给后端服务处理程序;
4)指定当前线程休眠一段时间,休眠时长取决于外部调用程序所能接受的请求超时时长,一般设置休眠时长=请求超时时长-预设的时长,比如,对于高并发访问的场景,可以设置预设的时长为0.2秒,当然此设置也可以根据需要进行修改,此处不再赘述。
处理结果提取/HTTP响应流程如图4所示,异步处理结果转化为同步HTTP响应的步骤如下:
步骤1、正常情况下,后端服务处理程序在完成异步请求消息的处理后,将处理结果序列化后放入回复消息队列(先进先出模式);
步骤2、在HTTP应用服务器中,启动单独的线程,循环从回复消息队列中读取处理结果,并从处理结果中解析出请求所附加的请求惟一标识符。
解析出请求所附加的请求惟一标识符后,处理方法如下:
步骤201:通过二维数组或者映射(MAP)保存请求惟一标识符(UUID)与处理结果对象的映射关系;
步骤202:根据请求惟一标识符(UUID)从之前保存的二维数据或者MAP获取原来处理该请求的线程对象;
步骤203:调用所获取线程对象的中断接口,中止线程休眠;
步骤3、异常情况下,如后端服务处理程序未能及时回复处理结果,则之前休眠的处理线程不会被自动唤醒,到达休眠时长将自动醒来。无论请求处理线程是被中断醒来还是自动醒来,线程变为激活状态后,随即根据保存的请求唯一标识符与工作线程的映射关系确定该线程对应的请求唯一标识符,根据请求惟一标识符(UUID)从二维数组或者映射(MAP)获取处理结果;
步骤4、如果根据请求惟一标识符(UUID)获取处理结果成功,则原处理线程同步返回处理结果,如果未获取到处理结果,则说明后端服务处理程序处理超时或者异常,由原处理线程同步返回错误指令。
利用线程休眠时长的方法可以控制HTTP同步服务器的并发负载,通过合理设置处理线程的休眠时长,可以确保外部应用程序调用同步请求后的等待时长处于可接受的区间。
当然,也可以利用线程的休眠与唤醒机制识别请求处理是否超时,即通过工作线程是被动唤醒还是主动醒来判断后端处理服务是否在规定时间内完成,并统计在周期内的服务处理超时数量,作为后端服务处理的性能指标,并在周期内服务超时数量超过指定阈值时触发系统告警,比如若3分钟内服务超时数量超过100个则触发告警。
参看图5,本实施例公开一种HTTP同步请求服务器,包括:
分配单元1,用于接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,以使该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;
本实施例中,所述分配单元,具体可以用于启动该工作线程,以使该工作线程为对应的HTTP同步请求生成请求唯一标识符,保存所述请求唯一标识符与该工作线程的映射关系,将所述请求唯一标识符附加到所述对应的HTTP同步请求中,并将得到的HTTP同步请求序列化为消息。
中止单元2,用于若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,以使该工作线程在醒来后,获取其对应的处理结果,并将所述处理结果返回给反馈单元,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;
具体地,所述中止单元,可以用于:
根据保存的请求唯一标识符与工作线程的映射关系确定对应该请求唯一标识符的工作线程;
调用所确定的工作线程的中断接口,中止该工作线程休眠。
反馈单元3,用于将接收的处理结果反馈给对应的外部应用程序。
在前述装置实施例的基础上,所述中止单元,还可以用于:
保存该请求唯一标识符与对应的处理结果的映射关系;
其中,所述中止单元,具体可以用于中止该请求唯一标识符对应的工作线程休眠,以使该工作线程在醒来后,根据保存的请求唯一标识符与工作线程的映射关系确定该工作线程对应的请求唯一标识符,从保存的请求唯一标识符与对应的处理结果的映射关系中获取该请求唯一标识符对应的处理结果。
在前述装置实施例的基础上,所述服务器还可以包括如下的图中未示出的结构:
告警单元,用于获取周期内被动唤醒的工作线程的数量,并在所述周期内被动唤醒的工作线程的数量大于预设数值时触发告警。
上述服务器可以执行前述任意一种HTTP同步请求转为异步处理的方法,因而可以解决相同的技术问题,达到同样的技术效果。
综上,本发明实施例提供的HTTP同步请求服务器,基于多线程和消息队列技术,通过请求惟一标识符(UUID)标识请求信息、处理结果、线程对象,并利用线程的休眠、中断机制,将HTTP同步请求高效率、低资源消耗地转换为异步信息,相较于现有技术,本实施例中工作线程不再一直处于工作状态,通过线程休眠时长控制HTTP服务器负载和外部应用程序调用HTTP同步请求的等待时长,特别适合高并发HTTP同步服务提供的场景。
图6示出了本发明实施例提供的一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括:至少一个处理器101、至少一个存储器102和总线103;其中,
所述处理器101、存储器102通过所述总线103完成相互间的通信;
所述存储器102存储有可被所述处理器101执行的程序指令,所述处理器101可以调用所述程序指令,以执行上述方法实施例所提供的方法,例如包括:HTTP同步请求服务器接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,在该工作线程启动后,该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;所述HTTP同步请求服务器若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;在被中止休眠的工作线程醒来后,该工作线程获取其对应的处理结果,并将所述处理结果返回给所述HTTP同步请求服务器,由所述HTTP同步请求服务器将接收的处理结果反馈给对应的外部应用程序。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述方法实施例所提供的方法,例如包括:HTTP同步请求服务器接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,在该工作线程启动后,该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;所述HTTP同步请求服务器若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;在被中止休眠的工作线程醒来后,该工作线程获取其对应的处理结果,并将所述处理结果返回给所述HTTP同步请求服务器,由所述HTTP同步请求服务器将接收的处理结果反馈给对应的外部应用程序。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述方法实施例所提供的方法,例如包括:HTTP同步请求服务器接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,在该工作线程启动后,该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;所述HTTP同步请求服务器若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;在被中止休眠的工作线程醒来后,该工作线程获取其对应的处理结果,并将所述处理结果返回给所述HTTP同步请求服务器,由所述HTTP同步请求服务器将接收的处理结果反馈给对应的外部应用程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。本发明并不局限于任何单一的方面,也不局限于任何单一的实施例,也不局限于这些方面和/或实施例的任意组合和/或置换。而且,可以单独使用本发明的每个方面和/或实施例或者与一个或更多其他方面和/或其实施例结合使用。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (10)
1.一种HTTP同步请求转为异步处理的方法,其特征在于,包括:
HTTP同步请求服务器接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,在该工作线程启动后,该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;
所述HTTP同步请求服务器若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;
在被中止休眠的工作线程醒来后,该工作线程获取其对应的处理结果,并将所述处理结果返回给所述HTTP同步请求服务器,由所述HTTP同步请求服务器将接收的处理结果反馈给对应的外部应用程序。
2.根据权利要求1所述的方法,其特征在于,所述该工作线程将对应的HTTP同步请求序列化为消息,包括:
为对应的HTTP同步请求生成请求唯一标识符,并保存所述请求唯一标识符与该工作线程的映射关系;
将所述请求唯一标识符附加到所述对应的HTTP同步请求中,并将得到的HTTP同步请求序列化为消息。
3.根据权利要求2所述的方法,其特征在于,所述中止该请求唯一标识符对应的工作线程休眠,包括:
根据保存的请求唯一标识符与工作线程的映射关系确定对应该请求唯一标识符的工作线程;
调用所确定的工作线程的中断接口,中止该工作线程休眠。
4.根据权利要求3所述的方法,其特征在于,所述中止该请求唯一标识符对应的工作线程休眠,还包括:
保存该请求唯一标识符与对应的处理结果的映射关系;
其中,所述该工作线程获取其对应的处理结果,包括:
根据保存的请求唯一标识符与工作线程的映射关系确定该工作线程对应的请求唯一标识符;
从保存的请求唯一标识符与对应的处理结果的映射关系中获取该请求唯一标识符对应的处理结果。
5.根据权利要求1所述的方法,其特征在于,还包括:
所述HTTP同步请求服务器获取周期内被动唤醒的工作线程的数量,并在所述周期内被动唤醒的工作线程的数量大于预设数值时触发告警。
6.一种HTTP同步请求服务器,其特征在于,包括:
分配单元,用于接收外部应用程序发送的HTTP同步请求,对于每一个HTTP同步请求,为该HTTP同步请求分配一个预先建立的工作线程,启动该工作线程,以使该工作线程将对应的HTTP同步请求序列化为消息,将该消息放入请求消息队列,并指定自身从当前时刻开始休眠预设时间,其中,每一条消息包含用于唯一标识对应的HTTP同步请求的请求唯一标识符,所述请求消息队列为先进先出队列;
中止单元,用于若检测到回复消息队列中的处理结果,则读取所述回复消息队列中的处理结果,从所述处理结果中解析出所述处理结果对应的HTTP同步请求的请求唯一标识符,中止该请求唯一标识符对应的工作线程休眠,以使该工作线程在醒来后,获取其对应的处理结果,并将所述处理结果返回给反馈单元,其中,所述回复消息队列中存储有后端服务处理程序先对所述请求消息队列中的消息进行处理,再对处理得到的结果序列化后的结果,所述回复消息队列中的处理结果包含对应的HTTP同步请求的请求唯一标识符,所述回复消息队列为先进先出队列;
反馈单元,用于将接收的处理结果反馈给对应的外部应用程序。
7.根据权利要求6所述的服务器,其特征在于,所述分配单元,具体用于启动该工作线程,以使该工作线程为对应的HTTP同步请求生成请求唯一标识符,保存所述请求唯一标识符与该工作线程的映射关系,将所述请求唯一标识符附加到所述对应的HTTP同步请求中,并将得到的HTTP同步请求序列化为消息。
8.根据权利要求7所述的服务器,其特征在于,所述中止单元,具体用于:
根据保存的请求唯一标识符与工作线程的映射关系确定对应该请求唯一标识符的工作线程;
调用所确定的工作线程的中断接口,中止该工作线程休眠。
9.根据权利要求8所述的服务器,其特征在于,所述中止单元,还用于:
保存该请求唯一标识符与对应的处理结果的映射关系;
其中,所述中止单元,具体用于中止该请求唯一标识符对应的工作线程休眠,以使该工作线程在醒来后,根据保存的请求唯一标识符与工作线程的映射关系确定该工作线程对应的请求唯一标识符,从保存的请求唯一标识符与对应的处理结果的映射关系中获取该请求唯一标识符对应的处理结果。
10.根据权利要求6所述的服务器,其特征在于,还包括:
告警单元,用于获取周期内被动唤醒的工作线程的数量,并在所述周期内被动唤醒的工作线程的数量大于预设数值时触发告警。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710037894.5A CN108319508B (zh) | 2017-01-18 | 2017-01-18 | Http同步请求转为异步处理的方法及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710037894.5A CN108319508B (zh) | 2017-01-18 | 2017-01-18 | Http同步请求转为异步处理的方法及服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108319508A true CN108319508A (zh) | 2018-07-24 |
CN108319508B CN108319508B (zh) | 2020-10-20 |
Family
ID=62892903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710037894.5A Active CN108319508B (zh) | 2017-01-18 | 2017-01-18 | Http同步请求转为异步处理的方法及服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108319508B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150988A (zh) * | 2018-07-27 | 2019-01-04 | 上海盛付通电子支付服务有限公司 | 一种请求处理方法及其服务器 |
CN109639836A (zh) * | 2019-01-28 | 2019-04-16 | 上海易点时空网络有限公司 | 用于社区的内容发布处理方法、客户端、服务器 |
CN109862091A (zh) * | 2019-01-28 | 2019-06-07 | 上海易点时空网络有限公司 | 用于社区的内容发布处理方法及装置 |
CN110673960A (zh) * | 2019-08-22 | 2020-01-10 | 中国平安财产保险股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN111770043A (zh) * | 2019-04-01 | 2020-10-13 | 网易(杭州)网络有限公司 | 游戏数据通信方法、装置、存储介质及电子设备 |
CN112685190A (zh) * | 2020-12-30 | 2021-04-20 | 平安普惠企业管理有限公司 | 基于消息队列的同步调用方法、系统及计算机设备 |
CN113641760A (zh) * | 2021-08-16 | 2021-11-12 | 付睿智 | 数据同步方法及装置 |
WO2022001723A1 (zh) * | 2020-06-30 | 2022-01-06 | 华为技术有限公司 | 一种数据同步方法及装置 |
CN114356825A (zh) * | 2021-12-17 | 2022-04-15 | 郑州信大捷安信息技术股份有限公司 | 一种基于芯片的spi双路通信方法和系统 |
CN114510299A (zh) * | 2020-11-16 | 2022-05-17 | 北京有限元科技有限公司 | 处理人工智能业务的方法、装置以及存储介质 |
CN114553891A (zh) * | 2022-01-27 | 2022-05-27 | 深圳金融电子结算中心有限公司 | 同步请求转异步处理的方法、系统、终端设备及存储介质 |
CN116595099A (zh) * | 2023-05-22 | 2023-08-15 | 北京言子初科技有限公司 | 高并发数据异步处理方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0349340A (ja) * | 1989-07-18 | 1991-03-04 | Oki Electric Ind Co Ltd | 同期・非同期転送モード複合通信方式 |
US6117181A (en) * | 1996-03-22 | 2000-09-12 | Sun Microsystems, Inc. | Synchronization mechanism for distributed hardware simulation |
CN101122870A (zh) * | 2007-09-30 | 2008-02-13 | 金蝶软件(中国)有限公司 | 一种线程唤醒控制方法和系统 |
CN103197968A (zh) * | 2013-03-18 | 2013-07-10 | 焦点科技股份有限公司 | 一种融合同步异步特点的线程池处理方法及系统 |
CN103853714A (zh) * | 2012-11-28 | 2014-06-11 | 中国移动通信集团河南有限公司 | 一种数据处理方法和装置 |
CN105159774A (zh) * | 2015-07-08 | 2015-12-16 | 清华大学 | 一种api请求保序处理方法及系统 |
CN106201676A (zh) * | 2016-06-28 | 2016-12-07 | 浪潮软件集团有限公司 | 一种任务分配方法及装置 |
-
2017
- 2017-01-18 CN CN201710037894.5A patent/CN108319508B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0349340A (ja) * | 1989-07-18 | 1991-03-04 | Oki Electric Ind Co Ltd | 同期・非同期転送モード複合通信方式 |
US6117181A (en) * | 1996-03-22 | 2000-09-12 | Sun Microsystems, Inc. | Synchronization mechanism for distributed hardware simulation |
CN101122870A (zh) * | 2007-09-30 | 2008-02-13 | 金蝶软件(中国)有限公司 | 一种线程唤醒控制方法和系统 |
CN103853714A (zh) * | 2012-11-28 | 2014-06-11 | 中国移动通信集团河南有限公司 | 一种数据处理方法和装置 |
CN103197968A (zh) * | 2013-03-18 | 2013-07-10 | 焦点科技股份有限公司 | 一种融合同步异步特点的线程池处理方法及系统 |
CN105159774A (zh) * | 2015-07-08 | 2015-12-16 | 清华大学 | 一种api请求保序处理方法及系统 |
CN106201676A (zh) * | 2016-06-28 | 2016-12-07 | 浪潮软件集团有限公司 | 一种任务分配方法及装置 |
Non-Patent Citations (3)
Title |
---|
JIYANG YU ETAL: "A Thread-Aware Adaptive Data Prefetcher", 《ICCD 2014》 * |
SONG WU ETAL: "Optimization strategies for inter-thread synchronization overhead on NUMA machine", 《2015 IEEE 34TH INTERNATIONAL PERFORMANCE COMPUTING AND COMMUNICATIONS CONFERENCE (IPCCC)》 * |
李飞: "Web服务异步调用的研究与实现", 《微机发展》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109150988A (zh) * | 2018-07-27 | 2019-01-04 | 上海盛付通电子支付服务有限公司 | 一种请求处理方法及其服务器 |
CN109639836A (zh) * | 2019-01-28 | 2019-04-16 | 上海易点时空网络有限公司 | 用于社区的内容发布处理方法、客户端、服务器 |
CN109862091A (zh) * | 2019-01-28 | 2019-06-07 | 上海易点时空网络有限公司 | 用于社区的内容发布处理方法及装置 |
CN109862091B (zh) * | 2019-01-28 | 2021-11-09 | 上海易点时空网络有限公司 | 用于社区的内容发布处理方法及装置 |
CN109639836B (zh) * | 2019-01-28 | 2022-02-01 | 上海易点时空网络有限公司 | 用于社区的内容发布处理方法、客户端、服务器 |
CN111770043A (zh) * | 2019-04-01 | 2020-10-13 | 网易(杭州)网络有限公司 | 游戏数据通信方法、装置、存储介质及电子设备 |
CN110673960A (zh) * | 2019-08-22 | 2020-01-10 | 中国平安财产保险股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
CN110673960B (zh) * | 2019-08-22 | 2022-11-29 | 中国平安财产保险股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
WO2022001723A1 (zh) * | 2020-06-30 | 2022-01-06 | 华为技术有限公司 | 一种数据同步方法及装置 |
CN114510299A (zh) * | 2020-11-16 | 2022-05-17 | 北京有限元科技有限公司 | 处理人工智能业务的方法、装置以及存储介质 |
CN112685190A (zh) * | 2020-12-30 | 2021-04-20 | 平安普惠企业管理有限公司 | 基于消息队列的同步调用方法、系统及计算机设备 |
CN113641760A (zh) * | 2021-08-16 | 2021-11-12 | 付睿智 | 数据同步方法及装置 |
CN114356825A (zh) * | 2021-12-17 | 2022-04-15 | 郑州信大捷安信息技术股份有限公司 | 一种基于芯片的spi双路通信方法和系统 |
CN114356825B (zh) * | 2021-12-17 | 2024-02-13 | 郑州信大捷安信息技术股份有限公司 | 一种基于芯片的spi双路通信方法和系统 |
CN114553891A (zh) * | 2022-01-27 | 2022-05-27 | 深圳金融电子结算中心有限公司 | 同步请求转异步处理的方法、系统、终端设备及存储介质 |
CN114553891B (zh) * | 2022-01-27 | 2024-03-15 | 深圳金融电子结算中心有限公司 | 同步请求转异步处理的方法、系统、终端设备及存储介质 |
CN116595099A (zh) * | 2023-05-22 | 2023-08-15 | 北京言子初科技有限公司 | 高并发数据异步处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108319508B (zh) | 2020-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108319508B (zh) | Http同步请求转为异步处理的方法及服务器 | |
CN105468450A (zh) | 任务调度方法及系统 | |
CN106406983B (zh) | 一种集群中的任务调度方法及装置 | |
CN106547612B (zh) | 一种多任务处理方法及装置 | |
EP3335120B1 (en) | Method and system for resource scheduling | |
EP3376379A1 (en) | Task management methods and system, and computer storage medium | |
CN106959895B (zh) | 快速释放线程的资源调度方法和系统 | |
US9875145B2 (en) | Load based dynamic resource sets | |
CN112087503A (zh) | 集群任务调度方法、系统、计算机和计算机可读存储介质 | |
CN109710416B (zh) | 资源调度方法及装置 | |
CN106897299B (zh) | 一种数据库访问方法及装置 | |
CN112783659A (zh) | 一种资源分配方法、装置、计算机设备及存储介质 | |
CN115361451B (zh) | 一种网络通信并行处理方法及系统 | |
CN112860387A (zh) | 分布式任务调度方法、装置、计算机设备及存储介质 | |
CN111428900A (zh) | 会议室管理方法、装置、电子设备及存储介质 | |
CN107291557B (zh) | 一种业务处理方法和装置 | |
CN104408110A (zh) | 数据请求的方法、装置及系统 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN109710679B (zh) | 数据抽取方法及装置 | |
CN107729207B (zh) | 一种应用程序主线程的监控方法及装置 | |
CN109819674B (zh) | 计算机存储介质、嵌入式调度方法及系统 | |
CN111736961B (zh) | 虚拟机的释放方法及装置、存储介质及电子设备 | |
CN117573355A (zh) | 任务处理方法、装置、电子设备以及存储介质 | |
CN111597056A (zh) | 一种分布式调度方法、系统、存储介质和设备 | |
CN115309507B (zh) | 一种cpu资源占用率的计算方法、装置、设备及介质 |
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 |