CN116010106A - 数据处理方法和装置 - Google Patents

数据处理方法和装置 Download PDF

Info

Publication number
CN116010106A
CN116010106A CN202310118674.0A CN202310118674A CN116010106A CN 116010106 A CN116010106 A CN 116010106A CN 202310118674 A CN202310118674 A CN 202310118674A CN 116010106 A CN116010106 A CN 116010106A
Authority
CN
China
Prior art keywords
service
services
request
asynchronous queue
preset
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.)
Pending
Application number
CN202310118674.0A
Other languages
English (en)
Inventor
马岚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202310118674.0A priority Critical patent/CN116010106A/zh
Publication of CN116010106A publication Critical patent/CN116010106A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种数据处理方法和装置,涉及数据处理技术领域中的云计算、大数据、智能搜索、信息流。具体实现方案为:获取用于反馈接收到的查询请求的各服务,其中,查询请求是超文本预处理器PHP语言的查询请求,基于单线程根据各服务之间的依赖关系,将各服务中的至少部分服务注册至预设异步队列,并根据预设异步队列执行异步请求,得到返回结果数据,根据返回结果数据确定并输出与查询请求对应的查询结果,可以提高数据处理的简便性,且可以提高数据处理的效率。

Description

数据处理方法和装置
技术领域
本公开涉及数据处理技术领域中的云计算、大数据、智能搜索、信息流,尤其涉及一种数据处理方法和装置。
背景技术
超文本预处理器(Hypertext Preprocessor,PHP),是在服务器端执行的脚本语言,可以适用于全球广域网(也可以称为万维网)(World Wide Web,Web)开发并可嵌入超文本标记语言(Hyper Text Markup Language,HTML)中。
PHP为单线程的程序,其特性为顺序执行,当遇到比较耗时的任务时,还未执行的任务就会处于等待状态,在后的任务需要等到前面的任务完成了,才会往后执行。
发明内容
本公开提供了一种用于提高数据处理效率的数据处理方法和装置。
根据本公开的第一方面,提供了一种数据处理方法,包括:
获取用于反馈接收到的查询请求的各服务,其中,所述查询请求是超文本预处理器PHP语言的查询请求;
基于单线程根据所述各服务之间的依赖关系,将所述各服务中的至少部分服务注册至预设异步队列,并根据所述预设异步队列执行异步请求,得到返回结果数据;
根据所述返回结果数据确定并输出与所述查询请求对应的查询结果。
根据本公开的第二方面,提供了一种数据处理装置,包括:
获取单元,用于获取用于反馈接收到的查询请求的各服务,其中,所述查询请求是超文本预处理器PHP语言的查询请求;
注册单元,用于基于单线程根据所述各服务之间的依赖关系,将所述各服务中的至少部分服务注册至预设异步队列;
执行单元,用于根据所述预设异步队列执行异步请求,得到返回结果数据;
确定单元,用于根据所述返回结果数据确定与所述查询请求对应的查询结果;
输出单元,用于输出所述查询结果。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据第一方面所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序,所述计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从所述可读存储介质读取所述计算机程序,所述至少一个处理器执行所述计算机程序使得电子设备执行第一方面所述的方法。
本公开提供的数据处理方法和装置,包括:获取用于反馈接收到的查询请求的各服务,其中,查询请求是超文本预处理器PHP语言的查询请求,基于单线程根据各服务之间的依赖关系,将各服务中的至少部分服务注册至预设异步队列,并根据预设异步队列执行异步请求,得到返回结果数据,根据返回结果数据确定并输出与查询请求对应的查询结果,可以避免上述示例中基于扩展实现造成的逻辑复杂等弊端,从而可以提高数据处理的简便性,且可以避免上述示例中基于远程过程调用协议并发方案需要等待结果全部反馈、以及基于串行方案造成的效率低的弊端,从而提高数据处理的效率,因此,可以有效的提升PHP语言在处理超大量任务的调度时的性能,并且保证单线程安全且稳定性高,使其可以更好的应用于较大流量、较高复杂性互联网服务,提升了用户体验,避免了当查询请求的爆发增长而引发的因编程语言的局限性而带来额外的巨大成本,比如更换语言进行服务的重新构建、或者通过扩容宝贵的服务器资源来支撑服务等,使PHP语言可以应用的更加广泛。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开第一实施例的示意图;
图2是根据本公开第二实施例的示意图;
图3是根据本公开实施例的数据处理方法的原理示意图;
图4是根据本公开第三实施例的示意图;
图5是根据本公开第四实施例的示意图;
图6是根据本公开第五实施例的示意图;
图7是用来实现本公开实施例的数据处理方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
PHP语言可以理解为一种通用开源的脚本语言,具有跨平台性强、效率高、已学习、低成本等优点,因此,PHP语言伴随着互联网发展成为了目前使用最广泛的编程语言之一。
但是,也正是由于互联网服务演变的越发的复杂化,用户对产品的响应速度(性能)要求越来越高,而一直以来PHP就是个单线程的程序,单线程的进程,有一个特性就是顺序执行,当遇到比较耗时的任务时,还未执行的任务就会处于等待状态,在后的任务需要等到前面的任务完成了,才会往后执行。
示例性的,针对PHP服务的任务处理,可以采用多线程方案、远程过程调用协议(Remote Procedure Call Protocol,RPC)并发方案、串行方案实现,其中,
多线程方案可以基于扩展实现,如通过各种开源的多线程扩展服务,例如线程pthreads,以实现任务的并发处理。
然而,该种方案存在下述问题:1)线程读写变量存在同步问题,需要加锁;2)锁的粒度过大存在性能问题,可能会导致只有1个线程在运行,其他线程都在等待锁;3)同时使用多个锁,逻辑复杂,一旦某个锁没被正确释放,可能会发生线程死;4)PHP的扩展都是C语言写的,这也就意味着任何一个扩展出现,线程竞争资源控制问题都会导致整个进程崩溃。
远程过程调用协议并发方案,是指同时发出多个网络服务请求,待结果全部返回时,完成本次调用。
然而,该种方案存在下述问题:需同步等待结果全部返回,且无法主动在超时前中断网络服务请求,随着系统复杂性的增加,造成的时间浪费骤增,影响用户体验,因此带来的性能优化有限。
串行方案,是指多任务依次顺序执行。
然而,该种方案存在下述问题:一旦发出网络服务请求,则进入死等,不能超时等中断。
为了避免上述技术问题中的至少一种,本公开提出了创造性的技术构思:针对PHP语言的查询请求,由单线程根据各服务(或者称为任务)之间的依赖关系,将各服务中的部分或全部服务注册至预设异步队列,以执行异步请求得到返回结果数据,以基于返回结果数据对查询请求进行反馈。
基于上述技术构思,本公开提供一种数据处理方法和装置,应用于数据处理技术领域中的云计算、大数据、智能搜索、信息流,以提高数据处理的效率。
图1是根据本公开第一实施例的示意图,如图1所示,本公开实施例提供的数据处理方法包括:
S101:获取用于反馈接收到的查询请求的各服务。其中,查询请求是超文本预处理器PHP语言的查询请求。
示例性的,本实施例的执行主体可以为数据处理装置,数据处理装置可以为服务器,也可以为计算机,也可以为终端设备,也可以为处理器,也可以为芯片等,此处不再一一列举。
若数据处理装置可以为服务器,则数据处理装置可以为云端服务器,也可以为本地服务器;数据处理装置可以为服务器集群,也可以为独立的服务器,本实施例不做限定。
该步骤可以理解为:数据处理装置接收查询请求,该查询请求为PHP语言的查询请求,为了对查询请求进行反馈,可以获取用于对查询请求进行反馈所需要的所有服务。
其中,服务可以为接口服务。例如,数据处理装置在接收到查询请求之后,可以获取用于反馈查询请求的所有接口服务,以通过调用至少部分接口服务对查询请求进行反馈。因此,一个服务可以理解为一个任务,且具体可以理解为一个调用接口的任务。
本实施例的数据处理方法可以应用于查询场景中,具体可以应用于帖子查询的场景,在帖子查询的场景中,查询请求可以为查询帖子的内容的请求,为了对查询帖子的内容的请求进行反馈,数据处理装置可以获取用于反馈查询贴自己的内容的所有服务(具体可以为接口服务),如所有服务可以包括:帖子头像的服务、账号信息的服务、评论信息的服务等。
其中,关于获取查询请求可以采用下述示例实现:
一个示例中,数据处理装置可以提供载入查询请求的工具,用户可以通过该查询请求的工具将查询请求传输至数据处理装置。
其中,载入查询请求的工具可以为用于与外接设备连接的接口,如用于与其他存储设备连接的接口,通过该接口获取外接设备传输的查询请求;载入查询请求的工具也可以为显示装置,如数据处理装置可以在显示装置上输入载入查询请求功能的界面,用户可以通过该界面将查询请求导入至数据处理装置,数据处理装置获取导入的查询请求。
S102:基于单线程根据各服务之间的依赖关系,将各服务中的至少部分服务注册至预设异步队列,并根据预设异步队列执行异步请求,得到返回结果数据。
结合上述分析可知,PHP为单线程的程序,而单线程的一个特性为顺序执行。例如,结合上述示例,在帖子查询的场景中,需要先执行帖子头像的服务,而后执行账号信息的服务,再执行评论信息的服务,存在效率低等弊端。
而在本实施例中,采用预设异步队列和异步请求的方式,以及基于单线程实现多线程的异步效果。其中,预设异步队列可以为RPC异步队列,相应的,异步请求可以为RPC异步请求。
且在本实施例中,可以基于依赖关系,将各服务注册至RPC异步队列。其中,依赖关系是指服务之间的关联关系,如一个服务是否基于另一个服务的调用结果。
S103:根据返回结果数据确定并输出与查询请求对应的查询结果。
示例性的,数据处理装置在接收到返回结果数据之后,可以对返回结果数据进行处理,以得到查询结果,并输出查询结果。
基于上述分析可知,本公开提供了一种数据处理方法,该方法包括:获取用于反馈接收到的查询请求的各服务,其中,查询请求是超文本预处理器PHP语言的查询请求,基于单线程根据各服务之间的依赖关系,将各服务中的至少部分服务注册至预设异步队列,并根据预设异步队列执行异步请求,得到返回结果数据,根据返回结果数据确定并输出与查询请求对应的查询结果,在本实施例中,基于单线程根据依赖关系将各服务注册至预设异步队列,并基于预设异步队列执行异步请求,以基于获取到的返回结果数据确定并输出查询结果的技术特征,可以避免上述示例中基于扩展实现造成的逻辑复杂等弊端,从而可以提高数据处理的简便性,且可以避免上述示例中基于远程过程调用协议并发方案需要等待结果全部反馈、以及基于串行方案造成的效率低的弊端,从而提高数据处理的效率,因此,可以有效的提升PHP语言在处理超大量任务的调度时的性能,并且保证单线程安全且稳定性高,使其可以更好的应用于较大流量、较高复杂性互联网服务,提升了用户体验,避免了当查询请求的爆发增长而引发的因编程语言的局限性而带来额外的巨大成本,比如更换语言进行服务的重新构建、或者通过扩容宝贵的服务器资源来支撑服务等,使PHP语言可以应用的更加广泛。
为使读者更加深刻地理解本公开的实现原理,现结合图2对本公开的实现原理进行详细阐述。
图2是根据本公开第二实施例的示意图,如图2所示,本公开实施例提供的数据处理方法包括:
S201:获取用于反馈接收到的查询请求的各服务。其中,查询请求是超文本预处理器PHP语言的查询请求。
应该理解的是,为了避免繁琐的陈述,关于本实施例与上述实施例中相同的技术特征,本实施例不做限定。
示例性的,关于S201的实现原理,可以参见S101的描述,此处不再赘述。
S202:至少从各服务中,基于单线程获取第六服务和第七服务,其中,第六服务为不依赖于其他服务的服务,第七服务为依赖于第六服务的服务。
各服务的数量为多个,为用于反馈查询请求的所有的服务,为对各服务中的不同服务进行区分,可以基于“第几”的方式对不同的服务进行区分。
示例性的,在该步骤中,第六服务和第七服务为各服务中的不同的服务,为了进行区分,我们可以将不需要依赖其他服务的服务称为第六服务,将需要依赖于第六服务的服务称为第七服务。
例如,若某服务不需要基于其他服务的调用结果,可以独立执行,则该服务可以称为第六服务。相应的,第六服务可以称为无前置依赖的服务,即无需依赖于其他服务的调用结果的服务。
若某服务需要基于第六服务的调用结果,以基于第六服务的调用结果执行,则该服务可以称为第七服务。相应的,第七服务为需要前置服务的服务,且第七服务的前置服务为第六服务。
其中,第六服务的数量可以为多个,也可以为一个。例如,若各服务中有一个不需要基于其他服务的调用结果的服务,则第六服务的数量为一个;若各服务中有多个不需要基于其他服务的调用结果的服务,则第六服务的数量为多个。
同理,第七服务的数量可以为多个,也可以为一个。例如,若各服务中有一个需要基于第六服务的调用结果的服务,则第七服务的数量为一个;若各服务中有多个需要基于第六服务的调用结果的服务,则第七服务的数量为多个。
S203:基于单线程将各服务中的至少部分服务注册至预设异步队列,其中,至少部分服务包括第六服务和第七服务。
由于第七服务仅需要依赖于第六服务,因此,可以将第七服务称为具有一层前置服务的服务。
示例性的,在一些实施例中,可以由单线程将无前置服务的服务(即第六服务)、以及具有一层前置服务的服务(即第七服务)注册至预设异步队列中。
在另一些实施例中,还可以继续确定以第七服务为前置服务的服务(如第八服务),以将第六服务、第七服务、以及第八服务注册至预设异步队列。
由于第八服务需要依赖于第七服务,而第七服务需要依赖于第六服务,因此,可以将第八服务称为具有两层前置服务的服务。
相应的,在还一些实施例中,可以将无前置服务的服务(即第六服务)、以及具有一层前置服务的服务(即第七服务)、以及具有更多层(如上所述的两层)前置服务的服务注册至预设异步队列中,如直至将所有服务都注册至预设异步队列。
若将所有服务都注册至预设异步队列中,可以使得预设异步队列中的服务具有较高的完整性和全面性。但是,相对而言,具有更多层前置服务的服务为边缘的服务,对于反馈查询结果的反馈的重要性相对较低,而消耗的时间可能会比较长,因此,可以先将无前置服务的服务、以及具有一层前置服务的服务注册至预设异步队列中,可以避免耗时问题,提高针对查询请求反馈的有效性和可靠性。
在一些实施例中,可以基于预设格式将各服务中的至少部分服务注册(register)至预设异步队列。
其中,预设格式中的内容可以包括:服务名称(service Name)、服务参数(arrInput)、超时时间(time out)、回调函数(call Back)。若注册的服务为有前置服务的服务,则预设格式中的内容还可以包括相应的与前置服务的依赖关系((s’))。
例如,结合上述分析,第六服务为没有前置服务的服务,若第六服务的服务名称为A,则注册第六服务对应的预设格式可以为:register(service Name_A,arr Input_A,timeout_A,call Back_A)。
又如,结合上述分析,第七服务的前置服务为第六服务,若第七服务的服务名称为B,则注册第六服务对应的预设格式可以为:register(service Name_B,arr Input_B,timeout_B,call Back_B,A(s’))。
再如,结合上述分析,第八服务为具有两层前置服务的服务,即第八服务既需要依赖于第六服务,还需要依赖于第七服务,若第七服务的服务名称为C,则注册第六服务对应的预设格式可以为:register(service Name_C,arr Input_C,timeout_C,call Back_C,A+B(s’))。
其中,不同的服务的超时时间可以相同,也可以不同,本实施例不做限定。
示例性的,如图3所述,可以将无前置服务的第六服务注册至RPC异步队列(即预设异步队列),并可以将前置服务为第六服务的第七服务注册至PRC异步队列。
S204:基于单线程根据预设异步队列中服务之间的依赖关系,依次发送预设异步队列中服务的网络服务请求,得到返回结果数据。
示例性的,预设异步队列中的服务是基于各服务之间的依赖关系注册的,因此,通过结合预设异步队列中服务之间的依赖关系,可以逐步对预设异步队列中服务对应的网络服务请求进行发送,以调用相应的服务,从而得到返回数据结果。
在本实施例中,由单线程基于依赖关系依次发送网络服务请求(也可以称为执行PRC异步请求),可以使得单线程具有异步多线程的效果,从而提高查询的效率。
在一些实施例中,S204包括:若预设异步队列中的第一服务不依赖于各服务中的其他服务,则发送第一服务的网络服务请求,得到第一服务对应的第一返回数据,其中,返回结果数据包括第一返回数据。
同理,第一服务的数量可以为一个,也可以为多个。
示例性的,发送网络服务请求可以理解为调用服务,例如,发送第一服务的网络服务请求,相当于调用第一服务。
调用不同的服务所获取的调用结果不同,返回数据可以理解为调用结果。相应的,第一返回数据可以理解为调用第一服务而得到的调用结果。
由于第一服务为不需要依赖于其他服务的服务,即第一服务为没有前置服务的服务,因此,结合示例可知,第一服务可以为如上述的第六服务。
在本实施例中,通过采用单线程发送预设异步队列中不需要依赖于其他服务的第一服务对应的网络服务请求,尤其是在第一服务的数量为多个时,可以基于单线程实现多线程的异步调用的效果,从而实现提高反馈效率的技术效果。
在另一些实施例中,S204包括:若预设异步队列中的第二服务依赖于第三服务,且第三服务的服务网络请求已被发送,则发送第二服务的网络服务请求,得到第二服务对应的第二返回数据。
其中,返回结果数据包括第二返回数据。
本实施例中,第二服务的前置服务为第三服务,在数据处理装置基于单线程已经完成发送第三服务对应的网络服务请求,以对第三服务进行调用之后,则数据处理装置可以基于单线程发送第二服务对应的网络服务请求,以对第二服务进行调用,得到该调用对应的第二返回数据。
例如,结合上述示例,第三服务可以为第六服务,则第二服务可以为第七服务;或者,第三服务可以为第七服务,则第二服务可以为第八服务,以此类推,此处不再一一列举。
也就是说,第三服务可以为没有前置服务的服务,也可以为有前置服务的服务,本实施例不做限定。
在本实施例中,通过结合依赖关系,以根据前置服务对在后服务进行调用,以实现数据处理的有序性和有效性。
在一些实施例中,预设异步队列中包括第四服务和第五服务,第五服务依赖于第四服务;S204可以包括如下步骤:
第一步骤:在发送第四服务前,获取处理查询请求的处理时长。
示例性的,第四服务可以为预设异步队列中的任意服务,且第四服务为第五服务的前置服务。
例如,第四服务可以为如上实施例所述的第六服务,则第五服务可以为如上实施例所述的第七服务。又如,第四服务可以为如上实施例所述的第七服务,则第五服务可以为如上实施例所述的第八服务。
处理时长可以理解为,接收到查询请求的时间至当前时间之间的时间差值。例如,第四服务为当前需要处理的服务,即需要发送第四服务对应的网络服务请求,以对第四服务进行调用,则处理时长为接收查询请求的时间至当前时间之间的时长。
第二步骤:若处理时长小于预设时长,则发送第四服务的网络服务请求,得到第三返回数据,其中,返回结果数据包括第三返回数据。
示例性的,预设时长可以基于需求、历史记录、以及试验等方式确定,本实施例不做限定。且结合上述示例可知,注册服务的预设格式的内容中包括超时时间,该超时时间即为预设时长。
处理时长与预设时长之间存在大小关系,如处理时长可能大于预设时长,处理时长也可能等于预设时长,处理时长也可能小于预设时长。
若处理时长小于预设时长,则数据处理装置基于单线程发送第四服务的网络服务请求,以对第四服务进行调用,从而得到对应的调用结果(即第三返回数据)。
示例性的,获取处理时长、以及确定处理时长与预设时长之间的大小关系可以称为超时检测,即对查询请求进行反馈是否超时的检测。
例如,若第四服务为第七服务,如图3所示,在基于单线程发送PRC异步队列中的第七服务的网络服务请求之前,先进行超时检测,以在超时检测满足处理时长小于设时长的情况下,如图3所示的超时检测的结果为否的情况下(即不超时),基于单线程执行PRC异步请求(如发送第七服务的网络服务请求)。
相对而言,若处理时长小于预设时长,则说明用户等待查询请求的反馈的时间相对较短,则可以继续发送第四服务的网络服务请求,以结合第三返回数据对查询请求进行反馈,以尽可能从查询效率和查询有效性上对查询请求进行反馈。
第三步骤:若处理时长大于等于预设时长,则停止发送后续服务的网络服务请求。
其中,后续服务包括:第四服务、以及预设异步队列中依赖于第四服务的服务。
结合上述分析可知,处理时长也可能大于等于预设时长,如果处理时长大于等于预设时长,则说明相对而言,用户等待查询请求的反馈的时长较长,为了避免反馈查询结果的时间过长,影响用户的查询体验,可以停止发送第四服务、以及预设异步队列中依赖于第四服务的服务各自对应的网络服务请求,即不再调用第四服务、以及预设异步队列中依赖于第四服务的服务,而可以基于第四服务的前置服务的调用结果对查询请求进行反馈,从而提高用户的查询体验,提高对查询请求进行反馈的效率。
在一些实施例中,若在根据预设异步队列中服务之间的依赖关系,发送预设异步队列中的在后服务的服务网络请求之后,获取到预设异步队列中的在前服务的服务网络请求对应的第四返回数据,则对第四返回数据进行构建处理,得到用于针对查询请求进行反馈的内容。
其中,返回结果数据包括第四返回数据。
结合上述分析可知,PHP为单线程的程序,而单线程为串行执行的线程,如在上述串行方案中,在基于单线程发送了在前服务的网络服务请求之后,需要等待在前服务的网络服务请求的反馈结果(即第四返回数据),若第四返回数据满足发送在后服务的网络服务请求的需求,则基于单线程发送在后服务的网络服务请求。
而在本实施例中,在后服务是指需要依赖于在前服务的服务,例如,结合上述示例,在后服务为第七服务,在前服务为第六服务,则若在发送第七服务的网络服务请求之后,单线程获取到发送第六服务的网络服务请求所接收到的反馈结果,对该反馈结果进行构建(build)处理,得到构建处理结果,以基于构建处理结果对查询请求进行反馈。
示例性的,结合上述示例和图3,若第六服务的服务名称为A,若在发送第七服务的网络服务请求之后,单线程获取到发送第六服务的网络服务请求所接收到的反馈结果A(s),则可以对反馈结果A(s)进行构建处理(如图3所示的“A(s)build”)。
相应的,若第七服务的服务名称为B,在发送第八服务的网络服务请求之后,单线程获取到发送第七服务的网络服务请求所接收到的反馈结果B(s),则可以对反馈结果B(s)进行构建处理(如图3所示的“B(s)build”)。
也就是说,在本实施例中,在基于单线程发送了在后服务的网络服务请求之后,可以基于单线程确定是否有针对在前服务的网络服务请求的反馈,若有,则基于单线程对该反馈进行构建处理,相当于基于单线程实现了多线程的异步调用,从而提高了针对查询的反馈的效率。
其中,结合上述示例可知,在将至少部分注册至预设异步队列时,预设格式中的内容包括回调函数,相应的,可以基于回调函数确定返回结果数据是针对发送哪一服务的网络服务请求反馈的。
结合上述分析可知,PRC异步队列中可以仅包括第六服务和第七服务,也可以包括更多的服务。
在一些实施例中,如图3所示,若PRC异步队列中仅包括第六服务和第七服务,则在完成针对第六服务的反馈结果的构建处理、以及针对第七服务的反馈结果的构建处理之后,可以继续在PRC异步队列中注册服务,如图3所示的将前置服务为第七服务的第八服务注册至PRC异步队列中,或者,在发送第七服务的网络服务请求之后,可以将第八服务注册至PRC异步队列中,以此类推,此处不再一一列举。
结合上述分析可知,在一些实施例中,在超时检测时,可能已经超时,即处理时长大于等于预设时长,如图3所示的超时检测的结果为是的情况下(即超时)则如图3所示,可以不再执行RPC异步请求,而是进行结果构建(如图3所示的“build result”),即将已经进行构建处理的反馈结果的构建处理结果进行构建,得到最终针对查询请求反馈的查询结果。
例如,若在发送第八服务的网络服务请求之前的超时检测确定当前已超时,则不再发送第八服务的网络服务请求,而是基于发送第六服务的网络服务请求的反馈结果的构建处理结果、以及发送第七服务的网络服务请求的反馈结果的构建处理结果,进行结果构建,得到查询结果。
S205:根据返回结果数据确定并输出与查询请求对应的查询结果。
同理,关于S205的实现原理,可以参见S103的实现原理,此处不再赘述。
图4是根据本公开第三实施例的示意图,如图4所示,本公开实施例提供的数据处理装置400包括:
获取单元401,用于获取用于反馈接收到的查询请求的各服务,其中,查询请求是超文本预处理器PHP语言的查询请求。
注册单元402,用于基于单线程根据各服务之间的依赖关系,将各服务中的至少部分服务注册至预设异步队列。
执行单元403,用于根据预设异步队列执行异步请求,得到返回结果数据。
确定单元404,用于根据返回结果数据确定与查询请求对应的查询结果。
输出单元405,用于输出查询结果。
图5是根据本公开第四实施例的示意图,如图5所示,本公开实施例提供的数据处理装置500包括:
获取单元501,用于获取用于反馈接收到的查询请求的各服务,其中,查询请求是超文本预处理器PHP语言的查询请求。
注册单元502,用于基于单线程根据各服务之间的依赖关系,将各服务中的至少部分服务注册至预设异步队列。
在一些实施例中,结合图5可知,注册单元502,包括:
第二获取子单元5021,用于从各服务中,基于单线程至少获取第六服务和第七服务,其中,第六服务为不依赖于其他服务的服务,第七服务为依赖于第六服务的服务。
注册子单元5022,用于将各服务中的至少部分服务注册至预设异步队列,其中,至少部分服务包括第六服务和第七服务。
执行单元503,用于根据预设异步队列执行异步请求,得到返回结果数据。
在一些实施例中,执行单元503用于,根据预设异步队列中服务之间的依赖关系,依次发送预设异步队列中服务的网络服务请求,得到返回结果数据。
在一些实施例中,结合图5可知,执行单元503,包括:
第一发送子单元5031,用于若预设异步队列中的第一服务不依赖于各服务中的其他服务,则发送第一服务的网络服务请求,得到第一服务对应的第一返回数据,其中,返回结果数据包括第一返回数据。
在一些实施例中,结合图5可知,执行单元503,还包括:
第二发送子单元5032,用于若预设异步队列中的第二服务依赖于第三服务,且第三服务的网络服务请求已被发送,则发送第二服务的网络服务请求,得到第二服务对应的第二返回数据。
其中,返回结果数据包括第二返回数据。
在一些实施例中,预设异步队列中包括第四服务和第五服务,所述第五服务依赖于所述第四服务;结合图5可知,执行单元503,还包括:
第一获取子单元5033,用于在发送第四服务前,获取处理查询请求的处理时长。
第三发送子单元5034,用于若处理时长小于预设时长,则发送第四服务的网络服务请求,得到第三返回数据,其中,返回结果数据包括第三返回数据。
在一些实施例中,若处理时长大于等于所述预设时长,则执行单元503,还包括:
停止子单元5035,用于停止发送后续服务的网络服务请求。
其中,后续服务包括:第四服务、以及预设异步队列中依赖于第四服务的服务。
在一些实施例中,结合图5可知,执行单元503,还包括:
构建子单元5036,用于若在根据预设异步队列中服务之间的依赖关系,发送预设异步队列中的在后服务的网络服务请求之后,获取到预设异步队列中的在前服务的网络服务请求对应的第四返回数据,则对第四返回数据进行构建处理,得到用于针对查询请求进行反馈的内容。
其中,返回结果数据包括第四返回数据。
确定单元504,用于根据返回结果数据确定与查询请求对应的查询结果。
输出单元505,用于输出查询结果。
图6是根据本公开第五实施例的示意图,如图6所示,本公开中的电子设备600可以包括:处理器601和存储器602。
存储器602,用于存储程序;存储器602,可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-access memory,缩写:RAM),如静态随机存取存储器(英文:static random-access memory,缩写:SRAM),双倍数据率同步动态随机存取存储器(英文:Double Data Rate Synchronous Dynamic Random Access Memory,缩写:DDR SDRAM)等;存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory)。存储器602用于存储计算机程序(如实现上述方法的应用程序、功能模块等)、计算机指令等,上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器602中。并且上述的计算机程序、计算机指令、数据等可以被处理器601调用。
上述的计算机程序、计算机指令等可以分区存储在一个或多个存储器602中。并且上述的计算机程序、计算机指据等可以被处理器601调用。
处理器601,用于执行存储器602存储的计算机程序,以实现上述实施例涉及的方法中的各个步骤。
具体可以参见前面方法实施例中的相关描述。
处理器601和存储器602可以是独立结构,也可以是集成在一起的集成结构。当处理器601和存储器602是独立结构时,存储器602、处理器601可以通过总线603耦合连接。
本实施例的电子设备可以执行上述方法中的技术方案,其具体实现过程和技术原理相同,此处不再赘述。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
根据本公开的实施例,本公开还提供了一种计算机程序产品,计算机程序产品包括:计算机程序,计算机程序存储在可读存储介质中,电子设备的至少一个处理器可以从可读存储介质读取计算机程序,至少一个处理器执行计算机程序使得电子设备执行上述任一实施例提供的方案。
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字助理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图7所示,设备700包括计算单元701,其可以根据存储在只读存储器(ROM)702中的计算机程序或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序,来执行各种适当的动作和处理。在RAM 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如数据处理方法。例如,在一些实施例中,数据处理方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到设备700上。当计算机程序加载到RAM 703并由计算单元701执行时,可以执行上文描述的数据处理方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行数据处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (19)

1.一种数据处理方法,包括:
获取用于反馈接收到的查询请求的各服务,其中,所述查询请求是超文本预处理器PHP语言的查询请求;
基于单线程根据所述各服务之间的依赖关系,将所述各服务中的至少部分服务注册至预设异步队列,并根据所述预设异步队列执行异步请求,得到返回结果数据;
根据所述返回结果数据确定并输出与所述查询请求对应的查询结果。
2.根据权利要求1所述的方法,其中,根据所述预设异步队列执行异步请求,得到返回结果数据,包括:
根据所述预设异步队列中服务之间的依赖关系,依次发送所述预设异步队列中服务的网络服务请求,得到所述返回结果数据。
3.根据权利要求2所述的方法,其中,根据所述预设异步队列中服务之间的依赖关系,依次发送所述预设异步队列中服务的网络服务请求,得到所述返回结果数据,包括:
若所述预设异步队列中的第一服务不依赖于所述各服务中的其他服务,则发送所述第一服务的网络服务请求,得到所述第一服务对应的第一返回数据,其中,所述返回结果数据包括所述第一返回数据。
4.根据权利要求2所述的方法,其中,根据所述预设异步队列中服务之间的依赖关系,依次发送所述预设异步队列中服务的网络服务请求,得到所述返回结果数据,包括:
若所述预设异步队列中的第二服务依赖于第三服务,且所述第三服务的网络服务请求已被发送,则发送所述第二服务的网络服务请求,得到所述第二服务对应的第二返回数据;
其中,所述返回结果数据包括所述第二返回数据。
5.根据权利要求2-4中任一项所述的方法,其中,所述预设异步队列中包括第四服务和第五服务,所述第五服务依赖于所述第四服务;根据所述预设异步队列中服务之间的依赖关系,依次发送所述预设异步队列中服务的网络服务请求,得到所述返回结果数据,包括:
在发送所述第四服务前,获取处理所述查询请求的处理时长;
若所述处理时长小于预设时长,则发送所述第四服务的网络服务请求,得到第三返回数据,其中,所述返回结果数据包括所述第三返回数据。
6.根据权利要求5所述的方法,若所述处理时长大于等于所述预设时长,则所述方法还包括:
停止发送后续服务的网络服务请求;
其中,所述后续服务包括:所述第四服务、以及所述预设异步队列中依赖于所述第四服务的服务。
7.根据权利要求6所述的方法,所述方法还包括:
若在根据所述预设异步队列中服务之间的依赖关系,发送所述预设异步队列中的在后服务的网络服务请求之后,获取到所述预设异步队列中的在前服务的网络服务请求对应的第四返回数据,则对所述第四返回数据进行构建处理,得到用于针对所述查询请求进行反馈的内容;
其中,所述返回结果数据包括所述第四返回数据。
8.根据权利要求1-7中任一项所述的方法,其中,基于单线程根据所述各服务之间的依赖关系,将所述各服务中的至少部分服务注册至预设异步队列,包括:
从所述各服务中,基于所述单线程至少获取第六服务和第七服务,其中,所述第六服务为不依赖于其他服务的服务,所述第七服务为依赖于所述第六服务的服务;
将所述各服务中的至少部分服务注册至预设异步队列,其中,所述至少部分服务包括所述第六服务和所述第七服务。
9.一种数据处理装置,包括:
获取单元,用于获取用于反馈接收到的查询请求的各服务,其中,所述查询请求是超文本预处理器PHP语言的查询请求;
注册单元,用于基于单线程根据所述各服务之间的依赖关系,将所述各服务中的至少部分服务注册至预设异步队列;
执行单元,用于根据所述预设异步队列执行异步请求,得到返回结果数据;
确定单元,用于根据所述返回结果数据确定与所述查询请求对应的查询结果;
输出单元,用于输出所述查询结果。
10.根据权利要求9所述的装置,其中,所述执行单元用于,根据所述预设异步队列中服务之间的依赖关系,依次发送所述预设异步队列中服务的网络服务请求,得到所述返回结果数据。
11.根据权利要求10所述的装置,其中,所述执行单元,包括:
第一发送子单元,用于若所述预设异步队列中的第一服务不依赖于所述各服务中的其他服务,则发送所述第一服务的网络服务请求,得到所述第一服务对应的第一返回数据,其中,所述返回结果数据包括所述第一返回数据。
12.根据权利要求10所述的装置,其中,所述执行单元,包括:
第二发送子单元,用于若所述预设异步队列中的第二服务依赖于第三服务,且所述第三服务的网络服务请求已被发送,则发送所述第二服务的网络服务请求,得到所述第二服务对应的第二返回数据;
其中,所述返回结果数据包括所述第二返回数据。
13.根据权利要求10-12中任一项所述的装置,其中,所述预设异步队列中包括第四服务和第五服务,所述第五服务依赖于所述第四服务;所述执行单元,包括:
第一获取子单元,用于在发送所述第四服务前,获取处理所述查询请求的处理时长;
第三发送子单元,用于若所述处理时长小于预设时长,则发送所述第四服务的网络服务请求,得到第三返回数据,其中,所述返回结果数据包括所述第三返回数据。
14.根据权利要求13所述的装置,若所述处理时长大于等于所述预设时长,则所述执行单元还包括:
停止子单元,用于停止发送后续服务的网络服务请求;
其中,所述后续服务包括:所述第四服务、以及所述预设异步队列中依赖于所述第四服务的服务。
15.根据权利要求14所述的装置,所述执行单元还包括:
构建子单元,用于若在根据所述预设异步队列中服务之间的依赖关系,发送所述预设异步队列中的在后服务的网络服务请求之后,获取到所述预设异步队列中的在前服务的网络服务请求对应的第四返回数据,则对所述第四返回数据进行构建处理,得到用于针对所述查询请求进行反馈的内容;
其中,所述返回结果数据包括所述第四返回数据。
16.根据权利要求9-15中任一项所述的装置,其中,所述注册单元,包括:
第二获取子单元,用于从所述各服务中,基于所述单线程至少获取第六服务和第七服务,其中,所述第六服务为不依赖于其他服务的服务,所述第七服务为依赖于所述第六服务的服务;
注册子单元,用于将所述各服务中的至少部分服务注册至预设异步队列,其中,所述至少部分服务包括所述第六服务和所述第七服务。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的方法。
19.一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现权利要求1-8中任一项所述方法的步骤。
CN202310118674.0A 2023-01-31 2023-01-31 数据处理方法和装置 Pending CN116010106A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310118674.0A CN116010106A (zh) 2023-01-31 2023-01-31 数据处理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310118674.0A CN116010106A (zh) 2023-01-31 2023-01-31 数据处理方法和装置

Publications (1)

Publication Number Publication Date
CN116010106A true CN116010106A (zh) 2023-04-25

Family

ID=86033640

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310118674.0A Pending CN116010106A (zh) 2023-01-31 2023-01-31 数据处理方法和装置

Country Status (1)

Country Link
CN (1) CN116010106A (zh)

Similar Documents

Publication Publication Date Title
CN112540806B (zh) 一种小程序页面渲染方法、装置、电子设备及存储介质
WO2018214835A1 (zh) 一种区块链业务受理及业务共识方法及装置
US20210182147A1 (en) Method for memory management for browser of terminal, terminal, and non-transitory computer-readable storage medium
US20210365285A1 (en) Voice data procession method, apparatus, device and storage medium
CN114564435A (zh) 异构多核芯片的核间通信方法、装置及介质
KR20090123012A (ko) 분산형 프로세싱 시스템 및 방법
KR102686643B1 (ko) 애플릿 페이지 렌더링 방법, 장치, 전자 설비 및 저장 매체
CN113778644B (zh) 任务的处理方法、装置、设备及存储介质
WO2019047376A1 (zh) 接口任务调用方法、装置、电子设备及可读存储介质
CN116243983A (zh) 处理器、集成电路芯片、指令处理方法、电子设备和介质
US8756604B2 (en) Async wrapper handling execution of asynchronous operations for synchronous and asynchronous routines
CN116010106A (zh) 数据处理方法和装置
US9430196B2 (en) Message inlining
CN116126719A (zh) 接口测试方法、装置、电子设备及存储介质
CN115599571A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN113722037B (zh) 一种用户界面的刷新方法、装置、电子设备及存储介质
CN107632893B (zh) 消息队列处理方法及装置
CN115437709A (zh) 应用首页闪屏资源的加载方法及装置
CN113867920A (zh) 任务处理方法、装置、电子设备和介质
US11182228B2 (en) System and method for remote procedure call for key-value target over non-volatile memory express over fabrics
CN113439260A (zh) 针对低时延存储设备的i/o完成轮询
CN115495312B (zh) 业务请求处理方法和装置
CN116579914B (zh) 一种图形处理器引擎执行方法、装置、电子设备及存储介质
CN117057411B (zh) 一种大语言模型训练方法、装置、设备及存储介质
CN116166454A (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