CN113220722A - 数据查询方法、装置、计算机设备和存储介质 - Google Patents

数据查询方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN113220722A
CN113220722A CN202110453019.1A CN202110453019A CN113220722A CN 113220722 A CN113220722 A CN 113220722A CN 202110453019 A CN202110453019 A CN 202110453019A CN 113220722 A CN113220722 A CN 113220722A
Authority
CN
China
Prior art keywords
cache
fragment
query
data
segment
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
CN202110453019.1A
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.)
Shenzhen Yunwangwandian Technology Co ltd
Original Assignee
Shenzhen Yunwangwandian 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 Shenzhen Yunwangwandian Technology Co ltd filed Critical Shenzhen Yunwangwandian Technology Co ltd
Priority to CN202110453019.1A priority Critical patent/CN113220722A/zh
Publication of CN113220722A publication Critical patent/CN113220722A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种数据查询方法、装置、计算机设备和存储介质。所述方法包括:接收查询请求,根据查询请求在缓存中查询对应的数据,缓存至少包括一个缓存分片;在从缓存中无法查询到对应的数据时,计算查询请求对应路由至的目标缓存分片;在目标缓存分片为异常分片时,根据查询请求从数据库中查询对应的数据。采用本方法能够在全量缓存场景下查询出现异常时减轻数据库系统的压力、提高数据库系统的稳定性。

Description

数据查询方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据查询方法、装置、计算机设备和存储介质。
背景技术
随着数据处理技术的发展,出现了数据的缓存技术,缓存技术的原理是当系统需要读取一个数据时,首先从缓存中查找,如果找到,则立即读取,如果没有找到,就用相对慢的速度从数据库或者其他区域读取数据。
一般情况下,缓存中只存放热点数据,但是,在例如电商等行业,可能所有数据在某个时间点都属于热点数据,需要对全量数据进行缓存才能满足系统性能要求。
传统技术中,全量缓存场景下查询出现异常时,采用重新加载全量缓存或切换查询逻辑,使得所有请求都降级为可以穿透缓存进入数据库进行查询的逻辑,因此,会增加数据库系统的压力,威胁数据库系统的稳定性。
发明内容
基于此,有必要针对上述技术问题,提供一种能够在全量缓存场景下查询出现异常时减轻数据库系统的压力、提高数据库系统的稳定性的数据查询方法、装置、计算机设备和存储介质。
一种数据查询方法,上述方法包括:
接收查询请求,根据查询请求在缓存中查询对应的数据,缓存至少包括一个缓存分片;
在从缓存中无法查询到对应的数据时,计算查询请求对应路由至的目标缓存分片;
在目标缓存分片为异常分片时,根据查询请求从数据库中查询对应的数据。
在一个实施例中,异常分片为缓存检测键失活的缓存分片、发生主分片实例和从分片实例切换的缓存分片和节点发生改变的缓存分片中的至少一种。
在一个实施例中,根据查询请求从数据库中查询对应的数据之前,上述方法还包括:
获取数据库当前的查询并发线程的数量,在数量小于预设阈值时,进入根据查询请求从数据库中查询对应的数据的步骤。
在一个实施例中,根据查询请求从数据库中查询对应的数据之后,方法还包括:
将查询到的数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,上述方法还包括:
在从缓存中查询到对应的数据时,计算缓存中查询请求对应的数据的过期时间;
若缓存中查询请求对应的数据已经过期,调用异步线程将数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,上述方法还包括:
在目标缓存分片不是异常分片时,向请求发起端返回表征无查询结果的提示信息。
在一个实施例中,上述方法还包括:
周期性地获取各缓存分片的缓存检测键;其中,各缓存分片分别被设置对应有唯一的缓存检测键;
在检测到至少一个缓存检测键被删除时,将被删除的缓存检测键对应的缓存分片确定为异常分片。
在一个实施例中,上述方法还包括:
在缓存分片的主分片实例和从分片实例之间发生切换时,将发生了主分片实例和从分片实例切换的缓存分片的缓存检测键删除,并将发生了主分片实例和从分片实例切换的缓存分片确定为异常分片。
在一个实施例中,上述方法还包括:
在检测到对缓存进行扩容或缩容的操作时,将节点发生变动的缓存分片确定为异常分片。
一种数据查询装置,上述装置包括:
缓存查询模块,用于接收查询请求,根据查询请求在缓存中查询对应的数据,缓存至少包括一个缓存分片;
分片计算模块,用于在从缓存中无法查询到对应的数据时,计算查询请求对应路由至的目标缓存分片;
查询降级模块,用于在目标缓存分片为异常分片时,根据查询请求从数据库中查询对应的数据。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的数据查询方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的数据查询方法的步骤。
上述数据查询方法、装置、计算机设备和存储介质,在根据查询请求不能从缓存中查询到对应数据时,可以通过判断该查询请求对应路由至的缓存分片是否为异常分片,在该缓存分片是异常分片时,将路由至该缓存分片的查询请求做降级处理,即允许该查询请求进入数据库查询相应数据,从而实现针对单个异常分片的查询请求的降级,在全量缓存出现异常的情况下不需要全量重新加载数据也不需要全量缓存都降级,从而可以减轻数据库系统的压力、提高数据库系统的稳定性。
附图说明
图1为一个实施例中数据查询方法的应用环境图;
图2为一个实施例中数据查询方法的流程示意图;
图3为一个应用实例中数据查询的流程示意图;
图4为一个应用实例中采用异步任务检测缓存分片是否失活的流程示意图;
图5为一个应用实例中对配置中心异常分片的配置变更进行监控的流程示意图;
图6为个应用实例中缓存系统客户端完成主从切时异步修改异常分片配置的流程示意图;
图7为一个实施例中数据查询装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请提供的数据查询方法,可以应用于如图1所示的应用环境中。其中,应用服务器102接收查询请求,根据查询请求可以调用缓存服务器104在缓存中查询对应的数据,缓存至少包括一个缓存分片,在从缓存中无法查询到对应的数据时,应用服务器102计算查询请求对应路由至的目标缓存分片,在目标缓存分片为异常分片时,根据查询请求可以调用数据库服务器106从数据库中查询对应的数据。其中,服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种数据查询方法,以该方法应用于图1中的应用服务器为例进行说明,包括以下步骤:
步骤S202:接收查询请求,根据查询请求在缓存中查询对应的数据,缓存至少包括一个缓存分片。
其中,缓存指的是数据交换的缓冲区,这里的缓存可以看作业务系统与数据库系统之间的缓冲区。缓存可以基于分布式系统实现,例如,可以是基于redis服务器集群实现缓存的部署。缓存分片是指缓存中存储数据的数据分片,在分布式缓存的数据存储方案中为了使得集群能够水平扩展,将全量数据按照一定的规则分配到多个节点上进行分片存储,全量数据的缓存中至少包括一个缓存分片。查询请求为指示进行数据查询的请求。
具体地,应用服务器可以接收终端发送的查询请求,根据该查询请求调用缓存服务器在整个缓存中查询该查询请求对应的数据。例如,在基于redis集群实现的分布式缓存下,redis的数据存储结构一般是采用键-值对(key-value)的形式,因此,查询请求中可以包括缓存查询的键(key),根据该缓存查询的键(key)在缓存中查询对应的值(value)。
步骤S204:在从缓存中无法查询到对应的数据时,计算查询请求对应路由至的目标缓存分片。
其中,缓存中包括至少一个缓存分片。目标缓存分片是指该查询请求在缓存中对应的数据所存储在的那个缓存分片。
具体地,当根据查询请求无法在缓存中查询到对应的数据时,即在数据全量缓存的场景下出现了无法查到数据的异常时,可以计算该查询请求对应路由至的缓存分片,其计算方式不限,可以采用一致性Hash算法等,通过计算确定出目标缓存分片。
步骤S206:在目标缓存分片为异常分片时,根据查询请求从数据库中查询对应的数据。
其中,异常分片是指被确定为存在异常的缓存分片。异常分片可以包括缓存检测键被删除的缓存分片、发生主分片实例和从分片实例切换的缓存分片或节点发生改变的缓存分片等,除上述几种情况下的缓存分片可以被确定为属于异常分片以外,异常分片的确定还可以根据业务需要进行自定义设置等。
具体地,在确定出目标缓存分片之后,可以进一步判断该目标缓存分片是否为异常分片,例如,每一个缓存分片对应有各自的分片名称,可以根据配置中心配置出的异常分片的分片名称与该目标缓存分片的分片名称进行匹配,从而判断出目标缓存分片是否属于异常分片,若是,则可以将路由至该目标分片的该查询请求进行降级处理,以使得该查询请求可以穿透缓存从数据库中查询对应数据。
上述数据查询方法,在根据查询请求不能从缓存中查询到对应数据时,可以通过判断该查询请求对应路由至的缓存分片是否为异常分片,在该缓存分片是异常分片时,将路由至该缓存分片的查询请求做降级处理,即允许该查询请求进入数据库查询相应数据,从而实现针对单个异常分片的查询请求的降级,在全量缓存出现异常的情况下不需要全量重新加载数据也不需要全量缓存都降级,从而可以减轻数据库系统的压力、提高数据库系统的稳定性。
在一个实施例中,异常分片为缓存检测键失活的缓存分片、发生主分片实例和从分片实例切换的缓存分片和节点发生改变的缓存分片中的至少一种。
对于缓存检测键失活的缓存分片,在全量数据加载至缓存后,系统会为缓存的各个缓存分片分别加载唯一对应的缓存检测键,在发生宕机或者其他操作导致缓存检测键删除时,也即是缓存检测键失活时,系统可以将缓存检测键失活的缓存分片确定为异常分片,进一步地,系统还可以在配置中心将缓存检测键失活的缓存分片的分片名称记入异常分片一栏。
缓存检测键可以采用如下生成方式:缓存加载完毕后,系统在所有缓存分片中都会保存一个缓存检测键,这个缓存检测键可以根据缓存分片的一致性hash算法计算,从而确保每个缓存检测键不论缓存是否扩缩容都能精准路由至对应的缓存分片,缓存检测键的过期时间可以设置为永不失效。缓存检测键的生成规则可以是节点名称加*号加节点权重加虚拟节点索引,即如果分片名称是shardName,权重是1,虚拟节点索引为0(虚拟节点索引可以为0~159中的任意一个整数),该缓存分片对应的缓存检测键为shardName*10。
在一个实施例中,上述方法还包括:周期性地获取各缓存分片的缓存检测键;其中,各缓存分片分别被设置对应有唯一的缓存检测键;在检测到至少一个缓存检测键被删除时,将被删除的缓存检测键对应的缓存分片确定为异常分片。
在本实施例中,可以设置异步任务周期性地对各缓存分片的缓存检测键的活性进行检测,从而在检测到缓存检测键失活的缓存分片时,及时、准确地将检测到的缓存分片确定为异常分片。
更为具体地,异步任务检测各缓存分片的缓存检测键活性的步骤可以包括:
1.全量缓存加载完毕,在所有缓存分片中加载缓存检测键。
2.每隔一定的时间,异步任务查询所有缓存检测键,判断缓存检测键以及其对应的field是否存在,以此判断各个缓存分片是否存在数据完全丢失的情况,即未做持久化的主从分片全部宕机的场景。
3.如果检测到某个缓存检测键失活的情况,则更新配置中心中异常分片的信息。
对于发生主分片实例和从分片实例切换的缓存分片而言,一般情况下,缓存分片包含主分片实例和从分片实例,主从分片实例中存储的数据会进行同步,然而,主从分片实例的切换会导致未同步完成的缓存数据丢失,所以,当发生主从分片实例切换的时候就可能造成缓存数据的缺失,因此,可以将发生主分片实例和从分片实例切换的缓存分片确定为异常分片。
在一个实施例中,上述方法还包括:在检测到缓存分片的主分片实例和从分片实例之间发生了切换操作时,将发生了主分片实例和从分片实例切换的缓存分片的缓存检测键删除,并将发生了主分片实例和从分片实例切换的缓存分片确定为所述异常分片。
在本实施例中,可以通过检测主从分片切换的操作,及时将发生主从分片切换的缓存分片确定为异常分片。
更为具体地,可以在缓存系统的客户端新增一个接口,如果需要在主从分片切换后执行特定的业务操作,可以通过这个接口传递给缓存服务器的客户端。指示缓存服务器在主从分片切换完成后执行回调,将发生了主分片实例和从分片实例切换的缓存分片确定为所述异常分片,并将发生了主分片实例和从分片实例切换的缓存分片的缓存检测键删除。
对于节点发生改变的缓存分片,在缓存进行扩容或缩容时,其缓存分片所对应的节点集合会发生变更,因此,可以将几点发生改变的缓存分片确定为异常缓存分片。
在一个实施例中,上述方法还包括:在检测到对缓存进行扩容或缩容的操作时,将节点发生变动的缓存分片确定为异常分片。本实施例,通过监听配置中心缓存分片的节点集合配置的变化,可以及时将节点集合改变(即发生了扩容或缩容)的缓存分片确定为异常分片。
在一个实施例中,根据查询请求从数据库中查询对应的数据之前,上述方法还包括:获取数据库当前的查询并发线程的数量,在数量小于预设阈值时,进入根据查询请求从数据库中查询对应的数据的步骤。
在本实施例中,可以通过判断数据库当前的并发线程的数量是否达到数据库流量控制的阈值,若否,则可以继续执行从数据库中查询对应的数据的步骤,否则,则可以报错或将查询请求的线程挂起等,等待流量充足时再进行查询。通过进行流量控制可以进一步提高数据库系统的稳定性。
在一个实施例中,根据查询请求从数据库中查询对应的数据之后,上述方法还包括:将查询到的数据库中查询请求对应的数据重新加载至缓存。
本实施例,通过将从数据库中查询到的该查询请求对应的数据重新加载至缓存,可以填补缓存中数据的缺失,提高下次查询的速度,而且本方案仅是将异常分片中缺失的数据重新加载至缓存,使得数据的重新加载更有针对性,从而减少了系统资源的浪费。
在一个实施例中,上述方法还包括:在从缓存中查询到对应的数据时,计算缓存中查询请求对应的数据的过期时间;若缓存中查询请求对应的数据已过期,调用异步线程将数据库中查询请求对应的数据重新加载至缓存。
计算数据过期时间是为了提高缓存与数据库的一致性,因为在数据全量缓存的情况下,如果数据库与缓存的操作由于某些原因造成了存储数据的内容不一致的问题,那么错误的缓存数据无法得到修改,所以在系统不稳定,出问题的可能性大的情况下,可以计算数据的逻辑过期时间,如果数据已经过期,可以设置异步线程,在间隔一定的时间后再次重新加载数据至缓存,保证缓存与数据库的内容一致,如果系统稳定、功能成熟,也可以不计算逻辑时间,提高系统性能。
在一个实施例中,上述方法还包括:在目标缓存分片不是异常分片时,向请求发起端返回表征无查询结果的提示信息。
在本实施例中,当目标缓存分片不是异常分片时,可以不对目标缓存分片做查询降级处理,也即是,路由至该分片的查询请求不会穿透缓存,从而可以实现有针对性地进行查询降级,进一步减轻数据库系统的压力,提高数据库系统的稳定性。
下面,结合应用实例,对本申请涉及的数据查询方法进行进一步详细说明,如图3所示,图3示出了一个应用实例中数据查询方法的流程示意图。具体细节过程可以如下:
1、客户端根据全量缓存key查询全量缓存数据。
2、判断redis服务端返回是否有值。
3、如果redis服务端返回没有值。
3.1、判断该缓存当前是否存在异常分片。
3.2、如果该缓存不存在异常分片,则直接返回无值。
3.3、如果该缓存存在异常分片。
3.3.1、根据一致性Hash算法计算当前全量缓存Key路由至哪个分片。
3.3.2、判断路由的分片是否属于异常分片。
3.3.3、如果路由的分片不属于异常分片,则直接返回无值。
3.3.4、如果路由的分片属于异常分片。
3.3.4.1、判断是否达到流控阈值。
3.3.4.2、如果达到流控阈值直接报错。
3.3.4.3、如果没有达到流控阈值则查询数据库。
3.3.4.4、判断是否查出数据。
3.3.4.5、如果查出数据。
3.3.4.5.1、将结果加载至缓存value。
3.3.4.5.2、缓存key过期时间设置永不失效。
3.3.4.6、如果未查出数据。
3.3.4.6.1、将NOTEXIST字符串加载至缓存value。
3.3.4.6.2、从配置中心获取值不存在时的失效时间并设置为缓存key的过期时间。
3.3.4.7、将当前时间加载至缓存loadTime。
3.3.4.8、将缓存value返回给业务,如果value为NOTEXIST,则返回时转换为null。
其中,图4示出了一个应用实例中采用异步任务检测缓存分片是否失活的流程示意图,具体步骤可以如下所示:
异步Job监控流程(每个机房每隔10s执行一次):
1、根据配置中心redis配置的节点名称生成所有缓存检测key
2、遍历全量缓存对应的field
3、根据缓存检测key和field查询全量hash缓存
4、根据缓存结果计算全量缓存对应的异常分片
5、比较公共配置库中全量缓存的异常分片配置和redis缓存计算的异常分片信息是否一致
6、如果一致,则退出本次检活
7、如果不一致
a)更新公共配置库中该全量缓存对应的异常分片
b)清除公共配置库配置的Ehcache缓存
c)告警通知系统人员
图5示出了一个应用实例中对配置中心异常分片的配置变更进行监控的流程示意图,具体步骤可以如下所示:
检测配置中心redis节点配置变更流程(redis扩缩容修改shardName节点集合)
1、配置中心redis节点配置变更
2、数据变更下发应用服务器
3、判断shardName节点集合是否变更
4、如果没有变更,则退出
5、如果有变更
a)删除所有缓存检测key缓存
b)修改公共配置Ehcache中全量缓存对应的异常分片配置为all
图6示出了一个应用实例中缓存系统客户端完成主从切时异步修改异常分片配置的流程示意图,具体步骤可以如下所示:
redis客户端实时监控,Sentinel完成主从切换通知客户端流程:
1、Sentinel完成主从切换
2、Sentinel下发主从failover消息给redis客户端
3、redis客户端调整主从缓存信息
4、redis客户端异步线程池调用通知业务系统方法
a)修改Ehcache缓存中所有全量缓存类型的异常分片
b)删除该异常分片对应的缓存检测key
流量控制逻辑:
1、应用初始化时构造一个以精确到秒的时间为key,LongAdder对象为value的ConcurrentHashMap。
2、下次透库查询时构建LongAdder对象,通过map的putIfAbsent方法向该map中赋值,如果已存在该秒的LongAdder对象则直接使用已存在的对象,否则使用新构建的对象。
3、通过该对象的sum方法和配置中心中的阈值判断是否触发流控。
4、如果触发流控则报错。
5、如果没有触发流控则调用LongAdder对象的increment方法加一。
6、应用初始化时另启一个线程定期从这个Map集合中移除过期的key。
应该理解的是,虽然图2-6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种数据查询装置,包括:缓存查询模块702、分片计算模块704和查询降级模块706,其中:
缓存查询模块702,用于接收查询请求,根据查询请求在缓存中查询对应的数据,缓存至少包括一个缓存分片;
分片计算模块704,用于在从缓存中无法查询到对应的数据时,计算查询请求对应路由至的目标缓存分片;
查询降级模块706,用于在目标缓存分片为异常分片时,根据查询请求从数据库中查询对应的数据。
在一个实施例中,查询降级模块706根据查询请求从数据库中查询对应的数据之前,还用于获取数据库当前的查询并发线程的数量,在数量小于预设阈值时,进入根据查询请求从数据库中查询对应的数据的步骤。
在一个实施例中,查询降级模块706根据查询请求从数据库中查询对应的数据之后,还用于将查询到的数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,缓存查询模块702还用于在从缓存中查询到对应的数据时,计算缓存中查询请求对应的数据的过期时间;若缓存中查询请求对应的数据已经过期,调用异步线程将数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,查询降级模块706还用于在目标缓存分片不是异常分片时,向请求发起端返回表征无查询结果的提示信息。
在一个实施例中,上述装置包括异常监控模块708,异常监控模块708用于周期性地获取各缓存分片的缓存检测键;其中,各缓存分片分别被设置对应有唯一的缓存检测键;在检测到至少一个缓存检测键被删除时,将被删除的缓存检测键对应的缓存分片确定为异常分片。
在一个实施例中,异常监控模块708用于在缓存分片的主分片实例和从分片实例之间发生切换时,将发生了主分片实例和从分片实例切换的缓存分片的缓存检测键删除,并将发生了主分片实例和从分片实例切换的缓存分片确定为异常分片。
在一个实施例中,异常监控模块708用于在检测到对缓存进行扩容或缩容的操作时,将节点发生变动的缓存分片确定为异常分片。
关于数据查询装置的具体限定可以参见上文中对于数据查询方法的限定,在此不再赘述。上述数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储业务数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询方法。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:接收查询请求,根据查询请求在缓存中查询对应的数据,缓存至少包括一个缓存分片;在从缓存中无法查询到对应的数据时,计算查询请求对应路由至的目标缓存分片;在目标缓存分片为异常分片时,根据查询请求从数据库中查询对应的数据。
在一个实施例中,处理器执行计算机程序实现根据查询请求从数据库中查询对应的数据之前,还实现以下步骤:获取数据库当前的查询并发线程的数量,在数量小于预设阈值时,进入根据查询请求从数据库中查询对应的数据的步骤。
在一个实施例中,处理器执行计算机程序实现根据查询请求从数据库中查询对应的数据之后,还实现以下步骤:将查询到的数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在从缓存中查询到对应的数据时,计算缓存中查询请求对应的数据的过期时间;若缓存中查询请求对应的数据已经过期,调用异步线程将数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在目标缓存分片不是异常分片时,向请求发起端返回表征无查询结果的提示信息。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:周期性地获取各缓存分片的缓存检测键;其中,各缓存分片分别被设置对应有唯一的缓存检测键;在检测到至少一个缓存检测键被删除时,将被删除的缓存检测键对应的缓存分片确定为异常分片。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在缓存分片的主分片实例和从分片实例之间发生切换时,将发生了主分片实例和从分片实例切换的缓存分片的缓存检测键删除,并将发生了主分片实例和从分片实例切换的缓存分片确定为异常分片。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:在检测到对缓存进行扩容或缩容的操作时,将节点发生变动的缓存分片确定为异常分片。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收查询请求,根据查询请求在缓存中查询对应的数据,缓存至少包括一个缓存分片;在从缓存中无法查询到对应的数据时,计算查询请求对应路由至的目标缓存分片;在目标缓存分片为异常分片时,根据查询请求从数据库中查询对应的数据。
在一个实施例中,计算机程序被处理器执行实现根据查询请求从数据库中查询对应的数据之前,还实现以下步骤:获取数据库当前的查询并发线程的数量,在数量小于预设阈值时,进入根据查询请求从数据库中查询对应的数据的步骤。
在一个实施例中,计算机程序被处理器执行实现根据查询请求从数据库中查询对应的数据之后,还实现以下步骤:将查询到的数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在从缓存中查询到对应的数据时,计算缓存中查询请求对应的数据的过期时间;若缓存中查询请求对应的数据已经过期,调用异步线程将数据库中查询请求对应的数据重新加载至缓存。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在目标缓存分片不是异常分片时,向请求发起端返回表征无查询结果的提示信息。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:周期性地获取各缓存分片的缓存检测键;其中,各缓存分片分别被设置对应有唯一的缓存检测键;在检测到至少一个缓存检测键被删除时,将被删除的缓存检测键对应的缓存分片确定为异常分片。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在缓存分片的主分片实例和从分片实例之间发生切换时,将发生了主分片实例和从分片实例切换的缓存分片的缓存检测键删除,并将发生了主分片实例和从分片实例切换的缓存分片确定为异常分片。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:在检测到对缓存进行扩容或缩容的操作时,将节点发生变动的缓存分片确定为异常分片。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种数据查询方法,所述方法包括:
接收查询请求,根据所述查询请求在缓存中查询对应的数据,所述缓存至少包括一个缓存分片;
在从所述缓存中无法查询到对应的数据时,计算所述查询请求对应路由至的目标缓存分片;
在所述目标缓存分片为异常分片时,根据所述查询请求从数据库中查询对应的数据。
2.根据权利要求1所述的方法,其特征在于,所述异常分片为缓存检测键失活的缓存分片、发生主分片实例和从分片实例切换的缓存分片和节点发生改变的缓存分片中的至少一种。
3.根据权利要求1所述的方法,其特征在于,所述根据所述查询请求从数据库中查询对应的数据之前,所述方法还包括:
获取所述数据库当前的查询并发线程的数量,在所述数量小于预设阈值时,进入所述根据所述查询请求从数据库中查询对应的数据的步骤。
4.根据权利要求1所述的方法,其特征在于,所述根据所述查询请求从数据库中查询对应的数据之后,所述方法还包括:
将查询到的所述数据库中所述查询请求对应的数据重新加载至所述缓存。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在从所述缓存中查询到对应的数据时,计算所述缓存中所述查询请求对应的数据的过期时间;
若缓存中所述查询请求对应的数据已经过期,调用异步线程将所述数据库中所述查询请求对应的数据重新加载至所述缓存。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述目标缓存分片不是异常分片时,向请求发起端返回表征无查询结果的提示信息。
7.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
周期性地获取各缓存分片的缓存检测键;其中,各缓存分片分别被设置对应有唯一的缓存检测键;
在检测到至少一个缓存检测键被删除时,将被删除的缓存检测键对应的缓存分片确定为所述异常分片;
和/或,
在缓存分片的主分片实例和从分片实例之间发生切换时,将发生了主分片实例和从分片实例切换的缓存分片的缓存检测键删除,并将发生了主分片实例和从分片实例切换的缓存分片确定为所述异常分片;
和/或,
在检测到对所述缓存进行扩容或缩容的操作时,将节点发生变动的缓存分片确定为所述异常分片。
8.一种数据查询装置,其特征在于,所述装置包括:
缓存查询模块,用于接收查询请求,根据所述查询请求在缓存中查询对应的数据,所述缓存至少包括一个缓存分片;
分片计算模块,用于在从所述缓存中无法查询到对应的数据时,计算所述查询请求对应路由至的目标缓存分片;
查询降级模块,用于在所述目标缓存分片为异常分片时,根据所述查询请求从数据库中查询对应的数据。
9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202110453019.1A 2021-04-26 2021-04-26 数据查询方法、装置、计算机设备和存储介质 Pending CN113220722A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110453019.1A CN113220722A (zh) 2021-04-26 2021-04-26 数据查询方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110453019.1A CN113220722A (zh) 2021-04-26 2021-04-26 数据查询方法、装置、计算机设备和存储介质

Publications (1)

Publication Number Publication Date
CN113220722A true CN113220722A (zh) 2021-08-06

Family

ID=77089088

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110453019.1A Pending CN113220722A (zh) 2021-04-26 2021-04-26 数据查询方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN113220722A (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150127599A1 (en) * 2013-11-07 2015-05-07 Dirk Schiebeler Stateless database cache
CN108182213A (zh) * 2017-12-20 2018-06-19 福建新大陆软件工程有限公司 一种基于分布式系统的数据处理优化装置及方法
US20180218038A1 (en) * 2017-01-30 2018-08-02 International Business Machines Corportation Database optimization based on forecasting hardware statistics using data mining techniques
CN110795457A (zh) * 2019-09-24 2020-02-14 苏宁云计算有限公司 数据缓存处理方法、装置、计算机设备和存储介质
CN112597202A (zh) * 2020-12-28 2021-04-02 江苏苏宁物流有限公司 数据查询方法、装置、计算机设备和存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150127599A1 (en) * 2013-11-07 2015-05-07 Dirk Schiebeler Stateless database cache
US20180218038A1 (en) * 2017-01-30 2018-08-02 International Business Machines Corportation Database optimization based on forecasting hardware statistics using data mining techniques
CN108182213A (zh) * 2017-12-20 2018-06-19 福建新大陆软件工程有限公司 一种基于分布式系统的数据处理优化装置及方法
CN110795457A (zh) * 2019-09-24 2020-02-14 苏宁云计算有限公司 数据缓存处理方法、装置、计算机设备和存储介质
CN112597202A (zh) * 2020-12-28 2021-04-02 江苏苏宁物流有限公司 数据查询方法、装置、计算机设备和存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴秋莉 等: ""智能电网海量数据实时搜索技术研究"", 《电力信息与通信技术》, vol. 14, no. 12, 15 December 2016 (2016-12-15), pages 38 - 45 *

Similar Documents

Publication Publication Date Title
CN111049902B (zh) 基于区块链网络的数据存储方法、装置、存储介质和设备
CN110995468B (zh) 待分析系统的系统故障处理方法、装置、设备和存储介质
CN110113224B (zh) 容量监控方法、装置、计算机设备及存储介质
CN108834086B (zh) 短信发送的方法、装置、计算机设备和存储介质
CN110602169B (zh) 服务调用方法、装置、计算机设备和存储介质
CN110489429B (zh) 数据获取方法、装置、计算机可读存储介质和计算机设备
CN112463448B (zh) 分布式集群数据库同步方法、装置、设备及存储介质
CN105069152B (zh) 数据处理方法及装置
CN109992390B (zh) 定时任务调度方法以及定时任务处理方法
CN109460252B (zh) 基于git的配置文件处理方法、装置和计算机设备
CN110753099A (zh) 分布式缓存系统以及缓存数据更新方法
CN111159233B (zh) 分布式缓存方法、系统、计算机设备以及存储介质
CN111078733A (zh) 批量任务处理方法、装置、计算机设备和存储介质
CN112256433B (zh) 基于Kafka集群的分区迁移方法和装置
CN108763046B (zh) 线程运行监控方法、装置、计算机设备和存储介质
CN111198921A (zh) 数据库的切换方法、装置、计算机设备和存储介质
CN115509756A (zh) 多集群计算任务提交方法及相关装置、设备
CN113220722A (zh) 数据查询方法、装置、计算机设备和存储介质
CN112070585A (zh) 订单状态统一管理方法、装置、计算机设备和存储介质
CN115277678B (zh) 文件下载方法、装置、计算机设备及存储介质
Longo et al. An approach for resiliency quantification of large scale systems
CN114564153B (zh) 一种卷映射解除方法、装置、设备和存储介质
CN112698926B (zh) 数据处理方法、装置、设备、存储介质及系统
CN110555017A (zh) 区块链数据清理方法、装置、计算机设备和存储介质
CN113497737A (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