首页> 中国专利> 高并发查询方法、智能终端及存储介质

高并发查询方法、智能终端及存储介质

摘要

本申请涉及一种高并发查询方法、智能终端及存储介质,包括:接收客户端的查询请求;响应于接收到的查询请求访问一级缓存,当一级缓存中存在该查询请求所对应的查询数据时,将查询数据发送至客户端;当一级缓存中没有该查询请求所对应的查询数据时,访问二级缓存;在二级缓存中存在查询请求所对应的查询数据时,对该查询数据进行过滤处理,并将过滤处理后的查询数据发送至客户端进行预展示;将过滤处理后的查询数据发送至客户端后,访问供应商数据,获取供应商数据中该查询请求所对应的查询数据,对该查询数据进行过滤处理,将过滤处理后的查询数据发送至客户端,使得供应商数据中的查询数据覆盖二级缓存中的查询数据。便于及时、准确的对数据进行更新。

著录项

  • 公开/公告号CN112163001A

    专利类型发明专利

  • 公开/公告日2021-01-01

    原文格式PDF

  • 申请/专利权人 同程网络科技股份有限公司;

    申请/专利号CN202011023623.2

  • 发明设计人 孙琪;

    申请日2020-09-25

  • 分类号G06F16/2455(20190101);G06F16/2453(20190101);G06F12/0811(20160101);

  • 代理机构

  • 代理人

  • 地址 215000 江苏省苏州市工业园区裕新路188号同程大厦A区4F-401室

  • 入库时间 2023-06-19 09:24:30

说明书

技术领域

本申请涉及信息查询技术领域,尤其是涉及一种高并发查询方法、智能终端及存储介质。

背景技术

随着网络信息技术的不断进步,移动终端应用程序也得以快速发展,以满足人们多样化需求,随之而来的也是业务的不断增长,用户基数越来越大、访问量越来越高,而购票处理系统从一开始设计的系统架构己经不能再支撑百万级的访问量,产品表现得越来越慢,消耗资源越来越高,用户等待时间越来越长。

例如在节假日出行人数的增多,系统的请求量直接上升,接口的耗时也变长,另外由于节假日票量的变化是很快的,容易导致系统数据更新不及时、不准确,使得用户体验较差。

发明内容

为了解决系统数据更新不及时的问题,本申请提供一种高并发查询方法、智能终端及存储介质。

第一方面,本申请提供的一种高并发查询方法,采用如下的技术方案:

一种高并发查询方法,包括:

接收客户端的查询请求;

响应于接收到的查询请求访问一级缓存,当一级缓存中存在该查询请求所对应的查询数据时,将查询数据发送至客户端;其中,所述一级缓存中存储有实时更新的热门数据;

当一级缓存中没有该查询请求所对应的查询数据时,访问二级缓存;在二级缓存中存在查询请求所对应的查询数据时,对该查询数据进行过滤处理,并将过滤处理后的查询数据发送至客户端进行预展示;所述二级缓存中存储有未进行实时更新的全量数据;

将所述过滤处理后的查询数据发送至客户端后,访问供应商数据,所述供应商数据中存储有实时更新的全量数据;获取供应商数据中该查询请求所对应的查询数据,对该查询数据进行过滤处理,将过滤处理后的查询数据发送至客户端,使得供应商数据中的查询数据覆盖二级缓存中的查询数据。

通过采用上述技术方案,当接收到查询请求时,访问一级缓存,若一级缓存中存在查询请求所对应的查询数据时,将该查询数据发送至客户端,则请求结束;若一级缓存中没有查询请求所对应的查询数据时,访问二级缓存,客户端展示二级缓存中的基础数据后,再访问供应商数据,使得客户端覆盖二级缓存中的基础数据并展示供应商数据中的实时数据,便于客户端展示实时、准确的数据。

另一方面,通过多级缓存的方式,便于承受高并发访问,满足高级别访问量,有效防止缓存击穿。

优选的,所述对该查询数据进行过滤处理具体设置为:

根据接收的查询请求获取对应的查询数据后,对该查询数据进行字段映射、数据格式的转换以及产品策略的映射。

通过采用上述技术方案,由于二级缓存中存储的数据以及供应商数据为供应商提供的原始代码,客户端不能直接使用,需要经过过滤处理进行字段映射、数据格式的转换以及产品策略的映射后,将二级缓存中存储的陈述句以及供应商数据转换为客户端能够使用的数据,便于客户端中数据的展示。

优选的,还包括:

在客户端展示供应商数据中查询数据的同时,判断该查询数据是否为热门数据,当判断为是时,根据供应商数据中的查询数据更新一级缓存与二级缓存;当判断为否时,根据供应商数据中的查询数据更新二级缓存。

通过采用上述技术方案,根据供应商数据中的查询数据便于对一级缓存和二级缓存终端中的数据进行更新,有效保证一级缓存与第二缓存内数据的准确性与实时性的同时,便于提高数据查询的效率。

优选的,还包括:

根据接收的所有查询请求生成查询日志;

根据查询日志以及分析规则生成热门数据,并对热门数据进行分类处理;

将热门数据发送至MQ,对MQ中的热门数据进行消费,并对该热门数据主动进行查询;

根据热门数据的查询结果实时更新一级缓存与二级缓存。

通过采用上述技术方案,热门数据不完全依赖客户端主动查询刷新,通过对MQ对热门数据主动进行查询,并能够根据查询结果实时更新一级缓存与二级缓存,进而便于热门数据进行及时、准确的更新,有效保证热门数据的实时准确性。

优选的,所述根据查询日志以及分析规则生成热门数据中的分析规则具体设置为:

获取查询日志中在设定时间段内每一查询数据的请求频次,并将请求频次高于设定值的查询数据设为热门数据。

通过采用上述技术方案,根据设定时间段内查询数据的请求频次的高低设置热门数据,通过对MQ中的热门数据进行主动查询,便于提高热门数据的实时准确性。

优选的,所述对热门数据进行分类处理具体包括:

根据热门数据在设定时间段内请求频次的高低对热门数据进行排序;

根据热门数据的排序以及分类规则将热门数据分为t1调取数据以及t2调取数据,t1和t2为对MQ中的热门数据主动进行消费的时间周期,且t1

其中,请求频次最高的热门数据为t1调取数据。

通过采用上述技术方案,根据热门数据的排序以及分类规则对热门数据进行分类,便于对MQ中的热门数据进行主动查询,进而提高热门数据的实时准确性。

优选的,在设定的时间段根据二级缓存中的数据在供应商数据中进行主动查询,并将查询结果存储在二级缓存中。

通过采用上述技术方案,在设定的时间段内根据二级缓存中的数据在供应商数据中主动进行查询,便于对二级缓存内数据进行更新,有效保证二级缓存数据的完整性和准确性。

优选的,还包括:

获取一级缓存与二级缓存内的数据;

判断一级缓存与二级缓存内是否存在预售期的全量数据,当一级缓存与二级缓存内没有预售期的全量数据时,查询供应商数据;

其中,预售期的全量数据为未来t天内的所有数据,且t>0。

判断供应商数据内是否存在预售期的全量数据,当供应商数据内存在预售期的全量数据时,对预售期的全量数据进行过滤处理,并将过滤处理后的预售期的全量数据存储至二级缓存中或存储至一级缓存以及二级缓存中。

通过采用上述技术方案,将预售期的全量数据存储至二级缓存中或存储至一级缓存以及二级缓存中,便于提高一级缓存与二级缓存内数据的完整性和准确性,进而提高用户的使用体验。

第二方面,本申请提供的一种智能终端,采用如下的技术方案:

一种智能终端,包括存储器和处理器,所述存储器上存储有能够被处理器加载并执行上述任一种方法的计算机程序。

通过采用上述技术方案,智能终端中的处理器可以根据存储器中存储的相关计算机程序,实现上述高并发查询方法,便于数据及时、准确地进行更新。

第三方面,本申请提供的一种计算机可读存储介质,采用如下的技术方案:

一种计算机可读存储介质,存储有能够被处理器加载并执行上述任一种方法的计算机程序。

通过采用上述技术方案,能够存储相应的程序,便于数据及时、准确地进行更新。

综上所述,本申请包括以下至少一种有益技术效果:

1.当接收到查询请求时,访问一级缓存,若一级缓存中存在查询请求所对应的查询数据时,将该查询数据发送至客户端,则请求结束;若一级缓存中没有查询请求所对应的查询数据时,访问二级缓存,客户端展示二级缓存中的基础数据后,再访问供应商数据,使得客户端覆盖二级缓存中的基础数据并展示供应商数据中的实时数据,便于客户端展示实时、准确的数据,从而提高数据的实时准确性;

2.通过对MQ中的热门数据进行消费,并主动进行查询,能够根据查询结果实时更新一级缓存与二级缓存,进而便于热门数据进行及时、准确的更新,有效保证热门数据的实时准确性。

附图说明

图1是本申请实施例高并发查询方法的流程框图;

图2是本申请实施例高并发查询方法的流程图;

图3是本申请实施例高并发查询方法的另一个流程框图;

图4是本申请实施例高并发查询方法的另一个流程框图。

具体实施方式

以下结合附图1-4对本申请作进一步详细说明。

本申请实施例公开一种高并发查询方法,参照图1和图2,包括以下步骤:

S10、接收请求:服务器接收客户端输入的查询请求;

S11、一级缓存查询:服务器响应于接收到的查询请求访问一级缓存,当一级缓存中存在该查询请求所对应的查询数据时,服务器将该查询数据发送至客户端,使得客户端展示实时更新的查询数据;

其中,一级缓存中存储有实时更新的热门数据。

S12、二级缓存查询:当一级缓存中没有该查询请求所对应的查询数据时,服务器访问二级缓存;当二级缓存中存在查询请求所对应的查询数据时,服务器对该查询数据进行过滤处理,并将过滤处理后的查询数据发送至客户端进行预展示,使得客户端展示二级缓存中的基础数据,该基础数据为未进行更新的查询数据。

其中,二级缓存中存储有未进行实时更新的全量数据,且二级缓存中存储的全量数据为供应商提供的原始代码,客户端不能直接使用,所以需要对二级缓存中的查询数据进行过滤处理。

具体的,过滤处理具体设置为:根据服务器接收的查询请求获取对应的查询数据后,对该查询数据进行字段映射、数据格式的转换以及产品策略的映射。

由于二级缓存中存储的全量数据为供应商提供的原始代码,客户端不能识别,所以需要对二级缓存中存储的原始代码进行转换。当二级缓存中存在查询请求所对应的查询数据时,需要对该查询数据依次进行字段映射以及数据格式的转换,例如原始代码使用的字段为ABC,而客户端能够识别的字段为abc,所以需要对二级缓存中的查询数据进行字段映射,将原始代码中的字段ABC转换为客户端能够识别的字段abc,使得客户端展示二级缓存中的查询数据。

在节假日或活动期间,客户端展示相对应的主题,所以需要根据对应的主题对二级缓存中的查询数据进行产品策略的映射,使得客户端展示二级缓存中的查询数据时与主题相对应。

S13、供应商数据查询:服务器将过滤处理后的查询数据发送至客户端,使得客户端展示二级缓存中的基础数据后,访问供应商数据;当供应商数据中存在所请求的查询数据时,对该查询数据进行过滤处理,将过滤处理后的查询数据发送至客户端,使得客户端覆盖二级缓存中的基础数据并展示供应商数据中的实时数据。

其中,供应商数据中存储有实时更新的全量数据,其供应商数据为供应商提供的原始代码,客户端不能直接使用,所以需要对供应商数据中的查询数据进行过滤处理。

S14、更新缓存:在客户端展示供应商数据中查询数据的同时,判断该查询数据是否为热门数据,当判断为是时,根据供应商数据中的查询数据更新一级缓存与二级缓存;当判断为否时,根据供应商数据中的查询数据更新二级缓存。

具体的,当服务器接收到查询请求时,访问一级缓存,若一级缓存中存在查询请求所对应的查询数据时,服务器将该查询数据发送至客户端,使得客户端展示一级缓存中的实时数据;若一级缓存中没有查询请求所对应的查询数据时,服务器访问二级缓存;

当二级缓存中存在查询请求所对应的查询数据时,服务器对该查询数据进行过滤处理,并将过滤处理后的查询数据发送至客户端,使得客户端展示二级缓存中的基础数据,该基础数据为二级缓存中未进行更新的数据。当客户端展示二级缓存中的基础数据后,服务器访问供应商数据。

当二级缓存中没有查询请求所对应的查询数据时,服务器直接访问供应商数据;

当供应商数据中存在查询请求所对应的查询数据时,服务器对该查询数据进行过滤处理,将过滤处理后的查询数据发送至客户端,使得客户端覆盖二级缓存中的基础数据并展示供应商数据中的实时数据。

当客户端展示供应商数据中的实时数据后,判断该查询数据是否为热门数据,当判断为是时,根据供应商数据中的查询数据更新一级缓存与二级缓存;当判断为否时,根据供应商数据中的查询数据更新二级缓存

另外,在设定的时间段会根据二级缓存中的全量数据在供应商数据内进行主动查询,并将查询结果存储在二级缓存中,便于提高二级缓存内数据的完整性以及准确性,有效防止缓存击穿。其中,缓存击穿是指热点key在某个时间点过期的时候,而恰好在这个时间点对这个Key有大量的并发请求过来,从而大量的请求打到db。

参照图3,在执行上述查询方法时,进行以下步骤:

S20、生成日志:服务器根据接收到的所有查询请求生成查询日志,并根据接收的查询请求对查询日志进行实时更新;

S21、生成热门数据:根据查询日志以及分析规则生成热门数据,并对热门数据进行分类处理;

其中,分析规则具体设置为:获取查询日志中在设定时间段内查询数据的请求频次,将请求频次高于设定值的查询数据设为热门数据,热门数据存储在一级缓存中。

分类处理具体包括:

S211、根据热门数据在设定时间段内的请求频次的高低对热门数据进行排序;

S212、根据热门数据的排序以及分类规则将热门数据分为t1调取数据以及t2调取数据,t1和t2为对热门数据主动进行消费的时间周期,且t1

其中,请求频次最高的热门数据为t1调取数据。

分类规则具体设置为:获取热门数据的数量,当热门数据的数量为偶数时,则将热门数据根据设定时间段内的请求频次按照从高到低的顺序均匀分为t1调取数据以及t2调取数据;当热门数据的数量为奇数时,首先将热门数据根据设定时间段内的请求频次按照从高到低的顺序均匀分为t1调取数据以及t2调取数据,剩余的一个热门数据划分为t2调取数据。

举例说明,若热门数据的数量为4个,t1为1s,t2为5s,则将在设定时间段内的请求频次高的两个热门数据分为1s调取数据,将在设定时间段内的请求频次低的两个热门数据分为5s调取数据;若热门数据的数量为5个,则将在设定时间段内的请求频次高的两个热门数据分为1s调取数据,将在设定时间段内的请求频次低的三个热门数据分为5s调取数据。

S22、主动查询:将热门数据发送至MQ,消费者根据MQ中热门数据所对应的时间周期对热门数据进行消费,并对该热门数据主动进行查询;

其中,MQ(Message Queue)消息队列,是基础数据结构中“先进先出”的一种数据结构,一般用来解决应用解耦、异步消息、流量削锋等问题,实现高性能、高可用、可伸缩和最终一致性架构。

S23、主动更新缓存:根据查询结果实时更新一级缓存与二级缓存。

举例来说,假设t1为1s,t2为5s,服务器根据接收到的所有查询数据请求生产查询日志,获取设定时间段内客户端的查询请求出现的频次,将出现频次高于设定值的查询请求所对应的查询数据设为热门数据,根据热门数据在查询日志中设定时间段内出现的频次按照分类规则将热门数据分为1s调取数据以及5s调取数据,其中出现频次最高的热门数据为1s调取数据。

对热门数据进行分类后,将热门数据发送至MQ中,消费者对MQ中的热门数据进行消费,即消费者间隔1s调取1s调取数据,间隔5s调取5s调取数据,并主动进行查询,将查询结果发送至服务器,服务器根据查询结果实时更新一级缓存与二级缓存。

参照图4,当执行上述查询方法时,进行以下步骤:

S30、获取数据:获取一级缓存与二级缓存内的数据;

S31、一级判断:判断一级缓存与二级缓存内是否存在预售期的全量数据,当一级缓存与二级缓存内没有预售期的全量数据时,查询供应商数据;

其中,预售期的全量数据为未来t天内的所有数据,且t>0。

S32、二级判断:判断供应商数据内是否存在预售期的全量数据,当供应商数据内存在预售期的全量数据时,对预售期的全量数据进行过滤处理,并将过滤处理后的预售期的全量数据存储至二级缓存或存储至一级缓存与二级缓存中。

具体的,车票的预售期为t天,服务器获取一级缓存与二级缓存内全部的数据,并判断一级缓存与二级缓存内是否存在未来t天的全量数据,当一级缓存与二级缓存内没有未来t天的全量数据时,查询供应商数据;判断供应商数据内是否存在未来t天的全量数据,当供应商数据内存在未来t天的全量数据时,对该数据进行字段映射、数据格式的转换以及产品策略的映射,同时,判断预售期的全量数据中是否存在热门数据,当预售期的全量数据中存在热门数据时,将预售期的全量数据中的热门数据存储至一级缓存中,将预售期的全量数据全部存储至二级缓存中;当预售期的全量数据中没有热门数据时,将预售期的全量数据全部存储至二级缓存中。当用户通过客户端查询预售期数据时,可以直接从一级缓存或二级缓存内调取。

本申请实施例还公开了一种智能终端,包括存储器和处理器,存储器上存储有能够被处理器加载并执行高并发查询方法的计算机程序。

本申请实施例还公开了一种计算机可读存储介质,存储有能够被处理器加载并执行高并发查询方法的计算机程序,计算机可读存储介质包括:U盘、移动硬盘、只读存储器、光盘等各种可以存储程序代码的介质。

以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,故:凡依本申请的结构、形状、原理所做的等效变化,均应涵盖于本申请的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号