CN114553891B - 同步请求转异步处理的方法、***、终端设备及存储介质 - Google Patents
同步请求转异步处理的方法、***、终端设备及存储介质 Download PDFInfo
- Publication number
- CN114553891B CN114553891B CN202210099998.XA CN202210099998A CN114553891B CN 114553891 B CN114553891 B CN 114553891B CN 202210099998 A CN202210099998 A CN 202210099998A CN 114553891 B CN114553891 B CN 114553891B
- Authority
- CN
- China
- Prior art keywords
- request
- asynchronous
- result
- synchronous
- processing
- 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
- 230000001360 synchronised effect Effects 0.000 title claims abstract description 304
- 238000012545 processing Methods 0.000 title claims abstract description 125
- 238000000034 method Methods 0.000 title claims abstract description 94
- 230000002618 waking effect Effects 0.000 claims abstract description 19
- 230000000977 initiatory effect Effects 0.000 claims abstract description 13
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000000903 blocking effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 abstract description 24
- 230000008569 process Effects 0.000 description 33
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000013461 design Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- 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/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- 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]
-
- 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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种同步请求转异步处理的方法、***、终端设备及存储介质。该方法包括:接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求;对所述异步请求进行异步处理,得到异步结果;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。本发明提高了同步请求转换为异步处理的效率,提高了请求响应速度。
Description
技术领域
本发明涉及互联网信息技术领域,尤其涉及一种同步请求转异步处理的方法、***、终端设备及存储介质。
背景技术
在分布式集群的运行环境中,***之间通信采用消息异步处理的情况下,外部***交易需要同步返回交易的处理结果,因此,需要定时轮询消息处理结果。在现有轮询的机制下,CPU(central processing unit,中央处理器)每隔1s就需要查找处理结果,虽然,交易可能只需要10ms就处理完毕,但是,交易结果可能1s后才能返回,造成用户无法及时获取交易结果的问题。
发明内容
本发明实施例的主要目的在于提供一种同步请求转异步处理的方法、***、终端设备及存储介质,实现同步请求高效率的转换为异步处理,及时返回处理结果,提高了请求响应速度。
为实现上述目的,本发明实施例提供一种同步请求转异步处理的方法,所述同步请求转异步处理的方法包括:
接收同步请求,并对所述同步请求申请闭锁;
通过所述同步请求的内容,发起异步请求;
根据所述闭锁,挂起所述同步请求;
对所述异步请求进行异步处理,得到异步结果;
基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;
基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。
可选地,所述对所述同步请求申请闭锁的步骤之后包括:
对所述同步请求分配请求身份标识号ID;
基于所述异步结果的请求ID、闭锁,唤醒所述异步结果对应的同步请求。
可选地,所述接收同步请求的步骤之前包括:
开启结果接收服务;
获取所述结果接收服务的远程方法调用RMI地址;
根据所述异步结果的请求ID,获取所述异步结果对应的RMI地址;
根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找所述异步结果对应的闭锁,以唤醒所述异步结果对应的同步请求。
可选地,所述根据所述异步结果的请求ID,获取所述异步结果对应的RMI地址的步骤之后包括:
将所述异步结果作为所述异步结果的请求ID对应的哈希Hash值,更新至哈希地图HashMap表;
根据所述异步结果对应的同步请求的请求ID,从所述HashMap表中获取所述异步请求的异步结果,作为所述同步结果。
可选地,所述获取所述结果接收服务的远程方法调用RMI地址的步骤之后包括:
将所述RMI地址、请求ID保存至同步结果服务缓存中心;
根据所述异步结果的请求ID,从所述同步结果服务缓存中心获取所述异步结果对应的RMI地址。
可选地,所述对所述同步请求申请闭锁的步骤之后包括:
对所述闭锁设置超时时间,并挂起所述闭锁;
若所述闭锁在所述超时时间内未被唤醒,则返回提示信息。
可选地,所述根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找所述异步结果对应的闭锁,以唤醒所述异步结果对应的同步请求的步骤包括:
根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找并唤醒所述异步结果对应的闭锁;
若所述异步结果对应的闭锁被唤醒,则通过所述异步结果对应的闭锁唤醒所述异步结果对应的同步请求。
此外,为实现上述目的,本发明还提供一种同步请求转异步处理的***,所述***包括:
请求接收模块,用于接收同步请求,并对所述同步请求申请闭锁;
请求转换模块,用于通过所述同步请求的内容,发起异步请求;
请求挂起模块,用于根据所述闭锁,挂起所述同步请求;
异步处理模块,用于对所述异步请求进行异步处理,得到异步结果;
请求唤起模块,用于基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;
请求返回模块,用于基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。
此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的同步请求转异步处理的方法,所述同步请求转异步处理的程序被所述处理器执行时实现如上所述的同步请求转异步处理的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有同步请求转异步处理的程序,所述同步请求转异步处理的程序被处理器执行时实现如上所述的同步请求转异步处理的方法的步骤。
本发明实施例提出的同步请求转异步处理的方法、***、终端设备及存储介质,通过接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求,以基于闭锁,及时对同步请求进行处理并返回结果;对所述异步请求进行异步处理,得到异步结果,提高了同步请求的响应速度;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果,实现了即使在高并发的场景下,仍然可以高效率的将同步请求转换为异步并发处理,及时返回处理结果,提高了用户体验。
附图说明
图1为本发明同步请求转异步处理的装置所属终端设备的功能模块示意图;
图2为本发明同步请求转异步处理的方法第一实施例的流程示意图;
图3为本发明同步请求转异步处理的方法第二实施例的流程示意图;
图4为本发明同步请求转异步处理的方法的第一场景的示意图;
图5为本发明同步请求转异步处理的***的功能模块示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求;对所述异步请求进行异步处理,得到异步结果;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。
本发明实施例涉及的技术术语:
JMS:(Java Messaging Service,Java消息服务),是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式***中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
同步请求:在服务器处理同步请求的过程中,浏览器会处于等待的状态,服务器处理完请求,把数据响应给浏览器并覆盖浏览器内存中原有的数据,浏览器重新加载页面并展示服务器响应的数据。
异步请求:浏览器把请求交给代理对象—XMLHttpRequest(绝大多数浏览器都内置了这个对象),由代理对象向服务器发起请求,接收、解析服务器响应的数据,并把数据更新到浏览器指定的控件上。从而实现了页面数据的局部刷新。
http:(Hyper Text Transfer Protocol,超文本传输协议),是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
Socket:套接字(Socket),是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。
Webservice:Web Service是一个平***立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。
ID:(Identity document,身份标识号),是身份证标识号、账号、唯一编码、专属号码、工业设计、国家简称、法律词汇、通用账户、译码器、软件公司等各类专有词汇的缩写。
IP:(Internet Protocol,网际互连协议),是TCP/IP体系中的网络层协议。设计IP的目的是提高网络的可扩展性:一是解决互联网问题,实现大规模、异构网络的互联互通;二是分割顶层网络应用和底层网络技术之间的耦合关系,以利于两者的独立发展。根据端到端的设计原则,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。
Redis:(Remote Dictionary Server,远程字典服务),是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
CountDownLatch:一般被称作"计数器",当数量达到了某个点之后计数结束,才能继续往下走。可以用作流程控制之类的作用,大流程分成多个子流程,然后大流程在子流程全部结束之前不动,子流程全部结束后大流程开始操作。
Hash表:(Hash table,哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(key)为哈希(Hash)函数。
CPU:(central processing unit,中央处理器),作为计算机***的运算和控制核心,是信息处理、程序运行的最终执行单元。
RMI:(Remote Method Invocation,远程方法调用),是Java的一组拥护开发分布式应用程序的API。RMI使用Java语言接口定义了远程对象,它集合了Java序列化和Java远程方法协议(Java Remote Method Protocol)。简单地说,这样使原先的程序在同一操作***的方法调用,变成了不同操作***之间程序的方法调用,由于J2EE是分布式程序平台,它以RMI机制实现程序组件在不同操作***之间的通信。比如,一个EJB可以通过RMI调用Web上另一台机器上的EJB远程方法。
MQ:(Message Queue,消息队列),RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
在互联网信息交互过程中,经常会涉及通过HTTP协议,向其他***提供服务请求的场景,存在同步和异步两种方式。针对同步HTTP请求,服务器端处理、响应请求的过程也存在同步和异步两种方式。
针对同步HTTP服务请求在服务器端需要异步处理的情况,处理方法如下:首先,外部应用程序向HTTP服务器发送同步请求;HTTP服务器接收到该同步请求后,将其放入请求消息队列,并为该请求分配一个线程;之后,进入服务请求处理过程。对于服务请求处理过程,则涉及循环从请求消息队列中读取每条请求,对该条请求进行处理,将处理结果放入回复消息队列,并由前述线程从回复消息队列中读取处理结果返回给HTTP服务器,由HTTP服务器将其反馈给对应的外部应用程序。
从整个处理过程可知,HTTP同步请求转为异步处理的方法存在如下问题:HTTP同步服务器分配的线程一直处于工作状态,HTTP同步请求服务器需要等待所述线程的反馈,使得HTTP同步请求服务器端存在大量的请求被阻塞,导致服务器端内存、CPU资源占用较高,无法及时返回响应结果,降低了用户体验度。
本发明提供一种解决方案,在分布式集群***下,实现同步请求高效率的转换为异步处理,及时返回交易结果,提高了请求响应速度、用户体验。
具体地,参照图1,图1是本发明同步请求转异步处理的装置所属终端设备的功能模块示意图。该同步请求转异步处理的装置可以为独立于终端设备的、能够进行图片处理、网络模型训练的装置,其可以通过硬件或软件的形式承载于终端设备上。该终端设备可以为手机、平板电脑等具有数据处理功能的智能移动终端,还可以为具有数据处理功能的固定终端设备或服务器等。
在本实施例中,该同步请求转异步处理的装置所属终端设备至少包括输出模块110、处理器120、存储器130以及通信模块140。
存储器130中存储有操作方法以及同步请求转异步处理的程序;输出模块110可为显示屏等。通信模块140可以包括WIFI模块、移动通信模块以及蓝牙模块等,通过通信模块140与外部设备或服务器进行通信。
其中,存储器130中的同步请求转异步处理的程序被处理器执行时实现以下步骤:
接收同步请求,并对所述同步请求申请闭锁;
通过所述同步请求的内容,发起异步请求;
根据所述闭锁,挂起所述同步请求;
对所述异步请求进行异步处理,得到异步结果;
基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;
基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。
进一步地,存储器130中的同步请求转异步处理的程序被处理器执行时还实现以下步骤:
对所述同步请求分配请求身份标识号ID;
基于所述异步结果的请求ID、闭锁,唤醒所述异步结果对应的同步请求。
进一步地,存储器130中的同步请求转异步处理的程序被处理器执行时还实现以下步骤:
开启结果接收服务;
获取所述结果接收服务的远程方法调用RMI地址;
根据所述异步结果的请求ID,获取所述异步结果对应的RMI地址;
根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找所述异步结果对应的闭锁,以唤醒所述异步结果对应的同步请求。
进一步地,存储器130中的同步请求转异步处理的程序被处理器执行时还实现以下步骤:
将所述异步结果作为所述异步结果的请求ID对应的哈希Hash值,更新至哈希地图HashMap表;
根据所述异步结果对应的同步请求的请求ID,从所述HashMap表中获取所述异步请求的异步结果,作为所述同步结果。
进一步地,存储器130中的同步请求转异步处理的程序被处理器执行时还实现以下步骤:
将所述RMI地址、请求ID保存至同步结果服务缓存中心;
根据所述异步结果的请求ID,从所述同步结果服务缓存中心获取所述异步结果对应的RMI地址。
进一步地,存储器130中的同步请求转异步处理的程序被处理器执行时还实现以下步骤:
对所述闭锁设置超时时间,并挂起所述闭锁;
若所述闭锁在所述超时时间内未被唤醒,则返回提示信息。
进一步地,存储器130中的同步请求转异步处理的程序被处理器执行时还实现以下步骤:
根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找并唤醒所述异步结果对应的闭锁;
若所述异步结果对应的闭锁被唤醒,则通过所述异步结果对应的闭锁唤醒所述异步结果对应的同步请求。
本实施例通过上述方案,具体通过接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求;对所述异步请求进行异步处理,得到异步结果;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。本发明提高了同步请求转换为异步处理的效率,及时返回处理结果,提高了请求响应速度和用户体验。
基于上述终端设备架构但不限于上述架构,提出本发明方法实施例。
参照图2,图2为本发明同步请求转异步处理的方法第一实施例的流程示意图。所述同步请求转异步处理的方法包括:
步骤S101,接收同步请求,并对所述同步请求申请闭锁。
步骤S102,通过所述同步请求的内容,发起异步请求。
步骤S103,根据所述闭锁,挂起所述同步请求。
本实施例方法的执行主体可以是一种同步请求转异步处理的装置,也可以是一种同步请求转异步处理的终端设备或服务器,本实施例以同步请求转异步处理的装置进行举例,该同步请求转异步处理的装置可以集成在具有数据处理功能的智能手机、平板电脑等终端设备上。
本实施例方案为了提高同步请求转换为异步处理的效率,首先,开启结果接收服务,获取结果接收服务的RMI地址,并将RMI地址保存至同步结果服务缓存中心(Redis);其次,通过同步请求服务集群接收外部应用程序发送的同步请求,并通过同步请求服务集群的服务器为同步请求申请一个闭锁(CountDownLatch),并对闭锁设置一个超时时间,若闭锁在超时时间内未被唤醒,则返回提示信息;再次,将该闭锁缓存到本地HashMap表中;其中,本地HashMap表存储于同步请求服务集群,同步请求服务集群包含至少一个服务器。
具体地,首先,开启结果接收服务,获取结果接收服务的RMI地址,并将RMI地址保存至同步结果服务缓存中心(Redis),其中,RMI地址包括IP、端口、服务名。
由此,通过获取结果接收服务的RMI地址,以便后续为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,进而不能及时返回结果的问题,提高了请求响应速度和用户体验。
进一步地,通过http、Socket、webservice等同步服务集群,接收外部应用程序发送的同步请求,并通过http、Socket、webservice等同步请求服务集群的服务器为同步请求申请一个闭锁(CountDownLatch),并对闭锁设置一个超时时间。若闭锁在超时时间内未被唤醒,则返回提示信息,其中,提示信息可以为:结果未知,请稍后请求ID查询处理结果。需要说明的是,提示信息可根据客户的实际需求进行修改设置,本实施例对此不做具体地限定。
进一步地,将该闭锁缓存到本地HashMap表中;其中,本地HashMap表存储于同步请求服务集群。
由此,通过为同步请求设置闭锁,解决了同步线程需要定时轮询异步结果从而占用CPU资源,进而不能及时返回结果的问题;若闭锁在超时时间内未被唤醒,则返回提示信息,避免线程获取不到结果,一直等待下去。实现在高并发的场景下,同步请求高效率的转换为异步并发处理,提高了请求响应速度和用户体验。
需要说明的是,超时时间可根据实际情况进行设置,本实施例对此不作具体地限定。
进一步地,通过同步请求的内容,发起MQ请求(异步请求)。
具体地,在同步请求服务集群,通过同步请求的内容,发起MQ请求至JMS消息服务集群,以对同步请求进行异步处理。
若同步请求发起MQ请求失败,则返回信息:处理失败。
若同步请求发起MQ请求成功,则通过闭锁将当前接收到的同步请求挂起,并做同步等待。
步骤S104,对所述异步请求进行异步处理,得到异步结果。
步骤S105,基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求。
步骤S106,基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。
在本实施例中,通过JMS消息服务集群的消息服务器,对MQ请求进行处理,得到异步结果,其中,JMS消息服务集群包括至少1个消息服务器。
具体地,在同步请求服务集群,通过同步请求发起MQ请求至JMS消息服务集群,以将同步请求转换为异步请求,进而对同步请求进行异步处理。
进一步地,通过JMS消息服务集群的消息服务器,对MQ请求进行处理,得到异步结果,其中,JMS消息服务集群包括至少1个消息服务器。
由此,通过将同步请求转为MQ请求,完成对同步请求的异步处理,进而及时返回结果的问题,提高了请求响应速度和用户体验。
进一步地,当同步请求服务集群的某台服务器接收到异步结果后,查询异步结果对应的远程服务信息,并将异步结果保存至本地Hash表。
进一步地,根据异步结果对应的RMI地址,唤醒同步请求;基于同步请求,在本地Hash表中获取处理结果,得到同步结果,并将同步结果返回至应用程序。
由此,通过将同步请求转为异步JMS处理,同步返回JMS消息的处理结果,并根据远程服务信息为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,无法及时返回结果的问题,提高了请求响应速度和用户体验。
本实施例通过上述方案,具体通过接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求;对所述异步请求进行异步处理,得到异步结果;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。本发明通过将同步请求转为MQ处理,同步返回异步结果,并根据RMI地址为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,无法及时返回结果的问题,提高了请求响应速度和用户体验。
参照图3,图3为本发明同步请求转异步处理的方法第二实施例的流程示意图。基于上述图2所示的实施例,在本实施例中,步骤S101:接收同步请求,并对所述同步请求申请闭锁之后包括:
步骤S107,对所述同步请求分配请求身份标识号ID。
作为一种实施方式,在本实施例中,当同步请求服务集群接收到外部应用程序发送的同步请求时,对同步请求分配唯一的请求ID。
具体地,当同步请求服务集群接收到外部应用程序发送的同步请求时,通过同步请求服务集群的服务器,对于每一个同步请求,分配唯一的请求ID,并将请求ID保存至本地HashMap表、Redis,其中,同步请求服务集群具有至少一个服务器。
由此,通过对同步请求设置请求ID,以便后续根据同步请求的请求ID查询相应的结果服务网址,提高请求的响应速度,提高了用户体验。
步骤S108,基于所述异步结果的请求ID、闭锁,唤醒所述异步结果对应的同步请求。
在本实施例中,当同步请求服务集群接收到异步结果后,基于异步结果的请求ID,在Redis中查找异步结果对应的RMI地址,得到异步结果对应的RMI地址。若查找不到异步结果对应的RMI地址,则记录***异常日志。
进一步地,将异步结果对应的RMI地址发送至同步请求服务集群。
若异步结果对应的RMI地址无法发送至同步请求服务集群,则记录***异常日志。
进一步地,同步请求服务集群的服务器获取到异步处理结果后,通过异步处理结果的请求ID,到本地HashMap表中查找同步请求的闭锁。
进一步地,获取并唤醒同步请求的闭锁,同时把异步结果做为异步请求的请求ID对应的Hash值更新到HashMap表中。
若无法获取同步请求的闭锁,则记录***异常日志。
进一步地,通过闭锁唤醒同步请求。同步请求唤醒后,通过同步请求的请求ID在HashMap中获取异步结果,作为同步结果。如果同步结果存在,则直接返回处理结果。如果同步结果不存在,返回“结果未知,请稍后请求ID查询处理结果”。
由此,通过将同步请求转为异步JMS处理,同步返回异步处理结果,并根据远程服务信息为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,无法及时返回结果的问题,提高了请求响应速度和用户体验。
本实施例通过上述方案,具体通过接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求;对所述异步请求进行异步处理,得到异步结果;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。本发明通过将同步请求转为异步JMS处理,同步返回异步结果,并根据RMI地址为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,无法及时返回结果的问题,提高了请求响应速度和用户体验。
参照图4,图4为本发明同步请求转异步处理的方法的第一场景的示意图。
在本实施例中,首先,开启结果接收服务,获取结果接收服务的RMI地址,并将RMI地址保存至同步结果服务缓存中心(Redis),其中,RMI地址包括IP、端口、服务名。
由此,通过获取结果接收服务的RMI地址,以便后续为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,进而不能及时返回结果的问题,提高了请求响应速度和用户体验。
进一步地,通过http、Socket、webservice等同步服务集群,接收外部应用程序发送的同步请求,并通过http、Socket、webservice等同步请求服务集群的服务器为同步请求申请一个闭锁(CountDownLatch),并对闭锁设置一个超时时间。若闭锁在超时时间内未被唤醒,则返回提示信息,其中,提示信息可以为:结果未知,请稍后请求ID查询处理结果。需要说明的是,提示信息可根据客户的实际需求进行修改设置,本实施例对此不做具体地限定。
进一步地,通过同步请求服务集群的服务器,对于每一个同步请求,分配唯一的请求ID,并将请求ID保存至本地HashMap表、Redis,其中,同步请求服务集群具有至少一个服务器。
由此,通过对同步请求设置请求ID,以便后续根据同步请求的请求ID查询相应的结果服务网址,提高请求的响应速度,提高了用户体验。
进一步地,将该闭锁缓存到本地HashMap表中;其中,本地HashMap表存储于同步请求服务集群。
由此,通过为同步请求设置闭锁,解决了同步线程需要定时轮询异步结果从而占用CPU资源,进而不能及时返回结果的问题;若闭锁在超时时间内未被唤醒,则返回提示信息,避免线程获取不到结果,一直等待下去。实现在高并发的场景下,同步请求高效率的转换为异步并发处理,提高了请求响应速度和用户体验。
需要说明的是,超时时间可根据实际情况进行设置,本实施例对此不作具体地限定。
进一步地,通过同步请求的内容,发起MQ请求(异步请求)。
具体地,在同步请求服务集群,通过同步请求的内容,发起MQ请求至JMS消息服务集群,以对同步请求进行异步处理。
若同步请求发起MQ请求失败,则返回信息:处理失败。
若同步请求发起MQ请求成功,则通过闭锁将当前接收到的同步请求挂起,并做同步等待。
进一步地,通过JMS消息服务集群的消息服务器,对MQ请求进行处理,得到异步结果,其中,JMS消息服务集群包括至少1个消息服务器。
具体地,在同步请求服务集群,通过同步请求发起MQ请求至JMS消息服务集群,以将同步请求转换为异步请求,进而对同步请求进行异步处理。
进一步地,通过JMS消息服务集群的消息服务器,对MQ请求进行处理,得到异步结果,其中,JMS消息服务集群包括至少1个消息服务器。
由此,通过将同步请求转为MQ请求,完成对同步请求的异步处理,进而及时返回结果的问题,提高了请求响应速度和用户体验。
进一步地,当同步请求服务集群接收到异步结果后,基于异步结果的请求ID,在Redis中查找异步结果对应的RMI地址,得到异步结果对应的RMI地址。若查找不到异步结果对应的RMI地址,则记录***异常日志。
进一步地,将异步结果对应的RMI地址发送至同步请求服务集群。
若异步结果对应的RMI地址无法发送至同步请求服务集群,则记录***异常日志。
进一步地,同步请求服务集群的服务器获取到异步处理结果后,通过异步处理结果的请求ID,到本地HashMap表中查找同步请求的闭锁。
进一步地,获取并唤醒同步请求的闭锁,同时把异步结果做为异步请求的请求ID对应的Hash值更新到HashMap表中。
若无法获取同步请求的闭锁,则记录***异常日志。
进一步地,通过闭锁唤醒同步请求。同步请求唤醒后,通过同步请求的请求ID在HashMap中获取异步结果,作为同步结果。如果同步结果存在,则直接返回处理结果。如果同步结果不存在,返回“结果未知,请稍后请求ID查询处理结果”。
由此,通过将同步请求转为异步JMS处理,同步返回异步处理结果,并根据远程服务信息为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,无法及时返回结果的问题,提高了请求响应速度和用户体验。
本实施例通过上述方案,具体通过接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求;对所述异步请求进行异步处理,得到异步结果;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。本发明通过将同步请求转为异步JMS处理,同步返回JMS消息的处理结果,并根据远程服务信息为异步结果选择相应的服务器,解决了同步线程需要定时轮询异步结果从而占用CPU资源,无法及时返回结果的问题,提高了请求响应速度和用户体验。
参照图5,图5为本发明同步请求转异步处理的***的功能模块示意图。同步请求转异步处理的***包括:
请求接收模块10,用于接收同步请求,并对所述同步请求申请闭锁;
请求转换模块20,用于通过所述同步请求的内容,发起异步请求;
请求挂起模块30,用于根据所述闭锁,挂起所述同步请求;
异步处理模块40,用于对所述异步请求进行异步处理,得到异步结果;
请求唤起模块50,用于基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;
请求返回模块60,用于基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。
本实施例实现同步请求转异步处理的原理及实施过程,请参照上述各实施例,在此不再赘述。
此外,本发明实施例还提出一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的同步请求转异步处理的程序,所述同步请求转异步处理的程序被所述处理器执行时实现如上所述的同步请求转异步处理的方法的步骤。
由于本同步请求转异步处理的程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有同步请求转异步处理的程序,所述同步请求转异步处理的程序被处理器执行时实现如上所述的同步请求转异步处理的方法的步骤。
由于本同步请求转异步处理的程序被处理器执行时,采用了前述所有实施例的全部技术方案,因此至少具有前述所有实施例的全部技术方案所带来的所有有益效果,在此不再一一赘述。
相比现有技术,本发明提供的一种同步请求转异步处理的方法、***、终端设备及存储介质,通过接收同步请求,并对所述同步请求申请闭锁;通过所述同步请求的内容,发起异步请求;根据所述闭锁,挂起所述同步请求;对所述异步请求进行异步处理,得到异步结果;基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果。本发明提高了同步请求转换为异步处理的效率,及时返回处理结果,提高了请求响应速度和用户体验。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者方法中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,被控终端,或者网络设备等)执行本发明每个实施例的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (9)
1.一种同步请求转异步处理的方法,其特征在于,所述方法包括如下步骤:
接收同步请求,并对所述同步请求申请闭锁;
通过所述同步请求的内容,发起异步请求;
根据所述闭锁,挂起所述同步请求;
对所述异步请求进行异步处理,得到异步结果;
基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;
基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果;
所述接收同步请求的步骤之前包括:
开启结果接收服务;
获取所述结果接收服务的远程方法调用RMI地址;
所述基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求的步骤包括:
根据所述异步结果的请求ID,获取所述异步结果对应的RMI地址;
根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找所述异步结果对应的闭锁,以唤醒所述异步结果对应的同步请求。
2.根据权利要求1所述的同步请求转异步处理的方法,其特征在于,所述对所述同步请求申请闭锁的步骤之后包括:
对所述同步请求分配请求身份标识号ID。
3.根据权利要求1所述的同步请求转异步处理的方法,其特征在于,所述根据所述异步结果的请求ID,获取所述异步结果对应的RMI地址的步骤之后包括:
将所述异步结果作为所述异步结果的请求ID对应的哈希Hash值,更新至哈希地图HashMap表;
所述基于所述异步结果对应的同步请求,得到同步结果的步骤包括:
根据所述异步结果对应的同步请求的请求ID,从所述HashMap表中获取所述异步请求的异步结果,作为所述同步结果。
4.根据权利要求1所述的同步请求转异步处理的方法,其特征在于,所述获取所述结果接收服务的远程方法调用RMI地址的步骤之后包括:
将所述RMI地址、请求ID保存至同步结果服务缓存中心;
所述根据所述异步结果的请求ID,获取所述异步结果对应的RMI地址的步骤包括:
根据所述异步结果的请求ID,从所述同步结果服务缓存中心获取所述异步结果对应的RMI地址。
5.根据权利要求1所述的同步请求转异步处理的方法,其特征在于,所述对所述同步请求申请闭锁的步骤之后包括:
对所述闭锁设置超时时间,并挂起所述闭锁;
若所述闭锁在所述超时时间内未被唤醒,则返回提示信息。
6.根据权利要求1、5中任一项所述的同步请求转异步处理的方法,其特征在于,所述根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找所述异步结果对应的闭锁,以唤醒所述异步结果对应的同步请求的步骤包括:
根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找并唤醒所述异步结果对应的闭锁;
若所述异步结果对应的闭锁被唤醒,则通过所述异步结果对应的闭锁唤醒所述异步结果对应的同步请求。
7.一种同步请求转异步处理的***,其特征在于,包括:
请求接收模块,用于接收同步请求,并对所述同步请求申请闭锁;
请求转换模块,用于通过所述同步请求的内容,发起异步请求;
请求挂起模块,用于根据所述闭锁,挂起所述同步请求;
异步处理模块,用于对所述异步请求进行异步处理,得到异步结果;
请求唤起模块,用于基于所述异步结果、闭锁,唤醒所述异步结果对应的同步请求;
请求返回模块,用于基于所述异步结果对应的同步请求,得到同步结果,并返回所述同步结果;
所述请求接收模块,还用于开启结果接收服务,获取所述结果接收服务的远程方法调用RMI地址;
所述请求唤起模块,还用于根据所述异步结果的请求ID,获取所述异步结果对应的RMI地址,根据所述异步结果对应的RMI地址、所述异步结果的请求ID,查找所述异步结果对应的闭锁,以唤醒所述异步结果对应的同步请求。
8.一种终端设备,其特征在于,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的同步请求转异步处理的方法,所述同步请求转异步处理的程序被所述处理器执行时实现如权利要求1-6中任一项所述的同步请求转异步处理的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有同步请求转异步处理的程序,所述同步请求转异步处理的程序被处理器执行时实现如权利要求1-6中任一项所述的同步请求转异步处理的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210099998.XA CN114553891B (zh) | 2022-01-27 | 2022-01-27 | 同步请求转异步处理的方法、***、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210099998.XA CN114553891B (zh) | 2022-01-27 | 2022-01-27 | 同步请求转异步处理的方法、***、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114553891A CN114553891A (zh) | 2022-05-27 |
CN114553891B true CN114553891B (zh) | 2024-03-15 |
Family
ID=81674164
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210099998.XA Active CN114553891B (zh) | 2022-01-27 | 2022-01-27 | 同步请求转异步处理的方法、***、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114553891B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449614B1 (en) * | 1999-03-25 | 2002-09-10 | International Business Machines Corporation | Interface system and method for asynchronously updating a share resource with locking facility |
EP1715422A1 (en) * | 2005-04-18 | 2006-10-25 | Research In Motion Limited | System and method for converting a schema based synchronous service to a schema based asynchronous service |
CN103164273A (zh) * | 2012-09-06 | 2013-06-19 | 佳都新太科技股份有限公司 | 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法 |
CN108319508A (zh) * | 2017-01-18 | 2018-07-24 | ***通信集团公司 | Http同步请求转为异步处理的方法及服务器 |
CN111580995A (zh) * | 2020-05-12 | 2020-08-25 | 南京甄视智能科技有限公司 | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与*** |
-
2022
- 2022-01-27 CN CN202210099998.XA patent/CN114553891B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449614B1 (en) * | 1999-03-25 | 2002-09-10 | International Business Machines Corporation | Interface system and method for asynchronously updating a share resource with locking facility |
EP1715422A1 (en) * | 2005-04-18 | 2006-10-25 | Research In Motion Limited | System and method for converting a schema based synchronous service to a schema based asynchronous service |
CN103164273A (zh) * | 2012-09-06 | 2013-06-19 | 佳都新太科技股份有限公司 | 一种利用自扩展的阻塞算法将同步服务调用转换为异步并行式调用的方法 |
CN108319508A (zh) * | 2017-01-18 | 2018-07-24 | ***通信集团公司 | Http同步请求转为异步处理的方法及服务器 |
CN111580995A (zh) * | 2020-05-12 | 2020-08-25 | 南京甄视智能科技有限公司 | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与*** |
Also Published As
Publication number | Publication date |
---|---|
CN114553891A (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7761522B2 (en) | System and method for providing asynchronous notifications using synchronous data sources | |
EP1924046B1 (en) | A system, method and device for negotiating the equipment information | |
CN111580995B (zh) | 基于mqtt异步通信场景下的分布式云平台与物联网智能终端的同步通信方法与*** | |
KR100275403B1 (ko) | 컴퓨터 네트워크에서의 통신 접속 장치 및 방법 | |
KR100318781B1 (ko) | 서버측의비동기적양식관리방법및그시스템 | |
US7571208B2 (en) | Creating proxies from service description metadata at runtime | |
US7917629B2 (en) | Interface for external system management | |
CN111212085B (zh) | 物联网平台同步调用的方法、物联网***和网络设备 | |
CA2596896C (en) | Wireless communication device use of application server applications | |
CN110413418B (zh) | 缓存同步装置及方法,缓存同步***、电子设备 | |
JP2006516778A (ja) | サービス・ポータル間のデータ同期のためのシステム及び方法、並びにかかる同期システムを用いたサービスのためのアクセス・プラットフォーム | |
CA2432590A1 (en) | Information browser system and method for a wireless communication device | |
US8082296B2 (en) | Bus system | |
TWI237478B (en) | Mobile device management system and method using the management system to proceed network information transmission and sharing | |
US8326913B2 (en) | Method and system for service contract discovery | |
WO2004084011A2 (en) | System and method for implementing communication middleware for mobile 'java' computing | |
CN113992641A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN114553891B (zh) | 同步请求转异步处理的方法、***、终端设备及存储介质 | |
WO2006107137A1 (en) | System to support the heterogeneity in ubiquitous computing environment | |
US20070156839A1 (en) | Web services for wireless pervasive devices | |
JP2003524226A (ja) | 任意の物理的オブジェクト中でネットワーク情報を処理するためのスマート分子システム | |
Vinoski | Server-sent events with yaws | |
CN113329042A (zh) | 消息处理方法及***、车联网***、服务器、电子设备 | |
US20070005728A1 (en) | System and method of queued web services | |
CN113190624A (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 |