发明内容
基于此,本发明提出了一种数据查询方法、装置、计算机设备和存储介质,以解决系统资源浪费的问题。
一种数据查询方法,包括:
接收目标数据查询请求;所述查询请求携带了查询条件;
基于所述查询条件生成对应的查询任务;
根据所述目标数据查询请求的请求类型,确定所述查询任务的任务等级;
将所述查询任务存储至任务队列;
按照所述任务等级以及当前空闲的线程数量在所述任务队列中拉取对应数量的查询任务;
基于所述当前空闲的线程执行相应查询任务,得到查询结果。
在其中一个实施例中,所述基于所述当前空闲的线程执行相应查询任务,得到查询结果包括:
获取第二服务器上报的负载数据;
根据所述负载数据计算所述查询任务执行失败的概率;
当所述执行失败的概率小于阈值时,基于所述当前空闲的线程执行相应查询任务,得到查询结果。
在其中一个实施例中,所述方法还包括:
当所述执行失败的概率大于或等于阈值时,丢弃所述目标数据查询请求。
在其中一个实施例中,所述方法还包括:
当所述执行失败的概率大于或等于阈值时,在缓存中查询与所述查询条件匹配的查询结果。
在其中一个实施例中,所述根据所述负载信息计算所述查询任务执行失败的概率包括:
获取所述第二服务器在目标时段内的访问失败次数;
确定所述负载数据所属的负载区间;
根据所述访问失败次数以及所述负载区间对应的概率预测值,计算所述查询任务执行失败的概率。
在其中一个实施例中,所述方法还包括:
对所述查询结果进行缓存;
当再次接收到包含相同查询条件的目标数据查询请求时,计算相邻两次接收到目标数据查询请求的时间差;
当所述时间差小于或等于阈值时,在所述缓存中查询所述当前的目标数据查询请求对应的查询结果。
在其中一个实施例中,所述方法还包括:
在得到查询任务的查询结果时,向所述查询任务对应的一个或多个发起方设备返回查询成功提示;
获取每个所述发起方设备的负载数据;
将所述查询结果发送至所述负载数据符合预设条件的发起方设备。
一种数据查询装置,包括:
接收模块,用于接收目标数据查询请求;所述查询请求携带了查询条件;
查询任务确定模块,用于基于所述查询条件生成对应的查询任务;根据所述目标数据查询请求的请求类型,确定所述查询任务的任务等级;将所述查询任务存储至任务队列;按照所述任务等级以及当前空闲的线程数量在所述任务队列中拉取对应数量的查询任务;
执行模块,用于基于所述当前空闲的线程执行相应查询任务,得到查询结果。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收目标数据查询请求;所述查询请求携带了查询条件;
基于所述查询条件生成对应的查询任务;
根据所述目标数据查询请求的请求类型,确定所述查询任务的任务等级;
将所述查询任务存储至任务队列;
按照所述任务等级以及当前空闲的线程数量在所述任务队列中拉取对应数量的查询任务;
基于所述当前空闲的线程执行相应查询任务,得到查询结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收目标数据查询请求;所述查询请求携带了查询条件;
基于所述查询条件生成对应的查询任务;
根据所述目标数据查询请求的请求类型,确定所述查询任务的任务等级;
将所述查询任务存储至任务队列;
按照所述任务等级以及当前空闲的线程数量在所述任务队列中拉取对应数量的查询任务;
基于所述当前空闲的线程执行相应查询任务,得到查询结果。
上述数据查询方法、装置、计算机设备和存储介质,通过优先处理高等级的查询任务,可以保障优先级更高的查询任务得到及时处理,从而提升查询结果的时效性;由于缓存查询任务至任务队列中,并根据任务优先级,依次处理查询任务,而非并行处理查询任务,可以减少因第一服务器高并发访问,无法同时处理大量查询任务,而造成整个业务系统瘫痪的现象,从而提升业务系统运行效率,进而减少系统资源浪费;根据第一服务器与第二服务器之间的网络带宽,确定线程池中的线程数,从而根据线程数,控制处理查询任务的最大并发量,进而限制拉取任务队列中查询任务的速度,以保持网络带宽流量稳定在一个平衡最优点,从而提升业务系统的响应效率。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的数据查询方法,可以应用于如图1所示的应用环境中。其中,用户终端110通过网络与第一服务器120进行通信;第一服务器120通过网络与第二服务器130进行通信。其中,用户终端110具有接入互联网功能,可以但不限于是手机、固定电话、平板电脑或便携式可穿戴设备等。用户终端110可以运行基于业务系统而生成的业务应用或网页,用户根据需要查询的目标数据,在用户终端110的业务应用或网页中,输入查询目标数据所需要的查询条件,用户终端110根据用户输入的查询条件生成目标数据查询请求,并将目标数据查询请求发送至第一服务器120。第一服务器120具体可以由独立的服务器或者是多个服务器组成的服务器集群实现。第一服务器120用于接收目标数据查询请求,根据目标数据查询请求生成相应的查询任务,并将查询任务发送至第二服务器130。第二服务器130上部署了一个或多个数据库。第二服务器130用于接收查询任务,根据查询任务在对应的数据库中确定查询结果,并将查询结果发送至用户终端110。第二服务器130可以是与第一服务器120属于同一服务器集群的其他服务器,也可以是第三方部署的服务器。
在一个实施例中,如图2所示,提供了一种数据查询方法,以该方法应用于图1中的第一服务器为例进行说明,包括以下步骤:
步骤S210,接收目标数据查询请求;查询请求携带了查询条件。
其中,查询条件是指用户基于需要查询的目标数据,在用户终端的业务应用或网页中,输入的查询到目标数据所需要的条件。查询条件可以包括多条查询子条件。
具体实现中,用户终端根据查询条件生成目标数据查询请求,并将目标数据查询请求发送至第一服务器。第一服务器接收目标数据查询请求,并从目标数据查询请求中提取查询条件。
例如,查询条件可以包括用户的基本信息和需要查询的项目。用户在业务系统中输入自身基本信息,如手机号、身份证号,并选择需要查询的项目后,如选择查询资信信息后,业务系统根据用户的基本信息和需要查询的项目,生成目标数据查询请求,并发送至第一服务器。第一服务器接收目标数据查询请求,并从目标数据查询请求中提取用户的基本信息和需要查询的项目。
步骤S220,基于查询条件生成对应的查询任务。
步骤S230,根据目标数据查询请求的请求类型,确定查询任务的任务等级。
其中,请求类型可以是反映目标数据请求所属业务的信息,不同业务的重要程度不同,第一服务器可以根据查询条件,确定的目标数据查询请求所属业务,根据所述业务,确定请求类型。如根据查询条件中的“需要查询资信信息”,确定目标数据查询请求所属的业务为资信信息查询,从而确定目标数据请求的请求类型为资信信息查询。任务等级可以是体现目标数据查询请求重要程度的数据,任务等级越高,可以认为目标数据查询请求越重要,应该得到优先处理。第一服务器中具有多种目标数据查询请求的请求类型与查询条件之间的对应关系;第一服务器中具有多种任务等级与请求类型之间的对应关系。
具体实现中,第一服务器接收到目标数据查询请求后,从查询请求中提取查询条件,根据预设关键字,从查询条件中筛选目标查询条件,并基于目标查询条件确定目标数据查询请求的请求类型。基于目标数据查询请求的请求类型,确定与请求类型对应的任务等级。
例如,第一服务器从目标数据查询请求中的查询条件中提取四条查询子条件,分别为“手机号:138****1111”、“身份证号:3621**********0000”、“会员号:223”和“查询项目:资信信息”;预设关键字为“查询项目”。第一服务器根据预设关键字,确定“查询项目:资信信息”这条查询子条件为目标查询条件,并基于目标查询条件,确定目标数据查询请求的请求类型为资信信息查询。根据请求类型,确定资信信息查询的任务等级。
步骤S240,将查询任务存储至任务队列。
其中,任务队列可以是用于存储查询任务的线性表,可以在任务队列的头部进行拉取查询任务和存储查询任务操作,在任务队列的尾部进行存储查询任务操作。第一服务器可以通过计算任务队列的队列长度,来统计任务队列中存储的查询任务的数量。
具体实现中,第一服务器在启动时根据任务等级初始化一个或多个任务队列。第一服务器可以将多个等级的任务队列存储至同一任务队列中,也可以根据任务等级,将查询任务存储至对应的任务队列中。第一服务器获取查询任务的任务等级,根据任务等级,将查询任务存储至对应的任务队列中。
例如,第一服务器中具有高、中、低三种等级的查询任务,第一服务器根据查询任务等级,在启动时初始化三个任务队列,每个任务队列用于存储同一种等级的查询任务,如三个任务队列依次用于存放高级、中级和低级的查询任务。第一服务器获取到查询任务的任务等级后,根据任务等级,将查询任务在任务队列的尾部写入对应的任务队列中。第一服务器优先处理位于任务队列头部的查询任务。
又例如,第一服务器中具有高、低两种等级的查询任务,第一服务器根据任务等级初始化一个任务队列,当获取到查询任务的任务等级为高级任务时,将查询任务写入队列头部,当获取到查询任务的任务等级为低级任务时,将查询任务写入队列尾部,第一服务器优先处理位于任务队列头部的查询任务。
步骤S250,按照任务等级以及当前空闲的线程数量在任务队列中拉取对应数量的查询任务。
其中,在第一服务器与第二服务器通信过程,若网络带宽不足,会引起通信阻塞,从而造成对目标数据查询请求响应延迟。第一服务器根据与第二服务器之间的网络带宽,在启动时初始化一个线程池,通过控制线程池的大小,来控制处理查询任务的最大并发数,从而限制拉取任务队列中查询任务的速度,以保持网络负载稳定在一个平衡最优点。例如,第一服务器获取网络带宽,根据网络带宽,计算当前网络所支持的最大线程数,根据最大线程数,确定线程池的大小。
具体实现中,第一服务器获取线程池中空闲的线程数。第一服务器按查询任务的任务等级顺序,定时轮询任务队列,当发现任务队列的长度不为零时,则从任务队列中拉取与空闲线程数对应的查询任务。
例如,一共有三个任务队列,依次用于存放高级、中级和低级的查询任务,为下文描述方便,将用于存放高级查询任务的任务队列,称为高级队列;将用于存储中级查询任务的任务队列,称为中级队列;将用于存储低级查询任务的任务队列,称为低级队列。第一服务器依次轮询高级队列、中级队列和低级队列中是否存储查询任务,当发现存放有高级任务队列的队列长度不为零时,第一服务器优先处理高级任务队列中的查询任务。更具体地,第一服务器获取高级任务队列的队列长度,和线程池中的空闲线程的数目,当队列长度小于或等于空闲的线程数时,则拉取高级任务队列中的全部查询任务,并利用空闲线程处理全部查询任务。剩余空闲线程用于处理中级或低级任务队列中的查询任务;当队列长度大于空闲的线程数时,则从任务队列头部开始,拉取与空闲的线程数相同的查询任务。
步骤S260,基于当前空闲的线程执行相应查询任务,得到查询结果.
具体实现中,当第一服务器从任务队列中拉取查询任务后,根据查询任务的数量,从线程池中分配与查询任务数量相同的空闲线程,用以执行查寻任务。
例如,当查询任务获得空闲线程后,第一服务器根据查询任务中,生成查询请求指令,并将查询请求发送至第二服务器。第二服务器接收查询请求指令,根据指令在相应的数据库中获取查询结果,并将查询结果返回至第一服务器。
本实施例中,通过目标数据查询请求的请求类型,可以确定查询任务的任务等级;通过确定查询任务的任务等级,可以按任务等级将查询任务存储至对应的任务队列中;基于当前空闲线程数,可以优先处理高等级的查询任务,得到查询任务的查询结果。通过优先处理高等级的查询任务,可以保障优先级更高的查询任务得到及时处理,从而提升查询结果的时效性;由于缓存查询任务至任务队列中,并根据任务优先级,依次处理查询任务,而非并行处理查询任务,可以减少因第一服务器高并发访问,无法同时处理大量查询任务,而造成整个业务系统瘫痪的现象,从而提升业务系统运行效率,进而减少系统资源浪费;根据第一服务器与第二服务器之间的网络带宽,确定线程池中的线程数,从而根据线程数,控制处理查询任务的最大并发量,进而限制拉取任务队列中查询任务的速度,以保持网络带宽流量稳定在一个平衡最优点,从而提升业务系统的响应效率。
在一个实施例中,该方法还包括:获取第二服务器上报的负载数据;根据负载数据计算查询任务执行失败的概率;当执行失败的概率小于阈值时,基于当前空闲的线程执行相应查询任务,得到查询结果。
其中,负载数据是表示计算机资源使用情况的数据,如当前CPU资源使用率、内存占有率,当负载数据越高时,可以认为计算机当前被占用的资源越多,此时计算机可能无法及时响应请求。第二服务器获取负载数据,并按照预设时间频率向第一服务器上报负载数据。阈值反映了计算机所能承受的负载最大值,阈值可以为70%乘以第二服务器的CPU总数。
具体实现中,第一服务器定时接收第二服务器反馈的负载数据,从负载数据中提取负载值,并计算多个负载值的平均负载值,基于平均负载值预测查询任务执行失败的概率。例如,第一服务器自当前时间起,每隔1分钟定时接收第二服务器上报的负载数据,具体地,第一服务器在第0分钟接收到的负载数据为1.7、在第1分钟接收到的负载数据为1.8、在第2分钟接收到的负载数据为1.5。第一服务器将第0分钟、第1分钟和第2分钟接收到的负载数据相加后除以3,得到平均负载值,将平均负载值乘以100%,得到任务执行失败的概率。当查询任务执行失败的概率小于阈值时,则可以认为第二服务器负载正常,能够及时响应第一服务器发送的查询请求指令,从而成功执行查询任务。第一服务器基于当前空闲的线程,生成查询请求指令,指使对应的第二服务器从数据库中获取相应的数据,并将数据作为查询结果返回至第一服务器。第一服务器接收查询结果,然后将查询结果缓存至内存中。
上述数据查询方法,通过获取第二服务器上报的负载数据,根据负载数据计算第二服务器的平均负载,当平均负载小于阈值时,才向第二服务器发送查询请求指令,可以减少当第二服务器发生故障时,第一服务器仍旧向第二服务器发送查询请求指令,从而与第二服务器进行多次不必要的交互,造成交互资源的浪费的情况。
在一个实施例中,该方法还包括:当执行失败的概率大于或等于阈值时,丢弃目标数据查询请求。
具体实现中,当平均负载值大于或等于阈值时,则可以认为第二服务器资源即将耗尽,不能够及时响应第一服务器发送的查询请求指令,此时第一服务器丢弃目标数据查询请求,并向用户终端返回查询失败提示。
上述数据查询方法,通过计算执行失败的概率,当失败概率大于阈值时,直接向用户终端返回查询失败提示,可以减少当第二服务器发生故障时,第一服务器仍旧向第二服务器转发查询请求指令,从而与第二服务器进行多次不必要的交互,造成交互资源的浪费的情况。
在一个实施例中,该方法还包括:当执行失败的概率大于或等于阈值时,在缓存中查询与查询条件匹配的查询结果。
其中,第一服务器中设有缓存区,用以存储查询条件、根据查询条件获取到的查询结果和开始缓存查询结果的时间。当第一服务器获取到当前查询结果时,第一服务器在缓存中查看是否已经存在与当前查询结果相对应的历史查询结果。当存在与当前查询结果相对应的历史查询结果时,第一服务器删除历史查询结果,缓存当前查询结果,并记录开始缓存查询结果的时间。第一服务器定时查看缓存中的查询结果的有效性,将当前时间减去开始缓存查询结果的时间,得到时间差,当时间差大于阈值时,可以认为查询结果无效,第一服务器删除无效的查询结果,并删除与无效的查询结果相对应的查询条件。
具体实现中,当平均负载值大于或等于阈值时,第一服务器可以认为此时第二服务器不能成功执行查询任务。第一服务器提取当前查询任务中的查询条件,并在缓存中查看是否已经存在当前查询任务中的查询条件,当存在当前查询任务中的查询条件,则可以认为缓存中存在当前查询任务的历史查询结果。当存在历史查询结果时,第一服务器获取历史查询结果,并将历史查询结果作为当前查询任务的查询结果发送至用户终端。
上述数据查询方法,通过计算执行失败的概率,当失败概率大于阈值时,从缓存中获取查询结果,可以减少当第二服务器发生故障时,第一服务器仍旧向第二服务器转发查询请求指令,从而与第二服务器进行多次不必要的交互,造成交互资源的浪费的情况。
在其中一个实施例中,上述数据查询方法还包括:获取第二服务器在目标时段内的访问失败次数;确定负载数据所属的负载区间;根据访问失败次数以及负载区间对应的概率预测值,计算查询任务执行失败的概率。
其中,负载区间是负载数据的集合,第一服务器根据负载数据的数据大小,将负载数据划分至对应的负载区间。第一服务器具有负载区间与查询任务执行失败的概率预测值之间的对应关系。
具体实现中,第一服务器统计在目标时段内,访问第二服务器访问失败的次数。第一服务器获取第二服务器上报的负载数据,根据负载数据,确定负载数据所属的负载区间,并根据负载区间,确定查询任务执行失败的概率预测值。综合计算访问失败次数,和负载区间对应的概率预测值,得到查询任务执行失败的概率,更具体地,将第二服务器在目标时段内的访问失败次数除以总访问次数,得到失败系数,将失败系数乘以负载区间对应的概率预测值,得到查询任务执行失败的概率。
上述数据查询方法,通过访问失败次数以及负载区间对应的概率预测值,可以计算查询任务执行失败的概率,从而根据执行失败的概率判断是否与第二服务器进行交互,进而可以减少当第二服务器发生故障时,第一服务器仍旧向第二服务器转发查询请求指令,而造成的交互资源浪费的情况。
在一个实施例中,该方法还包括:对查询结果进行缓存;当再次接收到包含相同查询条件的目标数据查询请求时,计算相邻两次接收到目标数据查询请求的时间差;当时间差小于或等于阈值时,在缓存中查询当前的目标数据查询请求对应的查询结果。
其中,阈值是查询结果的最长有效时间。
具体实现中,当第一服务器获取到目标数据查询请求时,根据查询请求中的查询条件,指使第二服务器返回与查询条件相对应的查询结果,并缓存查询结果和与查询结果相对应的查询条件至内存中。当第一服务器再次接收到包含相同查询条件的目标数据查询请求时,第一服务器计算相邻两次接收到目标数据查询请求的时间差,具体地,第一服务器获取接收后序目标数据查询请求的时间,和接收前序目标数据查询请求的时间,并将后序接收目标数据查询请求的时间,减去前序接收目标数据查询请求的时间,得到时间差。当时间差小于阈值时,从缓存中查询当前的目标数据查询请求对应的查询结果。
例如,第一服务器在12:00接收到目标数据查询请求,并接收与查询请求对应的查询结果。第一服务器在12:01再次接收到目标数据查询请求,第一服务器提取12:01接收到的目标数据查询请求中的查询条件,并查看12:01接收到的目标数据查询请求中的查询条件,是否与12:00接收到的目标数据查询请求中的查询条件相同。若相同,第一服务器将12:01减去12:00,得到时间差,当时间差小于阈值时,从缓存中查询当前的目标数据查询请求对应的查询结果。
上述数据查询方法,通过计算时间差,当时间差小于阈值时,才从缓存中查询与当前的目标数据查询请求对应的查询结果,从而提升数据查询的准确性;通过计算接收到目标数据查询请求的时间差,当时间差小于阈值时,从缓存中查询与当前的目标数据查询请求对应的查询结果,使第一服务器可以无需向第二服务器查询与当前的目标数据查询请求对应的查询结果,从缓存中即可快速确定查询结果,从而减少了查询时间,进而提升数据查询的效率;通过在第一服务器中设置缓存,可以解耦第一服务器与第二服务器,从而减少当第二服务器发生故障时,第一服务器无法获取查询结果的情况,进一步提升了数据查询的效率。
在一个实施例中,该方法还包括:在得到查询任务的查询结果时,向查询任务对应的一个或多个发起方设备返回查询成功提示;获取每个发起方设备的负载数据;将查询结果发送至负载数据符合预设条件的发起方设备。
其中,第一服务器中预先设置有消息队列,用于存放查询任务执行成功提示。在用户终端与第一服务器之间,还具有一个或多个发起方设备,用于订阅消息队列,并根据消息队列中的查询任务执行成功提示,获取、分析查询结果,然后将分析结果与查询结果一起发送至用户终端。
具体实现中,当第一服务器接收到查询结果时,将对应的查询成功提示存放至消息队列中。发起方设备订阅消息队列,当发现消息队列中存在查询成功提示后,发起方设备向第一服务器发送接收查询结果请求。第一服务器接收发起方设备发送的接收查询结果请求,并获取一个或多个发起方设备的负载数据,从负载数据中提取负载值,当发现负载值低于阈值的发起方设备时,则可以认为负载值低于阈值的发起方设备性能正常,可以成功接收、分析查询结果。第一服务器将查询结果发送至负载值低于阈值的发起方设备。发起方设备接收查询结果,根据查询结果做出合理化建议,如根据用户的资信信息,向用户推荐合适的理财产品,然后,将分析结果与查询结果一起发送至用户终端。
上述数据查询方法,通过设置消息队列,可以解耦第一服务器与设备发起方,从而降低设备发起方对第一服务器的依赖,进而提升整个业务系统的稳定性。通过分析发起方设备的负载数据,当发起方设备的平均负载低于阈值时,才将查询结果发送至发起方设备,可以消除发起方设备之间的负载不平衡,从而提高了整个业务系统的反应速度与总体性能。
为了便于本领域技术人员的理解,如图3所示,提供一种数据查询流程图。发起方设备接收用户终端发送的目标数据查询请求,并将查询请求发送至第一服务器。第一服务器接收目标数据查询请求,并根据查询请求生成查询任务,第一服务器确定查询任务的优先级,根据任务的优先级将查询任务缓存至对应的任务队列中。第一服务器保存目标数据查询请求的请求标识,根据请求标识,向发起方设备发送正在处理查询请求提示。第一服务器优先处理高优先级的查询任务,根据线程池中空闲线程的数量,从任务队列中拉取对应数量的查询任务,并将查询任务发送至第二服务器。第二服务器接收查询任务,返回与查询任务对应的查询结果至第一服务器。第一服务器接收并缓存查询结果,然后,将查询成功提示通过消息队列将查询成功提示发送至发起方设备。发起方设备接收查询成功提示,通过调用第一服务器的缓存接口,从缓存中获取查询结果。
为了便于本领域技术人员的理解,如图4所示,提供了另一种数据查询流程图。第一服务器具有一个或多个根据第二服务器上报的故障提示所制定的预案,用于预先设定,当第二服务器故障时,应该如何处理目标数据查询请求。第一服务器接收目标数据查询请求,并根据查询请求生成查询任务,然后发送至第二服务器。第二服务器由于系统故障,向第一服务器返回故障提示。第一服务器获取故障提示,并根据故障提示,选择相应的预案,根据预案处理目标数据查询请求,如根据预案,从缓存中获取与目标数据查询请求相对应的查询结果,并将查询结果发送至发起方设备。
在一个实施例中,如图5所示,提供了一种数据查询装置,包括:接收模块510、查询任务确定模块520、执行模块530,其中:
接收模块510,用于接收目标数据查询请求;查询请求携带了查询条件;
查询任务确定模块520,用于基于查询条件生成对应的查询任务;根据目标数据查询请求的请求类型,确定查询任务的任务等级;将查询任务存储至任务队列;按照任务等级以及当前空闲的线程数量在任务队列中拉取对应数量的查询任务;
执行模块530,用于基于当前空闲的线程执行相应查询任务,得到查询结果。
在一个实施例中,上述执行模块530还包括:概率计算模块5310,用于确定目标数据查询请求对应的第二服务器;获取第二服务器上报的负载数据;根据负载数据计算查询任务执行失败的概率;当执行失败的概率小于阈值时,基于当前空闲的线程执行相应查询任务,得到查询结果。更具体地,获取所述第二服务器在目标时段内的访问失败次数;确定所述负载数据所属的负载区间;根据访问失败次数以及负载区间对应的概率预测值,计算查询任务执行失败的概率;当执行失败的概率大于或等于阈值时,丢弃目标数据查询请求;当执行失败的概率大于或等于阈值时,在缓存中查询与查询条件匹配的查询结果。
在一个实施例中,该装置还包括缓存模块540,用于对查询结果进行缓存;当再次接收到包含相同查询条件的目标数据查询请求时,计算相邻两次接收到目标数据查询请求的时间差;当时间差小于或等于阈值时,在缓存中查询当前的目标数据查询请求对应的查询结果。
在一个实施例中,该装置还包括返回查询结果模块550,用于在得到查询任务的查询结果时,向查询任务对应的一个或多个发起方设备返回查询成功提示;获取每个发起方设备的负载数据;将查询结果发送至所述负载数据符合预设条件的发起方设备。
关于数据查询装置的具体限定可以参见上文中对于数据查询方法的限定,在此不再赘述。上述数据查询装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
上述提供的数据查询装置可用于执行上述任意实施例提供的数据查询方法,具备相应的功能和有益效果。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是第一服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的用户终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询方法.
本领域技术人员可以理解,图6中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
接收目标数据查询请求;查询请求携带了查询条件;
基于查询条件生成对应的查询任务;
根据目标数据查询请求的请求类型,确定查询任务的任务等级;
将查询任务存储至任务队列;
按照任务等级以及当前空闲的线程数量在任务队列中拉取对应数量的查询任务;
基于当前空闲的线程执行相应查询任务,得到查询结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取第二服务器上报的负载数据;
根据负载数据计算查询任务执行失败的概率;
当执行失败的概率小于阈值时,基于当前空闲的线程执行相应查询任务,得到查询结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当执行失败的概率大于或等于阈值时,丢弃目标数据查询请求。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
当执行失败的概率大于或等于阈值时,在缓存中查询与查询条件匹配的查询结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
获取第二服务器在目标时段内的访问失败次数;
确定负载数据所属的负载区间;
根据访问失败次数以及负载区间对应的概率预测值,计算查询任务执行失败的概率。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
对查询结果进行缓存;
当再次接收到包含相同查询条件的目标数据查询请求时,计算相邻两次接收到目标数据查询请求的时间差;
当时间差小于或等于阈值时,在缓存中查询当前的目标数据查询请求对应的查询结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在得到查询任务的查询结果时,向查询任务对应的一个或多个发起方设备返回查询成功提示;
获取每个发起方设备的负载数据;
将查询结果发送至负载数据符合预设条件的发起方设备。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收目标数据查询请求;查询请求携带了查询条件;
基于查询条件生成对应的查询任务;
根据目标数据查询请求的请求类型,确定查询任务的任务等级;
将查询任务存储至任务队列;
按照任务等级以及当前空闲的线程数量在任务队列中拉取对应数量的查询任务;
基于当前空闲的线程执行相应查询任务,得到查询结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取第二服务器上报的负载数据;
根据负载数据计算查询任务执行失败的概率;
当执行失败的概率小于阈值时,基于当前空闲的线程执行相应查询任务,得到查询结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当执行失败的概率大于或等于阈值时,丢弃目标数据查询请求。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
当执行失败的概率大于或等于阈值时,在缓存中查询与查询条件匹配的查询结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
获取第二服务器在目标时段内的访问失败次数;
确定负载数据所属的负载区间;
根据访问失败次数以及负载区间对应的概率预测值,计算所述查询任务执行失败的概率。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
对查询结果进行缓存;
当再次接收到包含相同查询条件的目标数据查询请求时,计算相邻两次接收到目标数据查询请求的时间差;
当时间差小于或等于阈值时,在缓存中查询所述当前的目标数据查询请求对应的查询结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在得到查询任务的查询结果时,向查询任务对应的一个或多个发起方设备返回查询成功提示;
获取每个发起方设备的负载数据;
将查询结果发送至负载数据符合预设条件的发起方设备。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。