一种基于时间窗口缓存提升API查询并发量的方法和系统与流程

文档序号:37190796发布日期:2024-03-01 13:00阅读:21来源:国知局
一种基于时间窗口缓存提升API查询并发量的方法和系统与流程

本发明涉及api查询请求,尤其涉及一种基于时间窗口缓存提升api查询并发量的方法和系统。


背景技术:

1、缓存api接口查询结果是提高api性能的有效方法,恰当的使用缓存可以避免额外的数据库查询开销,从而提升api查询并发量。目前,api平台采用的缓存的方式如图1所示,当收到api查询请求,优先读缓存,如果读取不到缓存再查询数据库,然后将查询结果写入缓存。

2、在实际应用中,api平台使用如图1所示的缓存方式,存在以下缺点:1.当缓存过期时间设定短,会导致每次流量高峰大多数请求等不到缓存写入故缓存命中很低;2.当缓存过期时间设定长,会导致查不到最新数据,且第一波流量高峰的缓存命中仍然很低;3.需要通过读取缓存的方式来判断缓存是否存在,这种方式速度太慢,也影响api的并发性能。以按城市名称查天气预报api的场景为例,当api平台在某个时刻收到大批查询北京天气的请求时,绝大部分请求都来不及读取到缓存,直接就走了接口查询方法;当下一波天气查询的高峰来临时,又不一定查询的是北京天气,即使再次查询北京天气读取到缓存,这个缓存数据也可能不是最新的。

3、因此,如何提供一种在提高缓存命中率的同时提高查询并发量和效率的方法,成为亟待解决的技术问题。


技术实现思路

1、有鉴于此,为了克服现有技术的不足,本发明旨在提供一种基于时间窗口缓存提升api查询并发量的方法和系统。

2、根据本发明的第一方面,提供一种基于时间窗口缓存提升api查询并发量的方法,包括:

3、接收api查询请求,根据接收的api查询请求和当前时间构建缓存key,根据构建的缓存key从缓存控制容器中匹配对应的控制元素;

4、采用匹配的控制元素对api查询请求进行标记和分类,获得头部查询请求和后继查询请求;

5、监听缓存写入状态,根据监听的缓存写入状态分别执行头部查询请求和后继查询请求,对控制元素进行更新。

6、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,接收api查询请求,根据接收的api查询请求和当前时间构建缓存key,根据构建的缓存key从缓存控制容器中匹配对应的控制元素,包括:

7、接收api查询请求,从接收的api查询请求中获取接口地址和请求参数;

8、根据当前时间以及获取的接口地址和请求参数构建缓存key,将构建的缓存key发送至缓存控制容器;

9、根据同步计数器、缓存写入状态以及构建的缓存key构建对应的控制元素。

10、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,根据同步计数器、缓存写入状态以及构建的缓存key构建对应的控制元素,包括:

11、判断缓存控制容器中是否已经存在所述构建的缓存key;

12、当缓存控制容器中已经存在所述构建的缓存key,根据所述构建的缓存key从缓存控制容器中匹配具有相同缓存key的控制元素,作为api查询请求的控制元素;

13、当缓存控制器中不存在所述构建的缓存key,根据同步计数器、缓存写入状态以及构建的缓存key初始化控制容器中的一个控制元素,将初始化的控制元素作为api查询请求的控制元素。

14、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,采用匹配的控制元素对api查询请求进行标记和分类,获得头部查询请求和后继查询请求,包括:

15、采用控制元素中的同步计数器,根据请求标记算法设置标记分类阈值,并为对应的api查询请求进行序号标记;

16、将api查询请求的序号标记与标记分类阈值进行比较;

17、将序号标记小于标记分类阈值的api查询请求作为头部查询请求,将序号标记不小于标记分类阈值的api查询请求作为后继查询请求。

18、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,监听缓存写入状态,根据监听的缓存写入状态分别执行头部查询请求和后继查询请求,对控制元素进行更新,包括:

19、对头部查询请求优先发起对应的缓存写入状态监听,当监听到的缓存写入状态为false,查询数据库,将数据库查询结果作为api查询请求的查询结果,并将数据库查询结果写入由查询结果和缓存key构建的时间窗口缓存中,根据缓存key将控制元素中的对应的缓存写入状态更新为true;

20、当监听到的缓存写入状态为true,根据缓存key从时间窗口缓存中获取对应的查询结果,将获取的查询结果返回至对应的api查询请求,根据缓存key将控制元素中的对应的缓存写入状态更新为true。

21、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,监听缓存写入状态,根据监听的缓存写入状态分别执行头部查询请求和后继查询请求,对控制元素进行更新,包括:

22、为头部查询请求设置最大数据阈值和时间窗口阈值,当头部查询请求获得的查询结果的数据量不大于最大数据阈值且所述头部查询请求的查询时间在时间窗口阈值内,将头部查询请求对应的查询结果缓存至本地内存;

23、当头部查询请求获得的查询结果的数据量大于设置的最大数据阈值或者所述头部查询请求的查询时间不在时间窗口阈值内,将头部查询请求对应的查询结果缓存至中间件。

24、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,监听缓存写入状态,根据监听的缓存写入状态分别执行头部查询请求和后继查询请求,对控制元素进行更新,还包括:

25、在api查询请求发起当前时间窗口的查询时,对前一个时间窗口的缓存进行失效处理,为失效处理的缓存设置延迟销毁时间阈值,在缓存失效处理达到延迟销毁时间阈值后,对失效的缓存进行销毁处理;

26、为写入本地内存或中间件的缓存设置过期销毁时间阈值,所述过期销毁时间阈值大于时间窗口,当写入本地内存或中间件的缓存的缓存时间达到过期销毁时间阈值,对相应的缓存进行销毁。

27、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,监听缓存写入状态,根据监听的缓存写入状态分别执行头部查询请求和后继查询请求,对控制元素进行更新,包括:

28、为后继查询请求设置轮询间隔,根据设置的轮询发起对应的缓存写入状态监听,当监听到的缓存写入状态为false,继续根据轮询间隔进行等待;

29、当监听到的缓存写入状态为true,根据缓存key从由查询结果和缓存key构建的时间窗口缓存中获取对应的查询结果,将获取的查询结果返回至对应的api查询请求,根据缓存key将控制元素中的对应的缓存写入状态更新为true。

30、优选地,本发明基于时间窗口缓存提升api查询并发量的方法中,监听缓存写入状态,根据监听的缓存写入状态分别执行头部查询请求和后继查询请求,对控制元素进行更新,还包括:为后继查询请求设置轮询超时阈值和轮询间隔延长阈值,当大于轮询超时阈值或轮询间隔延长阈值后还未发起与后继查询请求相关的缓存写入状态监听时,查询数据库,将数据库查询结果作为api查询请求的查询结果,并将数据库查询结果写入由查询结果和缓存key构建的时间窗口缓存中。

31、根据本发明的第二方面,提供一种基于时间时间窗口缓存提升api查询并发量的系统,该系统包括查询服务端,该查询服务端用于接收api查询请求,根据接收的api查询请求和当前时间构建缓存key,根据构建的缓存key从缓存控制容器中匹配对应的控制元素;采用匹配的控制元素对api查询请求进行标记和分类,获得头部查询请求和后继查询请求;监听缓存写入状态,根据监听的缓存写入状态分别执行头部查询请求和后继查询请求,对控制元素进行更新。

32、根据本发明的第三方面,提供一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现本发明第一方面所述的方法。

33、本发明基于时间时间窗口缓存提升api查询并发量的方法和系统,解决了api使用传统缓存的方式在高并发情况下命中低以及预热后的api缓存又不是实时数据的问题,将时间窗口缓存应用于api查询,通过一个个时间窗口滚动缓存最新的查询结果,保证api接口在任何流量高峰时段,绝大部分请求都能读到实时缓存,极大减小了查询数据库的开销,显著提升了api的并发性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1