CN109684358B - 数据查询的方法和装置 - Google Patents

数据查询的方法和装置 Download PDF

Info

Publication number
CN109684358B
CN109684358B CN201710969976.3A CN201710969976A CN109684358B CN 109684358 B CN109684358 B CN 109684358B CN 201710969976 A CN201710969976 A CN 201710969976A CN 109684358 B CN109684358 B CN 109684358B
Authority
CN
China
Prior art keywords
query
data
level cache
request
cache
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
Application number
CN201710969976.3A
Other languages
English (en)
Other versions
CN109684358A (zh
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 Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information 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 Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201710969976.3A priority Critical patent/CN109684358B/zh
Publication of CN109684358A publication Critical patent/CN109684358A/zh
Application granted granted Critical
Publication of CN109684358B publication Critical patent/CN109684358B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

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

Abstract

本发明提供一种数据查询的方法和装置,能够动态分析热门查询,通过采用一级缓存和二级缓存并存的方式,提高缓存命中率,降低查询响应的延迟,并通过利用主被动缓存相结合的数据更新形式,从而能够提高缓存数据的准确率。该方法包括:根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则,继续调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将所述查询到的数据更新至一级缓存和二级缓存中,若查询超时,则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间小于所述第二预设数据过期删除时间。

Description

数据查询的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据查询的方法和装置。
背景技术
随着计算机技术的不断发展,越来越多的人选择通过在线访问业务***来获取需要的信息。对于具有大数量访问的在线数据查询***而言,其核心业务场景,例如火车票的余票在线查询、机票余票的在线查询、酒店客房供应在线查询等,通常具有如下共性:
1、查询请求远大于写入请求;2、需要调用外部查询***的接口服务;3、外部查询***的处理能力有限;4、查询入参的变化大(例如火车票余票查询场景中,进行查询的站点不固定,变化大)。
对于上述业务***的核心应用模块,其访问量远大于其他环节,尤其是在使用高峰期,其性能、体验直接影响后续利益转化。现有技术中,为提升上述各类核心应用的性能和用户体验,通常通过建立数据中心、使用大型集群结合爬虫或是多渠道供应商等方式来处理大数量查询的问题。具体而言,通常是客户端触发数据查询,应用服务器接收到查询请求,首先查询缓存服务器,如果存在查询数据则返回数据,如果不存在则调用供应商查询服务获取数据,成功后存入缓存服务器并返回数据给客户端。整个过程采用同步机制,缓存策略为被动缓存。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
1)缓存命中率极低,查询高峰数据响应的延迟较大
通常情况下,在线数据查询的应用场景中,数据查询信息需要有相对较高的时效性,缓存时间不宜过长,日常,就导致在现有技术方案设计下,缓存数据的命中率低,大批量查询请求会直接请求到上游查询服务,尤其在查询和利益转化的高峰期,会建立大量的HTTP链接,大幅度增加业务***的负担,导致部分查询请求无法获取到数据,影响业务***易用性;
2)采用同步机制,抗风险能力差基本无法应对“专业”恶意用户攻击
现有技术中,数据查询采用同步机制。同时通常的数据查询场景不会限定用户查询权限,例如要求用户必须登录后才能查询火车票余票,故无法根据用户标识做查询限制,而根据来源IP的限制作用又较为有限。因此,如果有恶意用户使用自动化程序模拟正常请求,短时间内产生大量查询请求,就会导致应用服务器以及供应商查询服务无法正常处理,进而影响业务***可用性。
发明内容
有鉴于此,本发明实施例提供一种数据查询的方法和装置,能够动态分析热门查询,通过采用一级缓存和二级缓存并存的方式,提高缓存命中率,降低查询响应的延迟,并且通过利用主动缓存和被动缓存相结合的缓存数据更新形式,从而能够提高缓存数据的准确率,提升访问高峰期查询***的易用性。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据查询的方法。
本发明实施例的一种数据查询的方法包括:根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则,继续调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将所述查询到的数据更新至一级缓存和二级缓存中,若查询超时,则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间小于所述第二预设数据过期删除时间。
可选地,调用外部查询服务接口进行数据查询包括:判断单位时间内的查询请求量是否大于预设请求量阈值,若不大于,则直接调用外部查询服务接口进行数据同步查询,若大于,则利用消息队列进行数据异步查询。
可选地,利用消息队列进行数据异步查询包括:将所述查询请求发送至消息队列,并通知客户端所述查询请求为异步处理,以便所述客户端轮询获取数据异步查询结果;以及消息处理器在监听到所述消息队列中的查询请求之后,根据所述查询请求调用外部查询服务接口进行数据查询。
可选地,在调用外部查询服务接口进行数据查询之前,所述方法还包括:判断所述查询请求是否属于无效请求,若属于则不予查询。
可选地,所述方法还包括:按照预设统计周期,利用历史查询请求数据统计热门查询请求,并根据所述热门查询请求调用外部查询服务接口进行数据查询,并将查询到的数据更新至一级缓存和/或二级缓存中。
为实现上述目的,根据本发明实施例的另一方面,提供了一种数据查询的装置。
本发明实施例的一种数据查询的装置包括:一级缓存查询模块,用于根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则触发调用查询模块,调用查询模块,用于继续调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将所述查询到的数据更新至一级缓存和二级缓存中,若查询超时,则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间小于所述第二预设数据过期删除时间。
可选地,所述调用查询模块还用于:判断单位时间内的查询请求量是否大于预设请求量阈值,若不大于,则直接调用外部查询服务接口进行数据同步查询,若大于,则利用消息队列进行数据异步查询。
可选地,所述调用查询模块还用于:将所述查询请求发送至消息队列,并通知客户端所述查询请求为异步处理,以便所述客户端轮询获取数据异步查询结果;以及消息处理器在监听到所述消息队列中的查询请求之后,根据所述查询请求调用外部查询服务接口进行数据查询。
可选地,所述调用查询模块还用于:在调用外部查询服务接口进行数据查询之前,判断所述查询请求是否属于无效请求,若属于则不予查询。
可选地,所述装置还包括:主动缓存模块,用于按照预设统计周期,利用历史查询请求数据统计热门查询请求,并根据所述热门查询请求调用外部查询服务接口进行数据查询,并将查询到的数据更新至一级缓存和/或二级缓存中。
为实现上述目的,根据本发明实施例的再一方面,提供了一种电子设备。
本发明实施例的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的数据查询的方法。
为实现上述目的,根据本发明实施例的又一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明实施例的数据查询的方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用一级缓存和二级缓存相结合的技术手段,进行数据查询的服务端在接收到查询请求之后,首先从一级缓存中查询数据,若查询到,则返回数据;若未查询到,则调用外部各渠道的供应商提供的查询服务接口,由外部各渠道供应商提供查询服务;但若外部供应商提供的查询服务查询超时,则从查询***内部的二级缓存查询数据并返回,即将查询***内部的二级缓存作为最后一道查询数据的途径,所以克服了现有技术中缓存命中率低的技术问题,进而达到提升缓存命中率,减少查询高峰期数据延迟的技术效果;通过建立查询路由层,依据当前查询***单位时间内的查询请求量动态切换请求方式为同步或异步,并结合消息队列等措施进行数据查询,从而能够提高业务***的可用性,提高业务***的抗风险能力,有效应对恶意用户的攻击;通过在调用外部查询服务接口进行数据查询之前,判断查询请求是否属于无效请求,若属于则不予查询,从而能够有效地减少不必要的性能消耗;通过采用将根据查询请求调用外部查询服务得到的结果更新至缓存(即被动缓存)和根据热门查询请求主动调用外部查询服务并根据查询结果更新缓存(即主动缓存)相结合的方式,从而能够提高缓存数据的准确性,提升***的易用性的同时缓解外部查询服务的压力。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据查询的方法的主要步骤的示意图;
图2是适于实现本发明实施例的数据查询的方法的查询***的架构示意图;
图3是根据本发明实施例的数据查询的方法的主要流程的示意图;
图4是根据本发明实施例的数据查询的方法的缓存逻辑的示意图;
图5是根据本发明实施例的数据查询的方法的查询请求的同步和异步处理机制的示意图;
图6是根据本发明实施例的数据查询的装置的主要模块的示意图;
图7是本发明实施例可以应用于其中的示例性***架构图;
图8是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
如前所述,对于具有大数量访问的在线数据查询***而言,其核心业务场景,例如火车票的余票在线查询、机票余票的在线查询、酒店客房供应在线查询等,访问量远大于其他环节,尤其是在使用高峰期,其性能、体验直接影响后续利益转化。
以在线售卖火车票的业务***为例,其核心流程可以抽象为余票查询、购票、退票等几个场景,其中余票查询作为重要的一个环节又存在其一些特殊性:访问量远大于其他环节,尤其是在购票高峰期,其性能、体验直接影响后续下单流程;余票查询时并不需要用户登录,这样其被恶意用户使用自动化脚本攻击进而影响正常用户使用的可能性更大。
针对以上情况,本发明实施例中提出一种用户体验、抗风险能力、成本、通用性都较现有技术而言更优化的有效方案,能够提高缓存命中率,降低查询响应的延迟;并且可以提高业务***的可用性,提高业务***的抗风险能力,有效应对恶意用户的攻击。
在下文描述中,为了表述方便,将以火车票余票查询的应用场景为例,详细描述大数据量的数据查询请求的处理方案,但并不表示本发明实施例的数据查询的技术方案只适用于该种应用场景。凡是符合查询请求远大于写入请求、需要调用外部查询***的接口服务、外部查询***的处理能力有限、查询入参的变化大这几个情形的应用场景,均可使用本发明实施例的技术方案予以完善,均属本发明实施例的保护范围。
图1是根据本发明实施例的数据查询的方法的主要步骤的示意图,如图1所示,本发明实施例的一种数据查询的方法主要包括如下步骤:
步骤S101:根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则进行步骤S102。本步骤主要是为了实现在接收到查询请求之后,首先从缓存中获取数据,若缓存中未能获取数据,再从步骤S102开始调用外部查询服务接口进行数据查询,如此,可以减少后续外部查询服务的访问压力。
步骤S102:继续调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将查询到的数据更新至一级缓存和二级缓存中,若查询超时,则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间(例如可以但不限于设置为20秒)小于所述第二预设数据过期删除时间(例如可以但不限于设置为2小时)。数据过期删除时间的含义是指数据更新至缓存之后,在缓存中保存的时间超过过期删除时间之后,数据会被自动删除。
根据前述描述可知,为了平衡缓存的高命中率和查询数据的高准确性,本发明实施例采用如下查询策略:本发明实施例中,一级缓存和二级缓存属于查询***内部的缓存模块,外部查询服务接口是指查询***外部的各渠道供应商提供的查询服务接口。该接口是在一级缓存中查询不到数据的情况下才调用的。但是如果在调用外部查询服务接口进行查询服务时,查询超时,则放弃调用供应商的查询服务,转而从查询***内部的二级缓存中获取数据。本发明实施例中,之所以将二级缓存作为最后一道数据获取途径,一方面是因为二级缓存中存储的数据没有一级缓存中的数据准确,另一方面二级缓存中存储的数据较一级缓存中存储的时间长(即二级缓存中设置的第二预设数据过期删除时间较长,缓存命中率高于一级缓存。
本发明实施例中,调用外部查询服务接口进行数据查询可以采用同步和异步相结合的方式进行,具体而言:判断单位时间内的查询请求量是否大于预设请求量阈值,若不大于,则直接调用外部查询服务接口进行数据同步查询,若大于,则利用消息队列进行数据异步查询。
其中,利用消息队列进行数据异步查询包括:将查询请求发送至消息队列,并通知客户端所述查询请求为异步处理,以便所述客户端轮询获取数据异步查询结果;以及消息处理器在监听到所述消息队列中的查询请求之后,根据查询请求调用外部查询服务接口进行数据查询。
本发明实施例中,在调用外部查询服务接口进行数据查询之前,本发明实施例的数据查询的方法还可以包括:判断所述查询请求是否属于无效请求,若属于则不予查询,从而降低业务***的不必要的性能损耗。
此外,本发明实施例的数据查询的方法还可以包括主动缓存:即按照预设统计周期,利用历史查询请求数据统计热门查询请求,并根据所述热门查询请求调用外部查询服务接口进行数据查询,并将查询到的数据更新至一级缓存和/或二级缓存中。如此,可以有效保障缓存中数据的准确性,提高用户的体验。
图2是适于实现本发明实施例的数据查询的方法的查询***的架构示意图;图3是根据本发明实施例的数据查询的方法的主要流程的示意图。以下以火车票余票查询的应用场景为例,结合图2和图3对本发明实施例的数据查询的方法进行详细介绍。
如图2所示,适于实现本发明实施例的数据查询的方法的***主要可分为几个层面,客户端、缓存数据库、服务端和外部查询服务。在保障可用性的同时,***支持水平平滑扩展,可依据线上实际情况自由增减服务个数,其余各部件也支持集群处理,***具有很高的可扩展性。如图3所示,本发明实施例的数据查询的方法主要包括如下流程:通过缓存数据库实现一级缓存和二级缓存、通过主动缓存和被动缓存实现缓存数据的更新、通过请求路由层和消息队列实现查询请求的同步和/或异步处理。
图4是根据本发明实施例的数据查询的方法的缓存逻辑的示意图。如图4所示,本发明实施例中,通过缓存数据库实现主动缓存加被动缓存以及一级缓存加二级缓存。本发明实施例中的缓存数据库可以但不限于是Redis(Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API)或者针对Redis的集群化方案,例如京东基于原生Redis的集群化方案——京东内存数据库JimDB(Jingdong In Memory DataBase)。
首先***定义了一级缓存、二级缓存。其中,时效缓存(即一级缓存)的有效时间短,准确度高(例如可以但不限于设置第一预设数据过期删除时间为20秒),而长效缓存(即二级缓存)的有效时间长,准确度较低(例如可以但不限于设置第二预设数据过期删除时间为2小时)。当服务端接收到查询请求时,首先会查询一级缓存,如未查询到,则调用供应商提供的外部查询服务进行获取。在访问高峰期时段,如果供应商查询服务处理超时,则直接获取二级缓存中数据。通过设置二级缓存,在保证高峰期用户正常查询、下单的同时,也避免大量查询请求直接到达供应商查询服务,导致其无法正常处理,从而减少了外部查询服务的压力。
对于一级缓存、二级缓存的更新同步,一方面采用被动缓存,由用户的查询请求触发,不限于热门查询线路,通过调用供应商外部查询服务成功之后更新缓存;另一方面由***自身触发,按照预设统计周期主动调用供应商服务接口,获取热门线路的车次、余票信息保存到缓存数据库中。
图5是根据本发明实施例的数据查询的方法的查询请求的同步和异步处理机制的示意图。如图5所示,本发明实施例中,通过消息队列实现查询请求的同步、异步处理。
服务端在接收到余票查询请求之后,首先经过请求路由层,请求路由层依据当前请求量(本发明实施例中,缓存数据库承担记录请求量的工作。请求路由层从缓存数据库中获取当前请求量,同时将缓存数据库中记录的请求量加1。当前请求量的计算方式例如可以但不限于是计算单位时间内的查询请求量)选择处理方式,如果是无效请求(本发明实施例中无效请求即为非常规请求,主要可以包括:1、一些恶意用户随便篡改的入参,如:站点(例如:北京)入参篡改成一些代码(例如:<script>);2、一些不存在车次的站点(例如:东营-北京);3、高峰时定义为非常规查询线路(例如***未生成过订单的线路))则直接返回。
如果通过判断当前请求量可以同步处理(例如单位时间内的查询请求量不大于预设请求量阈值,该预设请求量阈值可以根据实际查询能力和查询需求而灵活设定和调整),则直接调用供应商的外部查询服务。
如果通过判断当前请求量需要异步处理(例如单位时间内的查询请求量大于预设请求量阈值,该预设请求量阈值可以根据实际查询能力和查询需求而灵活设定和调整),则发送查询请求消息到消息队列(本发明实施例中的消息队列例如可以但不限于是activemq,但是也可以选择其他的具有消息队列功能的组件,例如JMQ(JMQ是京东内部消息组自主研发的,提供可靠消息传递及数据的消息中间件平台,具有较高的可用性、扩展性和运维性)),同时通知客户端该查询请求进行异步处理,则客户端可以通过轮询调用结果查询接口的方式获取查询结果数据。
作为异步处理过程中进行查询请求处理的消息处理器,在监听到消息队列中有查询请求时,调用外部查询服务,成功获取数据之后,将结果数据缓存到应用服务器。
通过上述请求路由层以及消息队列,***可以将余票查询过程解耦,保障***高峰期较高的吞吐量,从而提升***处理能力和抗风险能力。
前述请求路由层根据当前请求量选择查询请求的处理方式的逻辑总结如下:过滤无效查询请求——判断***当前的有效请求量——大于预设请求量阈值异步/小于预设请求量阈值同步。
以下针对主动缓存进行示例性介绍:首先需要统计热门查询请求。本发明实施例中,根据历史查询请求数据进行统计。例如余票查询应用场景中,热门线路通过定时任务程序(即前述预设统计周期,例如可以但不限于是以一天为一个周期)分别统计例如全部、最近一个月、最近一周三个时间段的订单,依据订单数从高到底排序,对三部分数据进行加权再排序,取前100个“站站对”线路(此处100个并不限于该数目,只要是符合(站站对数×所统计的天数×单个请求处理平均时长)/处理线程数小于二级缓存中第二预设数据过期删除时间,即前述的2小时均可),将该100个“站站对”存入缓存中,待通过消息队列和消息处理器进行热门路线的主动缓存调用,并将查询结果主动更新至一级缓存和二级缓存中。
当然,本发明实施例中热门线路的计算算法还可以采取其他计算算法,例如根据实际应用场景的计算经验设定的经验计算方式;统计的数据采集点可以采用下单数据抑或是余票查询数据;计算方式可以采用总量、近期量、或者几部分的加权平均值等。
本发明实施例的数据查询的技术方案可以有效提升查询高峰期缓存利用率,大幅提升用户体验,进而对于查询及后期的利益转化的提升也有明显作用,同时有效提升了***对于高峰期/恶意攻击等情况的处理能力,提升了***可用性、易用性。
根据本发明实施例的数据查询的技术方案可以看出,因为采用一级缓存和二级缓存相结合的技术手段,进行数据查询的服务端在接收到查询请求之后,首先从一级缓存中查询数据,若查询到,则返回数据;若未查询到,则调用外部各渠道的供应商提供的查询服务接口,由外部各渠道供应商提供查询服务;但若外部供应商提供的查询服务查询超时,则从查询***内部的二级缓存查询数据并返回,即将查询***内部的二级缓存作为最后一道查询数据的途径,所以克服了现有技术中缓存命中率低的技术问题,进而达到提升缓存命中率,减少查询高峰期数据延迟的技术效果;通过建立查询路由层,依据当前***单位时间内的查询请求量动态切换请求方式为同步或异步,并结合消息队列等措施进行数据查询,从而能够提高业务***的可用性,提高业务***的抗风险能力,有效应对恶意用户的攻击;通过在调用外部查询服务接口进行数据查询之前,判断查询请求是否属于无效请求,若属于则不予查询,从而能够有效地减少不必要的性能消耗;通过采用将根据查询请求调用外部查询服务得到的结果更新至缓存(即被动缓存)和根据热门查询请求主动调用外部查询服务并根据查询结果更新缓存(即主动缓存)相结合的方式,从而能够提高缓存数据的准确性,提升***的易用性的同时缓解外部查询服务的压力。
图6是根据本发明实施例的数据查询的装置的主要模块的示意图。
如图6所示,本发明实施例的数据查询的装置600主要包括如下模块:一级缓存查询模块601和调用查询模块602。
其中,一级缓存查询模块601可用于根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则触发调用查询模块602;调用查询模块602可用于继续调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将所述查询到的数据更新至一级缓存和二级缓存中,若查询超时,则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间小于所述第二预设数据过期删除时间。
其中,调用查询模块602还可用于:判断单位时间内的查询请求量是否大于预设请求量阈值,若不大于,则直接调用外部查询服务接口进行数据同步查询,若大于,则利用消息队列进行数据异步查询。
具体而言,利用消息队列进行数据异步查询可以包括:将所述查询请求发送至消息队列,并通知客户端所述查询请求为异步处理,以便所述客户端轮询获取数据异步查询结果;以及消息处理器在监听到所述消息队列中的查询请求之后,根据所述查询请求调用外部查询服务接口进行数据查询。
此外,调用查询模块602还可用于:在调用外部查询服务接口进行数据查询之前,判断所述查询请求是否属于无效请求,若属于则不予查询。
本发明实施例中,装置600还可包括:主动缓存模块(图中未示出),用于按照预设统计周期,利用历史查询请求数据统计热门查询请求,并根据所述热门查询请求调用外部查询服务接口进行数据查询,并将查询到的数据更新至一级缓存和/或二级缓存中。
从以上描述可以看出,因为采用一级缓存和二级缓存相结合的技术手段,进行数据查询的服务端在接收到查询请求之后,首先从一级缓存中查询数据,若查询到,则返回数据;若未查询到,则调用外部各渠道的供应商提供的查询服务接口,由外部各渠道供应商提供查询服务;但若外部供应商提供的查询服务查询超时,则从查询***内部的二级缓存查询数据并返回,即将查询***内部的二级缓存作为最后一道查询数据的途径,所以克服了现有技术中缓存命中率低的技术问题,进而达到提升缓存命中率,减少查询高峰期数据延迟的技术效果;通过建立查询路由层,依据当前***单位时间内的查询请求量动态切换请求方式为同步或异步,并结合消息队列等措施进行数据查询,从而能够提高业务***的可用性,提高业务***的抗风险能力,有效应对恶意用户的攻击;通过在调用外部查询服务接口进行数据查询之前,判断查询请求是否属于无效请求,若属于则不予查询,从而能够有效地减少不必要的性能消耗;通过采用将根据查询请求调用外部查询服务得到的结果更新至缓存(即被动缓存)和根据热门查询请求主动调用外部查询服务并根据查询结果更新缓存(即主动缓存)相结合的方式,从而能够提高缓存数据的准确性,提升***的易用性的同时缓解外部查询服务的压力。
图7示出了可以应用本发明实施例的数据查询方法或数据查询装置的示例性***架构700。
如图7所示,***架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据查询方法一般由服务器705执行,相应地,数据查询装置一般设置于服务器705中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图8,其示出了适于用来实现本发明实施例的终端设备的计算机***800的结构示意图。图8示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图8所示,计算机***800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有***800操作所需的各种程序和数据。CPU 801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括一级缓存查询模块和调用查询模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,一级缓存查询模块还可以被描述为“根据接收到的查询请求,从一级缓存中查询数据的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则,继续调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将所述查询到的数据更新至一级缓存和二级缓存中,若查询超时,则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间小于所述第二预设数据过期删除时间。
根据本发明实施例的技术方案,因为采用一级缓存和二级缓存相结合的技术手段,进行数据查询的服务端在接收到查询请求之后,首先从一级缓存中查询数据,若查询到,则返回数据;若未查询到,则调用外部各渠道的供应商提供的查询服务接口,由外部各渠道供应商提供查询服务;但若外部供应商提供的查询服务查询超时,则从查询***内部的二级缓存查询数据并返回,即将查询***内部的二级缓存作为最后一道查询数据的途径,所以克服了现有技术中缓存命中率低的技术问题,进而达到提升缓存命中率,减少查询高峰期数据延迟的技术效果;通过建立查询路由层,依据当前***单位时间内的查询请求量动态切换请求方式为同步或异步,并结合消息队列等措施进行数据查询,从而能够提高业务***的可用性,提高业务***的抗风险能力,有效应对恶意用户的攻击;通过在调用外部查询服务接口进行数据查询之前,判断查询请求是否属于无效请求,若属于则不予查询,从而能够有效地减少不必要的性能消耗;通过采用将根据查询请求调用外部查询服务得到的结果更新至缓存(即被动缓存)和根据热门查询请求主动调用外部查询服务并根据查询结果更新缓存(即主动缓存)相结合的方式,从而能够提高缓存数据的准确性,提升***的易用性的同时缓解外部查询服务的压力。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (8)

1.一种数据查询的方法,其特征在于,包括:
根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则,
继续通过查询路由层从包括一级缓存和二级缓存的缓存数据库中获取当前总查询请求量,以确定同步或发送查询请求到消息队列异步调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将所述查询到的数据更新至一级缓存和二级缓存中,若查询超时则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间小于所述第二预设数据过期删除时间;
按照预设统计周期,利用历史查询请求数据统计热门查询请求,并根据所述热门查询请求调用外部查询服务接口进行数据查询,并将查询到的数据更新至一级缓存和/或二级缓存中;
其中,在调用外部查询服务接口进行数据查询之前,所述方法还包括:判断所述查询请求是否属于无效请求,若属于则不予查询。
2.根据权利要求1所述的方法,其特征在于,调用外部查询服务接口进行数据查询包括:
判断单位时间内的查询请求量是否大于预设请求量阈值,若不大于,则直接调用外部查询服务接口进行数据同步查询,若大于,则利用消息队列进行数据异步查询。
3.根据权利要求2所述的方法,其特征在于,利用消息队列进行数据异步查询包括:
将所述查询请求发送至消息队列,并通知客户端所述查询请求为异步处理,以便所述客户端轮询获取数据异步查询结果;以及
消息处理器在监听到所述消息队列中的查询请求之后,根据所述查询请求调用外部查询服务接口进行数据查询。
4.一种数据查询的装置,其特征在于,包括:
一级缓存查询模块,用于根据接收到的查询请求,从一级缓存中查询数据,若查询到数据则返回;否则触发调用查询模块,
调用查询模块,用于继续通过查询路由层从包括一级缓存和二级缓存的缓存数据库中获取当前总查询请求量,以确定同步或发送查询请求到消息队列异步调用外部查询服务接口进行数据查询,若查询未超时则将查询到的数据返回,并将所述查询到的数据更新至一级缓存和二级缓存中,若查询超时,则从二级缓存中查询数据并返回,其中,所述一级缓存具有第一预设数据过期删除时间,所述二级缓存具有第二预设数据过期删除时间,所述第一预设数据过期删除时间小于所述第二预设数据过期删除时间;
主动缓存模块,用于按照预设统计周期,利用历史查询请求数据统计热门查询请求,并根据所述热门查询请求调用外部查询服务接口进行数据查询,并将查询到的数据更新至一级缓存和/或二级缓存中;
其中,所述调用查询模块还用于:在调用外部查询服务接口进行数据查询之前,判断所述查询请求是否属于无效请求,若属于则不予查询。
5.根据权利要求4所述的装置,其特征在于,所述调用查询模块还用于:
判断单位时间内的查询请求量是否大于预设请求量阈值,若不大于,则直接调用外部查询服务接口进行数据同步查询,若大于,则利用消息队列进行数据异步查询。
6.根据权利要求5所述的装置,其特征在于,所述调用查询模块还用于:
将所述查询请求发送至消息队列,并通知客户端所述查询请求为异步处理,以便所述客户端轮询获取数据异步查询结果;以及
消息处理器在监听到所述消息队列中的查询请求之后,根据所述查询请求调用外部查询服务接口进行数据查询。
7.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-3中任一所述的方法。
8.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-3中任一所述的方法。
CN201710969976.3A 2017-10-18 2017-10-18 数据查询的方法和装置 Active CN109684358B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710969976.3A CN109684358B (zh) 2017-10-18 2017-10-18 数据查询的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710969976.3A CN109684358B (zh) 2017-10-18 2017-10-18 数据查询的方法和装置

Publications (2)

Publication Number Publication Date
CN109684358A CN109684358A (zh) 2019-04-26
CN109684358B true CN109684358B (zh) 2021-11-09

Family

ID=66183187

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710969976.3A Active CN109684358B (zh) 2017-10-18 2017-10-18 数据查询的方法和装置

Country Status (1)

Country Link
CN (1) CN109684358B (zh)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200356485A1 (en) * 2019-05-09 2020-11-12 International Business Machines Corporation Executing multiple data requests of multiple-core processors
US11321146B2 (en) 2019-05-09 2022-05-03 International Business Machines Corporation Executing an atomic primitive in a multi-core processor system
US11681567B2 (en) 2019-05-09 2023-06-20 International Business Machines Corporation Method and processor system for executing a TELT instruction to access a data item during execution of an atomic primitive
CN110287007A (zh) * 2019-05-20 2019-09-27 深圳壹账通智能科技有限公司 数据调用响应方法、服务器及计算机可读存储介质
CN112055039B (zh) * 2019-06-06 2022-07-26 阿里巴巴集团控股有限公司 数据访问方法、装置、***及计算设备
CN110290196B (zh) * 2019-06-20 2021-08-27 网宿科技股份有限公司 一种内容分发方法及装置
CN110413679B (zh) * 2019-07-31 2023-01-24 深圳前海微众银行股份有限公司 数据库信息处理方法、装置、设备及可读存储介质
CN110851477B (zh) * 2019-10-16 2022-09-09 浙江大搜车软件技术有限公司 流数据处理方法、装置、计算机设备和存储介质
CN110837521A (zh) * 2019-11-15 2020-02-25 北京金山云网络技术有限公司 数据查询方法、装置和服务器
CN111026962B (zh) * 2019-12-03 2023-09-22 泰康保险集团股份有限公司 层级关系查询响应时间降低方法、服务器和用户前端
CN110989939A (zh) * 2019-12-16 2020-04-10 中国银行股份有限公司 一种数据缓存处理方法、装置、设备及缓存组件
CN111209467B (zh) * 2020-01-08 2023-05-26 中通服咨询设计研究院有限公司 一种多并发多通道环境下的数据实时查询***
CN111309251A (zh) * 2020-01-21 2020-06-19 青梧桐有限责任公司 数据存储方法、***、电子设备及可读存储介质
CN111400349A (zh) * 2020-02-19 2020-07-10 北京值得买科技股份有限公司 一种多层缓存数据获取方法以及装置
CN111414383B (zh) * 2020-02-21 2024-03-15 车智互联(北京)科技有限公司 数据请求方法、数据处理***及计算设备
CN111414198B (zh) * 2020-03-18 2023-05-02 北京字节跳动网络技术有限公司 一种请求处理方法及装置
CN113535768A (zh) * 2020-04-15 2021-10-22 北京京东乾石科技有限公司 生产监控方法和装置
CN111858086B (zh) * 2020-06-15 2023-07-21 福建天泉教育科技有限公司 请求任务处理中队列超时的处理方法、存储介质
CN111782698A (zh) * 2020-07-03 2020-10-16 广州探途网络技术有限公司 缓存更新方法、装置及电子设备
CN111830039B (zh) * 2020-07-22 2021-07-27 南京认知物联网研究院有限公司 一种智能化的产品质量检测方法及装置
CN111949857B (zh) * 2020-08-13 2024-06-11 中国民航信息网络股份有限公司 一种航班查询请求的处理方法、装置及电子设备
CN112215453A (zh) * 2020-08-18 2021-01-12 汉海信息技术(上海)有限公司 一种库存信息处理方法、装置、电子设备及存储介质
CN112163001A (zh) * 2020-09-25 2021-01-01 同程网络科技股份有限公司 高并发查询方法、智能终端及存储介质
CN112487047A (zh) * 2020-11-02 2021-03-12 广州明珞装备股份有限公司 一种备件消耗数据查询方法、***和存储介质
CN112463813A (zh) * 2020-11-19 2021-03-09 贝壳技术有限公司 数据缓存方法、装置、电子设备和存储介质
CN112749195A (zh) * 2020-12-30 2021-05-04 广州凡科互联网科技股份有限公司 一种异步延时加载缓存的方法
CN113778390A (zh) * 2021-01-14 2021-12-10 北京沃东天骏信息技术有限公司 一种接口访问方法和装置
CN113114642B (zh) * 2021-03-30 2022-12-06 广州宸祺出行科技有限公司 一种接口整合的驾驶员身份认证方法及装置
CN113688129A (zh) * 2021-07-21 2021-11-23 中国铁道科学研究院集团有限公司电子计算技术研究所 一种联程运输数据编码方法与装置
CN113535782B (zh) * 2021-07-22 2024-05-07 成都数之联科技股份有限公司 一种bi报表查询响应方法、***、电子设备及计算机可读存储介质
CN113596177B (zh) * 2021-08-13 2023-06-27 四川虹美智能科技有限公司 智能家居设备的ip地址的解析方法和装置
CN114143376A (zh) * 2021-11-18 2022-03-04 青岛聚看云科技有限公司 一种用于加载缓存的服务器、显示设备及资源播放方法
CN114138840A (zh) * 2021-12-08 2022-03-04 中国建设银行股份有限公司 数据查询方法、装置、设备及存储介质
CN116028525A (zh) * 2023-03-31 2023-04-28 成都四方伟业软件股份有限公司 一种数据分片智能化管理方法
CN117112267B (zh) * 2023-10-20 2024-01-23 成都华栖云科技有限公司 一种应用接口的缓存维护方法
CN117785949B (zh) * 2024-02-28 2024-05-10 云南省地矿测绘院有限公司 一种数据缓存方法、电子设备、存储介质以及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103455605A (zh) * 2013-09-04 2013-12-18 电子科技大学 一种内网环境文件深度检索方法
CN103793485A (zh) * 2014-01-20 2014-05-14 锐达互动科技股份有限公司 客户端基于缓存数据实现查询网络数据的方法
CN104168300A (zh) * 2013-05-17 2014-11-26 中国电信股份有限公司 内容加速方法与***
CN104468807A (zh) * 2014-12-12 2015-03-25 北京小渔无限信息技术有限公司 进行网页缓存的处理方法、云端装置、本地装置及***
CN104767753A (zh) * 2015-04-08 2015-07-08 无锡天脉聚源传媒科技有限公司 一种服务器处理消息请求的方法及装置
CN106326389A (zh) * 2016-08-17 2017-01-11 深圳市金证科技股份有限公司 一种基于数据缓存的业务请求处理方法及***
CN107203613A (zh) * 2017-05-23 2017-09-26 北京微影时代科技有限公司 一种高并发请求处理的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101266609B (zh) * 2008-04-30 2010-06-23 中山爱科数字科技有限公司 数字远程医疗中实现医疗数据外部查询的方法
CN103530349A (zh) * 2013-09-30 2014-01-22 乐视致新电子科技(天津)有限公司 一种缓存更新方法及设备
CN106844784A (zh) * 2017-03-14 2017-06-13 上海网易小额贷款有限公司 数据缓存方法、装置及计算机可读存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104168300A (zh) * 2013-05-17 2014-11-26 中国电信股份有限公司 内容加速方法与***
CN103455605A (zh) * 2013-09-04 2013-12-18 电子科技大学 一种内网环境文件深度检索方法
CN103793485A (zh) * 2014-01-20 2014-05-14 锐达互动科技股份有限公司 客户端基于缓存数据实现查询网络数据的方法
CN104468807A (zh) * 2014-12-12 2015-03-25 北京小渔无限信息技术有限公司 进行网页缓存的处理方法、云端装置、本地装置及***
CN104767753A (zh) * 2015-04-08 2015-07-08 无锡天脉聚源传媒科技有限公司 一种服务器处理消息请求的方法及装置
CN106326389A (zh) * 2016-08-17 2017-01-11 深圳市金证科技股份有限公司 一种基于数据缓存的业务请求处理方法及***
CN107203613A (zh) * 2017-05-23 2017-09-26 北京微影时代科技有限公司 一种高并发请求处理的方法及装置

Also Published As

Publication number Publication date
CN109684358A (zh) 2019-04-26

Similar Documents

Publication Publication Date Title
CN109684358B (zh) 数据查询的方法和装置
CN109947668B (zh) 存储数据的方法和装置
CN110545246A (zh) 一种基于令牌桶的限流方法和装置
CN111614736A (zh) 网络内容资源调度方法、域名调度服务器及电子设备
CN110598138A (zh) 基于缓存的处理方法和装置
CN112445857A (zh) 一种基于数据库的资源配额管理方法和装置
CN113010818A (zh) 访问限流方法、装置、电子设备及存储介质
CN110019539A (zh) 一种数据仓库的数据同步的方法和装置
CN109428926B (zh) 一种调度任务节点的方法和装置
CN110321252B (zh) 一种技能服务资源调度的方法和装置
CN109388655A (zh) 一种动态控制数据访问的方法和装置
CN110071952B (zh) 服务调用量的控制方法和装置
CN113783913A (zh) 一种消息推送管理方法和装置
CN101388863A (zh) 一种wap网关提取业务的实现方法和***
CN111831503A (zh) 一种基于监控代理的监控方法和监控代理装置
CN116185578A (zh) 计算任务的调度方法和计算任务的执行方法
CN112688982B (zh) 一种用户请求处理方法和装置
CN115190125A (zh) 一种缓存集群的监控方法和装置
CN114374657A (zh) 一种数据处理方法和装置
CN112783914A (zh) 优化语句的方法和装置
CN111988403A (zh) 电子设备的请求处理方法、***、存储介质和电子设备
CN113329010B (zh) 一种用户访问管理的方法和***
CN113114611A (zh) 黑名单管理的方法和装置
CN113778909B (zh) 一种缓存数据的方法和装置
CN117478535B (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