CN114461684A - 数据校验方法、装置、程序产品、计算机设备和介质 - Google Patents

数据校验方法、装置、程序产品、计算机设备和介质 Download PDF

Info

Publication number
CN114461684A
CN114461684A CN202210129663.8A CN202210129663A CN114461684A CN 114461684 A CN114461684 A CN 114461684A CN 202210129663 A CN202210129663 A CN 202210129663A CN 114461684 A CN114461684 A CN 114461684A
Authority
CN
China
Prior art keywords
data
cache system
state
cache
cached
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
CN202210129663.8A
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202210129663.8A priority Critical patent/CN114461684A/zh
Publication of CN114461684A publication Critical patent/CN114461684A/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/21Design, administration or maintenance of databases
    • G06F16/217Database tuning

Landscapes

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

Abstract

本申请公开了一种数据校验方法、装置、程序产品、计算机设备和介质,该方法可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。该方法包括:获取校验数据;获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。采用本申请,可提高对校验数据的缓存状态进行校验的准确性以及效率。

Description

数据校验方法、装置、程序产品、计算机设备和介质
技术领域
本申请涉及数据处理的技术领域,尤其涉及一种数据校验方法、装置、程序产品、计算机设备和介质。
背景技术
随着计算机网络的不断发展,网络上缓存的数据也越来越多,更甚者达到了上万亿数量级的数据,而通常对于已缓存的数据和未缓存的数据其进行业务处理的业务逻辑不同,因此,在缓存系统中对数据的缓存状态(如是否缓存)进行校验的操作也显得越发重要。
现有应用中,当需要校验数据S是否在缓存系统中进行了缓存时,通常是直接在DB(数据库)中检索数据S是否存在,而当需要同时校验大量数据的缓存状态,从而使得DB的访问量过大时,DB很容易发生崩溃,进而导致对数据S的缓存状态校验失败,且还会影响到其他缓存业务。
发明内容
本申请提供了一种数据校验方法、装置、程序产品、计算机设备和介质,可提高对校验数据的缓存状态进行校验的准确性以及效率。
本申请一方面提供了一种数据校验方法,该方法包括:
获取校验数据;
获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;
若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;
若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。
本申请一方面提供了一种数据校验装置,该装置包括:
获取模块,用于获取校验数据;
第一校验模块,用于获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;
第二校验模块,用于若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;
确定模块,用于若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。
可选的,上述装置还用于:
若第一缓存状态为未缓存状态,则确定校验数据属于缓存系统的未缓存数据;
按照未缓存数据的业务逻辑对校验数据进行业务处理。
可选的,缓存系统还包括备用缓存系统;上述装置还用于:
若第二缓存状态为未缓存状态,则获取校验数据在备用缓存系统中的第三缓存状态;
若第三缓存状态为已缓存状态,则确认校验数据属于缓存系统的已缓存数据;
若第三缓存状态为未缓存状态,则确认校验数据属于缓存系统的未缓存数据。
可选的,上述装置还用于:
若第三缓存状态为未缓存状态,则确定在本地缓存系统中存在针对校验数据的缓存状态的误判操作;
根据在本地缓存系统中针对校验数据的缓存状态的误判操作,更新本地缓存系统针对数据的缓存状态的误判率。
可选的,上述装置还用于:
若本地缓存系统的误判率大于误判率阈值,则对本地缓存系统进行系统扩容处理。
可选的,第一校验模块获取校验数据在本地缓存系统的哈希位置的方式,包括:
根据哈希指纹算法对校验数据进行运算,得到校验数据的指纹数据;
根据哈希位置算法对指纹数据进行运算,得到校验数据的哈希位置。
可选的,第一校验模块根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态的方式,包括:
若本地缓存系统中校验数据的哈希位置处具有校验数据的指纹数据,则确认校验数据在本地缓存系统中的第一缓存状态为未缓存状态;
若本地缓存系统中校验数据的哈希位置处不具有校验数据的指纹数据,则确认校验数据在本地缓存系统中的第一缓存状态为已缓存状态。
可选的,第二校验模块获取校验数据在远程缓存系统中的第二缓存状态的方式,包括:
向远程缓存系统发送数据校验请求,以使远程缓存系统根据数据校验请求获取校验数据在远程缓存系统中的第二缓存状态;数据校验请求携带校验数据;
获取远程缓存系统所返回的第二缓存状态。
可选的,获取模块获取校验数据的方式,包括:
获取网络请求;
从网络请求中解析得到校验数据。
可选的,已缓存数据包括已缓存的至少一个非法域名数据;校验数据是任一个域名数据;
上述装置还用于:
若已缓存的至少一个非法域名数据包括校验数据,则对网络请求进行拦截处理。
可选的,上述装置还用于:
若校验数据属于已缓存数据,则按照已缓存数据的业务逻辑对校验数据进行业务处理。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请中一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时使该处理器执行上述一方面中的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面等各种可选方式中提供的方法。
本申请可以获取校验数据;获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。由此可见,本申请提出的方法首先可以在本地缓存系统中通过哈希位置快速确定校验数据是否属于已缓存数据,进而还可以通过远程缓存系统进一步确定校验数据是否属于已缓存数据,因此,提升了对校验数据的缓存状态进行校验的准确性。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构的结构示意图;
图2是本申请提供的一种数据校验的场景示意图;
图3是本申请提供的一种数据校验方法的流程示意图;
图4a是本申请提供的一种在本地缓存系统中添加数据的场景示意图;
图4b是本申请提供的一种在本地缓存系统删除数据的流程示意图;
图5是本申请提供的一种在本地缓存系统校验数据的流程示意图;
图6是本申请提供的一种对数据进行一级校验的流程示意图;
图7是本申请提供的一种对数据进行二级校验的流程示意图;
图8是本申请提供的一种对数据进行三级校验的流程示意图;
图9是本申请提供的一种数据处理的流程示意图;
图10是本申请提供的一种在缓存系统中删除数据的流程示意图;
图11是本申请提供的一种对本地缓存系统进行扩容的流程示意图;
图12是本申请提供的一种数据校验装置的结构示意图;
图13是本申请提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请涉及到云技术。其中,云技术(Cloud Technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
本申请中所涉及到的云技术主要指可以通过“云”与远程缓存系统进行信息交互,以通过“云”使得远程缓存系统对校验数据的缓存状态进行校验。
首先,需要进行说明的是,本申请所获取的相关数据(如校验数据)若是属于用户数据,则该相关数据一定是在用户同意并授权的情况下进行获取的,且该相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。如图1所示,网络架构可以包括服务器200和终端设备集群,终端设备集群可以包括一个或者多个终端设备,这里将不对终端设备的数量进行限制。如图1所示,多个终端设备具体可以包括终端设备100a、终端设备101a、终端设备102a、…、终端设备103a;如图1所示,终端设备100a、终端设备101a、终端设备102a、…、终端设备103a均可以与服务器200进行网络连接,以便于每个终端设备可以通过网络连接与服务器200之间进行数据交互。
如图1所示的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能语音交互设备、智能家电、车载终端、飞行器等智能终端。下面以终端设备100a与服务器200之间的通信为例,进行本申请实施例的具体描述。本申请可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。
请一并参见图2,图2是本申请提供的一种数据校验的场景示意图。如图2所示,此处的服务端可以是指服务器200,用于对数据进行校验以及对数据进行相应的业务处理,请求端可以是上述终端设备100a,用于发起业务请求,该业务请求可以包含需要进行校验的数据(如校验数据,对数据进行校验可以是指对数据的缓存状态进行校验)。
首先,请求端可以向服务端发起任意的业务请求(如“①发起业务请求”),该业务请求中可以包含需要被校验的数据,可以将该数据称之为校验数据。服务端可以包括数据校验模块、布谷鸟过滤器模块以及业务逻辑处理模块。
其中,上述布谷鸟过滤器模块搭载在服务端的本地,该布谷鸟过滤器模块可以称之为本地缓存系统,该布谷鸟过滤器模块由布谷鸟过滤器构成,布谷鸟主要是通过哈希位置来校验数据的缓存状态,布谷鸟过滤器并没有缓存原数据,因此,通过在本地搭载布谷鸟过滤器可以以极高的效率对数据的缓存状态进行校验。
因此,服务端在获取到业务请求中的校验数据后,首先可以通过数据校验模块调用布谷鸟过滤器模块来对校验数据的缓存状态(如“②本地进行数据校验”),如判别校验数据是否已经被缓存,若是通过布谷鸟过滤器还不能准备地对校验数据的缓存状态进行校验,则服务端还可以依次请求远程缓存系统(如“③远程进行数据校验”)或/和备用缓存系统协同(如“④备用进行数据校验”)对校验数据的缓存状态进行校验,以得到校验数据在缓存系统中最准确的缓存状态,该缓存状态可以是在缓存系统中已经被缓存或者是在缓存系统中未被缓存,该缓存系统就可以是由上述布谷鸟过滤器模块(即本地缓存系统)、远程缓存系统以及备用缓存系统所构成的三级缓存系统。其中,通过本地缓存系统、远程缓存系统以及备用缓存系统来对校验数据的缓存状态进行校验的具体过程还可以参见下述图3对应实施例中的相应描述。
当通过数据校验模块对校验数据在缓存系统中的缓存状态进行校验后,就可以通过业务逻辑处理模块根据所校验得到的校验数据的缓存状态,采用相应的业务逻辑对校验数据进行对应的业务处理。
采用本申请所提供的方法,通过结合本地(如本地缓存系统)以及远端(如远程缓存系统和备用缓存系统)来对校验数据的缓存状态进行校验,可以提高对业务请求的响应速度(首先由本地进行响应),并提高对校验数据的校验效率,达到大部分数据可以在本地快速被校验以及快速被响应的目的。本申请可以减轻远端对数据进行校验的压力,提高系统稳定性,本申请适用于所有软件系统需要进行参数存在性判断的场景。
请参见图3,图3是本申请提供的一种数据校验方法的流程示意图。本申请实施例中的执行主体可以是一个计算机设备或者多个计算机设备所构成的计算机设备集群。该计算机设备可以是服务器,也可以终端设备。因此,本申请实施例中的执行主体可以是服务器,也可以是终端设备,还可以是由服务器和终端设备共同构成。此处,以本申请实施例中的执行主体是服务器为例进行说明。如图3所示,该方法可以包括:
步骤S101,获取校验数据。
可选的,服务器可以获取到校验数据,由于本申请可以应用于任意需要对数据的缓存状态(如是否缓存)进行校验的场景,因此此处的校验数据可以指任意需要进行缓存状态的校验的数据。
例如,在网络请求的场景中,校验数据可以是从网络请求中解析得到的,如该校验数据可以是从网络请求中解析得到的一个域名数据(可以简称为域名,可以是任意一个域名数据),后续,可以通过校验该域名数据的缓存状态,来确定该域名数据是否存在于所缓存的白名单域名数据(可以包含至少一个合法域名数据)中或者黑名单域名数据(可以包括至少一个非法域名数据)中。因此,在此种场景中,若是校验得到校验数据存在于该至少一个非法域名数据中,则可以对校验数据所属的网络请求进行拦截处理,以中断或者拒绝该网络请求;而若是校验得到校验数据存在于该至少一个合法域名数据中,则可以对校验数据所属的网络请求进行正常处理,如正常响应该网络请求。
还例如,在数据浏览的场景中,校验数据可以是待向用户(可以称之为对象)进行浏览推荐的目标数据(如短视频数据),后续,可以通过校验该目标数据的缓存状态,来确定是否要向用户推荐该目标数据,例如,可以校验该目标数据是否属于已缓存的该用户已经浏览过的数据,若已缓存的用户已经浏览过的数据包含该目标数据,则可以不用再重复向用户推荐该目标数据;而若已缓存的用户已经浏览过的数据不包含该目标数据,则可以向用户推荐该目标数据进行浏览。
步骤S102,获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态。
可选的,上述服务器可以是用于对业务进行处理的设备,服务器中可以包含本地缓存系统,该本地缓存系统可以存在于服务器的本地磁盘中,该本地缓存系统可以是由服务器运行相应的代码进行运作。该本地缓存系统可以用于记录数据的缓存状态。
其中,该本地缓存系统可以是由布谷鸟过滤器所构成,具体可以参见下述内容描述。
本地缓存系统中可以没有缓存原始数据本身,而是记录相应位置(如哈希位置)处是否缓存有相应的数据。
因此,服务器可以获取校验数据在本地缓存系统的哈希位置:用于获取数据在本地缓存系统的哈希位置的哈希算法有两种,一种是哈希指纹算法(用于计算数据的指纹的哈希算法,哈希指纹算法的个数根据实际应用场景确定),一种是哈希位置算法(用于计算数据的存储位置的哈希算法,哈希位置算法的数量也根据实际应用场景确定)。其中,哈希指纹算法和哈希位置算法具体是什么哈希算法可以根据实际应用场景确定,对此不作限定。
可选的,服务器可以采用哈希指纹算法对校验数据进行运算,运算的结果就可以作为校验数据的指纹数据(可以简称为指纹),进而服务器可以采用哈希位置算法对校验数据的指纹数据进行运算,运算的结果就可以作为校验数据的哈希位置。
需要进行说明的是,本地缓存系统中可以包含用于记录各个哈希位置(可以通过上述哈希指纹算法和哈希位置算法对任意数据进行运算得到的若干哈希位置)处是否有缓存数据的数组,该数组中一个哈希位置可以对应于一个指纹录入区域,若某个哈希位置对应的指纹录入区域中记录有某个数据的指纹数据(可以是通过上述哈希指纹算法计算得到),则可以认为在本地缓存系统中该数据属于已经被缓存的数据。反之,若某个哈希位置对应的指纹录入区域为空(即不具有任何数据的指纹数据),则可以认为该哈希位置处还不对应存在有已经缓存的数据。
可以将在本地缓存系统中所校验得到的校验数据的缓存状态称之为第一缓存状态,该第一缓存状态可以是已缓存状态或者未缓存状态,若第一缓存状态是已缓存状态,则表明在本地缓存系统中校验出校验数据已经进行了缓存,校验数据不属于新数据;若第一缓存状态是未缓存状态,则表明在本地缓存系统中校验出校验数据还未进行缓存,校验数据属于新数据。
因此,服务器可以校验本地缓存系统的数组中校验数据的哈希位置处是否具有校验数据的指纹数据,若校验数据的哈希位置处具有校验数据的指纹数据(如校验数据的哈希位置对应的指纹录入区域中具有校验数据的指纹数据),则表明校验数据的哈希位置处存在对应已经缓存的数据,也就表明校验数据在本地缓存系统中的第一缓存状态是已缓存状态,该已缓存状态也就表明在本地缓存系统中校验出校验数据已经进行了缓存。
更多的,若校验数据的哈希位置处不具有校验数据的指纹数据(如校验数据的哈希位置对应的指纹录入区域为空),则表明校验数据的哈希位置处不存在对应已经缓存的数据,也就表明校验数据在本地缓存系统中的第一缓存状态是未缓存状态,该未缓存状态也就表明在本地缓存系统中校验出校验数据还未进行缓存。
请参见图4a,图4a是本申请提供的一种在本地缓存系统中添加数据的场景示意图。如图4所示,服务器可以在本地缓存系统中插入数据S0,上述哈希位置算法可以包括此处的hash1以及hash2两种哈希算法,此处本地缓存系统的数组中可以包含8个哈希位置(包括哈希位置1、哈希位置2、哈希位置3、哈希位置4、哈希位置5、哈希位置6、哈希位置7、哈希位置8),通过hash1可以计算得到数据S0的一个哈希位置(即哈希地址,此处为哈希位置2),通过hash2可以计算得到数据S0的另一个哈希位置(此处为哈希位置6),然后可以判断得到,数组中哈希位置2和哈希位置6处都表示没有相应的数据已经缓存,因为哈希位置2和哈希位置6对应的指纹录入区域都是空的,此处哈希位置1处表示存在已经缓存的数据S1(但是数组中实际未存储数据S1的原数据,因为数组中哈希位置1对应的指纹录入区域录入有数据S1的指纹数据);此处哈希位置7处表示存在已经缓存的数据S2(但是数组中实际未存储数据S2的原数据,因为数组中哈希位置7对应的指纹录入区域录入有数据S2的指纹数据)。
由于哈希位置2和哈希位置6处的指纹录入区域均为空,因此,服务器可以选择哈希位置2和哈希位置6中任一个哈希位置来记录数据S0已经被缓存的状态,此处,是选择使用哈希位置6来记录数据S0已经被缓存的状态,因此,数据S0的指纹数据最终被填入到哈希位置6对应的指纹录入区域中。
请参见图4b,图4b是本申请提供的一种在本地缓存系统删除数据的流程示意图。如图4b所示,步骤S201:准备查询数据X(可以是任意的数据);步骤S202:服务器可以计算数据X的指纹(即数据X的指纹数据,可以记为指纹f);步骤S203:此处,上述哈希位置算法也可以包括hash1和hash2两种哈希算法,通过hash1对数据X进行运算(即hash1(X))可以计算得到数据X的一个哈希位置(即地址1);步骤S204:通过hash1(X)与hash2对数据X的指纹f进行运算的结果(即hash2(f))之间的异或操作可以计算得到数据X的另一个哈希位置(即地址2);步骤S205:服务器可以在本地缓存系统的数组中查看地址1处是否存在f(即在地址1对应的指纹录入区域中是否存在数据X的指纹f),若不存在,则执行步骤S206,若存在,则执行步骤S208;步骤S206:在数组中查看地址2处是否存在f(即在地址2对应的指纹录入区域中是否存在数据X的指纹f),若不存在,则执行步骤S207,若存在,则执行步骤S208;步骤S207:返回false(错误),表示本地缓存系统中并未查询到数据X;步骤S208:删除查找到数据X的指纹f所在哈希位置处的指纹f;步骤S209:返回true(正确),表示已经成功在本地缓存系统去除了所记录的数据X已缓存的状态。
其中,需要进行说明的是,缓存系统除了可以包括上述本地缓存系统之外,还可以包括远程缓存系统,该远程缓存系统可以是由redis(一个开源的用于快速存取数据的中间件)构成,该远程缓存系统不属于本地系统,若服务器需要与该远程缓存系统进行通信连接,则需要通过调用远程网络进行通信。
若在本地缓存系统中校验出校验数据的第一缓存状态是未缓存状态,则可以认为校验数据在缓存系统中一定是未进行缓存的数据,因为此时校验数据的哈希位置处的数据缓存状态是为空的(即没有相应的已缓存的数据)。即此时校验数据属于缓存系统中的未缓存数据,该未缓存数据也就是指在缓存系统中未进行缓存的数据。
而若在本地缓存系统中校验出校验数据的第一缓存状态是已缓存状态,则还需要通过远程缓存系统再次对校验数据的缓存状态进行校验,因为通过本地缓存系统的布谷鸟过滤器来校验得到的校验数据的已缓存状态对于整个缓存系统而言通常并不是百分之百准确的,这是由于还存在很低的机率使得不同的数据通过上述哈希指纹算法和哈希位置算法所计算得到哈希位置是相同的,因此,若在本地缓存系统中校验数据的哈希位置处的数据缓存状态不为空,还有可能是指该哈希位置处存在已缓存的与校验数据具有相同哈希位置的其他数据,而并不是存在已缓存的校验数据,因此,还需要通过远程缓存系统对校验数据的缓存状态进行进一步的校验。
请参见图5,图5是本申请提供的一种在本地缓存系统校验数据的流程示意图。如图5所示,步骤S301:准备查询数据X(可以是任意的数据);步骤S302:服务器可以计算数据X的指纹(即数据X的指纹数据,可以记为指纹f);步骤S303:此处,上述哈希位置算法也可以包括hash1和hash2两种哈希算法,通过hash1可以计算得到数据X的一个哈希位置(即地址1);步骤S304:通过hash2可以计算得到数据X的另一个哈希位置(即地址2);步骤S305:服务器可以在本地缓存系统的数组中查看地址1处是否存在f(即在地址1对应的指纹录入区域中是否存在数据X的指纹f),若不存在,则执行步骤S306,若存在,则执行步骤S308;步骤S306:在数组中查看地址2处是否存在f(即在地址2对应的指纹录入区域中是否存在数据X的指纹f),若不存在,则执行步骤S307,若存在,则执行步骤S308;步骤S307:返回false(错误),表示本地缓存系统中并未查询到数据X;步骤S308:返回true(正确),表示在地址1或者地址2处查询到数据X的指纹f,表示数据X在本地缓存系统中校验的结果是已缓存,即第一缓存状态是已缓存状态。
请参见图6,图6是本申请提供的一种对数据进行一级校验的流程示意图。如图6所示,步骤S401:输入数据X(可以是任意的数据),将该数据X作为校验数据,准备对数据X进行一级校验,即准备在本地缓存系统中对数据X的缓存状态进行校验;步骤S402:对数据X进行一级校验,即在本地缓存系统中对数据X的缓存状态进行校验,得到数据X的第一缓存状态;步骤S403:服务器可以校验本地缓存系统中X是否存在(如数据X的指纹数据是否在数据X的哈希位置处),若不存在,则执行步骤S404,若存在,则执行步骤S406;步骤S404:返回false(错误),表示在本地缓存系统中未查询到数据X(即未查询到数据X的指纹数据),即数据X的第一缓存状态是未缓存状态;步骤S405:服务器可以通过所校验得到的数据X的第一缓存状态是未缓存状态(此时数据X属于缓存系统的未缓存数据),对数据X进行相应业务逻辑的业务处理。步骤S406:返回true(正确),表示在本地缓存系统查询到数据X(即查询到数据X的指纹数据),数据X的第一缓存状态是已缓存状态;步骤S407:对数据X进行二级缓存校验,即在远程缓存系统中对数据X的缓存状态进行校验。
步骤S103,若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态。
可选的,可以将在远程缓存系统中所校验得到的校验数据的缓存状态称之为第二缓存状态,该第二缓存状态也可以是已缓存状态或者未缓存状态,若第二缓存状态是已缓存状态,则表明在远程缓存系统中校验出校验数据已经进行了缓存,校验数据不属于新数据;若第二缓存状态是未缓存状态,则表明在远程缓存系统中校验出校验数据还未进行缓存,校验数据属于新数据。
其中,远程缓存系统就缓存了原始数据(即原数据,也就是数据本身,而不是仅仅记录了数据的缓存状态)。
因此,服务器获取校验数据在远程缓存系统的第二缓存状态的方式可以是:服务器可以向远程缓存系统发送针对校验数据的数据校验请求(可以称之为第一数据校验请求),以通过数据校验请求来请求远程缓存系统对校验数据的缓存状态进行校验。远程缓存系统可以是存在于远程的校验设备中的,因此,下述远程缓存系统所执行的操作可以是远程缓存系统所在的远程的后台设备所执行的。
该数据校验请求可以携带校验数据,远程缓存系统在获取到该数据校验请求时,可以从数据校验请求中解析得到校验数据,进而可以对远程缓存系统中已经缓存有的数据进行遍历(或者是通过数据对应的key(关键字)进行遍历),以通过遍历结果判断在远程缓存系统中是否缓存有校验数据,若远程缓存系统遍历出已经缓存的数据中包含校验数据,则可以确认校验数据的第二缓存状态是已缓存状态,表明在远程缓存系统中已经缓存有校验数据;而若远程缓存系统遍历出已经缓存的数据中不包含校验数据,则可以认为校验数据的第二缓存状态是未缓存状态,表明在远程缓存系统中还未缓存有校验数据。远程缓存系统可以将所获取到的校验数据的第二缓存状态发送给服务器,服务器就可以获取到远程缓存系统所发送的校验数据的第二缓存状态。
步骤S104,若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。
可选的,若是缓存系统就包含上述二级缓存系统(即包含本地缓存系统和远程缓存系统),则当第二缓存状态是已缓存状态时,可以认为校验数据属于缓存系统中的已缓存数据,该已缓存数据也就是指在缓存系统中已经进行了缓存的数据。此时,当第二缓存状态是未缓存状态时,也可以认为校验数据不属于缓存系统中的已缓存数据,而是属于缓存系统的未缓存数据,此时还认为本地缓存系统对校验数据的缓存状态存在误判操作。
可选的,若是缓存系统包含三级缓存系统(即包含上述本地缓存系统、上述远程缓存系统以及备用缓存系统),则当第二缓存是已缓存状态时,也可以认为校验数据是属于缓存系统中的已缓存数据。但是此时,当第二缓存状态是未缓存状态时,就需要进一步通过备用缓存系统来对校验数据的缓存状态进行进一步的校验,该备用缓存系统可以是通过DB(数据库)构成,备用缓存系统中也是缓存的原始数据。
其中,可以将在备用缓存系统中所校验得到的校验数据的缓存状态称之为第三缓存状态,该第三缓存状态也可以是已缓存状态或者未缓存状态,若第三缓存状态是已缓存状态,则表明在备用缓存系统中校验出校验数据已经进行了缓存,校验数据不属于新数据;若第三缓存状态是未缓存状态,则表明在备用缓存系统中校验出校验数据还未进行缓存,校验数据属于新数据。
其中,备用缓存系统也是远端的缓存系统,因此服务器向备用缓存系统获取针对校验数据的第三缓存状态的方式与服务器向远程缓存系统获取针对校验数据的第二缓存状态的方式相同,如:服务器可以向备用缓存系统发送数据校验请求(可以称之为第二数据校验请求),该数据校验请求携带校验数据,因此,备用缓存系统在获取到该数据校验请求时,也可以从该数据校验请求中提取得到校验数据,并可以遍历自己已经缓存的数据中是否包含校验数据,若包含,则可以认为校验数据的第三缓存状态是已缓存状态,若不包含,则可以认为校验数据的第三缓存状态是未缓存状态。备用缓存系统可以将所获取到的校验数据的第三缓存状态发送给服务器,服务器就可以获取到备用缓存系统所发送的校验数据的第三缓存状态。
请参见图7,图7是本申请提供的一种对数据进行二级校验的流程示意图。如图7所示,步骤S501:将数据X作为校验数据(可以是任意的数据),若数据X的第一缓存状态是已缓存状态,则输入数据X,准备对数据X进行二级校验,即准备在远程缓存系统中对数据X的缓存状态进行校验;步骤S502:对数据X进行三级校验,即在远程缓存系统中对数据X的缓存状态进行校验,得到数据X的第二缓存状态;步骤S503:服务器可以校验远程缓存系统中是否缓存有数据X,若不存在,则执行步骤S504,若存在,则执行步骤S506;步骤S504:返回false(错误),表示在远程缓存系统中未查询到数据X,即数据X的第二缓存状态是未缓存状态;步骤S505:服务器可以对数据X进行三级校验,即通过备用缓存系统对数据X的缓存状态进行校验。步骤S506:返回true(正确),表示在远程缓存系统查询到数据X,数据X的第二缓存状态是已缓存状态;步骤S507:确认在缓存系统中已缓存数据X,数据X属于缓存系统的已缓存数据,可以对数据X进行相应业务逻辑的业务处理。
请参见图8,图8是本申请提供的一种对数据进行三级校验的流程示意图。如图8所示,步骤S601:将数据X作为校验数据(可以是任意的数据),若数据X的第一缓存状态是已缓存状态,第二缓存状态是未缓存状态,则输入数据X,准备对数据X进行三级校验,即准备在备用缓存系统中对数据X的缓存状态进行校验;步骤S602:对数据X进行三级校验,即在备用缓存系统中对数据X的缓存状态进行校验,得到数据X的第三缓存状态;步骤S603:服务器可以校验备用缓存系统中是否缓存有数据X,若不存在,则执行步骤S604,若存在,则执行步骤S606;步骤S604:返回false(错误),表示在备用缓存系统中未查询到数据X,即数据X的第三缓存状态是未缓存状态;步骤S605:服务器可以确认在缓存系统中未缓存数据X,数据X属于缓存系统的未缓存数据。步骤S606:返回true(正确),表示在备用缓存系统查询到数据X,数据X的第三缓存状态是已缓存状态;步骤S607:确认在缓存系统中已缓存数据X,数据X属于缓存系统的已缓存数据。
因此,当第三缓存状态是已缓存状态时,可以认为校验数据属于缓存系统中的已缓存数据。此时,当第三缓存状态是未缓存状态时,也可以认为校验数据不属于缓存系统中的已缓存数据,而是属于缓存系统的未缓存数据,此时还认为在本地缓存系统中存在针对校验数据的缓存状态的误判操作(因为本地缓存系统与备用缓存系统对校验数据的缓存状态的校验结果不一致)。
更多的,服务器还可以根据在本地缓存系统中存在针对校验数据的缓存状态的误判操作,更新本地缓存系统针对历史所校验的所有数据的缓存状态的误判率,如该误判率w的计算公式可以是w=e/sum,其中,e表示本地缓存系统历史上对所校验的数据具有误判操作的次数和,sum表示本地缓存系统历史上对所校验的数据的校验总次数,例如当第三缓存状态是未缓存状态时,在本地缓存系统对校验数据进行校验之前,e等于e1,sum等于sum1,对校验数据进行校验后,e就等于e1加1,sum等于sum1加1,此时本地缓存系统的误判率w就等于w=(e1+1)/(sum1+1)。
而当本地缓存系统的误判率w大于误判率阈值时,认为本地缓存系统的误判率较高,不能很好的支撑业务,就可以对本地缓存系统进行系统扩容处理,对本地缓存系统进行系统扩容处理的方式可以包括:增长本地缓存系统中用于记录各个哈希位置处的数据缓存状态的数组的长度,或者,增加用于计算数据的哈希位置的哈希位置算法的个数等。其中,误判率阈值可以根据实际应用场景确定,如预判率阈值可以等于5%。
请参见图9,图9是本申请提供的一种数据处理的流程示意图。如图9所示,该流程包括:步骤S701:输入数据Y(可以任意的数据),将数据Y作为校验数据,准备对数据Y的缓存状态进行校验;步骤S702:对数据Y进行一级缓存的校验,即通过本地缓存系统对数据Y的缓存状态进行校验;步骤S703:服务器可以判断在本地缓存系统校验出数据Y是否进行缓存,若没有缓存(即第一缓存状态是未缓存状态),则执行步骤S704,若缓存了(即第一缓存状态是已缓存状态),则执行步骤S710;
步骤S704:此种情况校验出数据Y属于缓存系统的未缓存数据,则可以对数据Y进行相应业务逻辑的业务处理;步骤S705:判断对数据Y的业务处理是否成功,若成功,则可以并列或者依次执行步骤S707、步骤S708和步骤S709;步骤S706:确认对数据Y的业务处理异常;步骤S707:将数据Y记录在本地缓存系统,如将数据Y的指纹数据记录在本地缓存系统的数组中数据Y的哈希位置处;步骤S708:将数据Y缓存在远程缓存系统;步骤S709:将数据Y缓存在备用缓存系统;
步骤S710:对数据Y进行二级缓存的校验,即在远程缓存系统对数据Y的缓存状态进行校验;步骤S711:服务器可以判断在远程缓存系统校验出数据Y是否进行缓存,若没有缓存(即第二缓存状态是未缓存状态),则执行步骤S713,若缓存了(即第二缓存状态是已缓存状态),则执行步骤S712;步骤S712:输出true(正确),表明在远程缓存系统校验出数据X已缓存,也表明了校验出在缓存系统已缓存数据Y;步骤S713:对数据Y进行三级校验,即通过备用缓存系统对数据Y的缓存状态进行校验;
步骤S714:服务器可以判断在备用缓存系统校验出数据Y是否进行缓存,若没有缓存(即第三缓存状态是未缓存状态),则执行步骤S717,若缓存了(即第三缓存状态是已缓存状态),则执行步骤S715;步骤S715:输出true(正确),表明在备用缓存系统校验出数据Y已缓存,也表明校验出在缓存系统已缓存了数据Y;步骤S716:由于此时在本地缓存系统和备用缓存系统校验出都缓存了数据Y,但是在远程缓存系统校验出未缓存数据Y,因此有可能远程缓存系统发生了误删,此时可以在远程缓存系统中更新数据Y,如将数据Y缓存在远程缓存系统中;步骤S717:返回false,表明校验出缓存系统中未缓存有数据Y;步骤S718:可以更新计算本地缓存系统的误判率w;步骤S719:若误判率w大于5%(此时误判率阈值可以是5%),则可以对本地缓存系统进行扩容。
其中,若校验数据属于缓存系统的已缓存数据,则可以按照已缓存数据的业务逻辑对校验数据进行业务处理。例如,若校验数据是用户设定的用户名,并且新设定的用户名不能和已经存在(如已经缓存)的用户名相同,且此时校验数据就属于缓存系统的已缓存数据(可以包括已经缓存有的用户名),则服务器此时的业务逻辑可以是让用户重新录入需要设定的用户名。再如,若校验数据是服务器从网络请求中解析得到的域名数据,缓存系统的已缓存数据包括已缓存的至少一个非法域名数据,并且校验出校验数据是属于已缓存的至少一个非法域名数据中的其中一个(即校验出校验数据属于缓存系统的已缓存数据),则服务器此时的业务逻辑可以是对该网络请求进行拦截处理,以终止该网络请求所请求的网络服务。
更多的,若校验数据属于缓存系统的未缓存数据,则可以按照未缓存数据的业务逻辑对校验数据进行业务处理。例如,若校验数据是用户设定的用户名,并且新设定的用户名不能和已经存在(如已经缓存)的用户名相同,且此时校验数据不属于缓存系统的已缓存数据(可以包括已经缓存有的用户名),则服务器此时的业务逻辑可以是将用户录入的校验数据成功设置为用户的用户名。
请参见图10,图10是本申请提供的一种在缓存系统中删除数据的流程示意图。如图10所示,步骤S801:准备删除数据X;步骤S802:计算数据X的指纹f;步骤S803:计算得到数据X的两个哈希位置(即在本地缓存系统的两个存储地址,如通过上述hash1和hash2计算);步骤S804:查询该两个哈希位置处是否有数据X的指纹f,若有,则执行步骤S806,若没有,则执行步骤S805;步骤S805:返回true,表明在本地缓存系统查询到数据X的指纹,表明在本地缓存系统校验出数据X是已缓存的;步骤S806:在本地缓存系统删除所记录的数据X的指纹f;步骤S807:判断在本地缓存系统删除数据X的指纹是否成功,若成功,则执行步骤S809,若不成功且已经尝试的删除动作小于等于3次(也可以是其他次数阈值),则执行步骤S806,若不成功且已经尝试的删除动作大于3次,则执行步骤S808;步骤S808:返回false,表明在本地缓存系统删除数据X失败;
步骤S809:在备用缓存系统(DB)中删除数据X;步骤S810:判断在备用缓存系统删除数据X是否成功,若成功,则执行步骤S812,若不成功且已经尝试的删除动作小于等于3次(也可以是其他次数阈值),则执行步骤S809,若不成功且已经尝试的删除动作大于3次,则执行步骤S811;步骤S811:返回false,表明在备用缓存系统删除数据X失败;
步骤S812:在远程缓存系统(redis)中删除数据X;步骤S813:判断在远程缓存系统删除数据X是否成功,若成功,则执行步骤S815,若不成功且已经尝试的删除动作小于等于3次(也可以是其他次数阈值),则执行步骤S812,若不成功且已经尝试的删除动作大于3次,则执行步骤S814;步骤S814:返回false,表明在远程缓存系统删除数据X失败;步骤S815:返回true,表明在缓存系统成功删除数据X。
请参见图11,图11是本申请提供的一种对本地缓存系统进行扩容的流程示意图。如图11所示,步骤S901:输入数据X,将数据X作为校验数据,开始对数据X的缓存状态进行校验;步骤S902:在一级缓存(即本地缓存系统)对数据X的缓存状态进行校验;步骤S903:确认在本地缓存系统中校验得到数据X已缓存,即第一缓存状态是已缓存状态;
步骤S904:在二级缓存(即远程缓存系统)对数据X的缓存状态进行校验;步骤S905:确认在远程缓存系统中校验得到数据X未缓存,即第二缓存状态是未缓存状态;步骤S906:在三级缓存(即备用缓存系统)对数据X的缓存状态进行校验;步骤S907:确认在备用缓存系统中校验得到数据X未缓存,即第三缓存状态是未缓存状态;
步骤S908:更新计算本地缓存系统的误判次数e等于历史的误判次数+1;步骤S909:通过更新计算的误判次数更新计算本地缓存系统的误判率w=误判率*100/sum(百分比的形式),sum是当前对数据总的校验次数;步骤S910:判断误判率w与5%(即误判率阈值)之间的大小关系,若误判率w大于5%,则可以对本地缓存系统进行扩容,若误判率w小于或等于5%,则当前过程结束。
采用本申请所提供的方法,首先,可以通过本地缓存系统在本地快速地对校验数据的缓存状态进行校验,通过本地缓存系统可以筛选掉大量新数据(即未缓存数据),使得后续通过远程缓存系统或备用缓存系统可以只对少部分数据的缓存状态进行校验,远程缓存系统或备用缓存系统的数据访问量大大减少,远程缓存系统或备用缓存系统就不容易发生崩溃。
此外,由于在本地不用进行远程网络调用,因此通过本申请可以减少远程网络调用,同时减少I/O(数据读取操作)读取操作,大量数据的缓存状态的校验也无需依赖于第三方系统(如远程缓存系统或者备用缓存系统)的自身服务要求,使得本申请可以更可靠以及更快速地对数据的缓存状态进行校验。
本申请可以获取校验数据;获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。由此可见,本申请提出的方法首先可以在本地缓存系统中通过哈希位置快速确定校验数据是否属于已缓存数据,进而还可以通过远程缓存系统进一步确定校验数据是否属于已缓存数据,因此,提升了对校验数据的缓存状态进行校验的准确性。
请参见图12,图12是本申请提供的一种数据校验装置的结构示意图。该数据校验装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据校验装置为一个应用软件,该数据校验装置可以用于执行本申请实施例提供的方法中的相应步骤。如图12所示,该数据校验装置1可以包括:;
获取模块11,用于获取校验数据;
第一校验模块12,用于获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;
第二校验模块13,用于若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;
确定模块14,用于若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。
可选的,上述装置1还用于:
若第一缓存状态为未缓存状态,则确定校验数据属于缓存系统的未缓存数据;
按照未缓存数据的业务逻辑对校验数据进行业务处理。
可选的,缓存系统还包括备用缓存系统;上述装置1还用于:
若第二缓存状态为未缓存状态,则获取校验数据在备用缓存系统中的第三缓存状态;
若第三缓存状态为已缓存状态,则确认校验数据属于缓存系统的已缓存数据;
若第三缓存状态为未缓存状态,则确认校验数据属于缓存系统的未缓存数据。
可选的,上述装置1还用于:
若第三缓存状态为未缓存状态,则确定在本地缓存系统中存在针对校验数据的缓存状态的误判操作;
根据在本地缓存系统中针对校验数据的缓存状态的误判操作,更新本地缓存系统针对数据的缓存状态的误判率。
可选的,上述装置1还用于:
若本地缓存系统的误判率大于误判率阈值,则对本地缓存系统进行系统扩容处理。
可选的,第一校验模块12获取校验数据在本地缓存系统的哈希位置的方式,包括:
根据哈希指纹算法对校验数据进行运算,得到校验数据的指纹数据;
根据哈希位置算法对指纹数据进行运算,得到校验数据的哈希位置。
可选的,第一校验模块12根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态的方式,包括:
若本地缓存系统中校验数据的哈希位置处具有校验数据的指纹数据,则确认校验数据在本地缓存系统中的第一缓存状态为未缓存状态;
若本地缓存系统中校验数据的哈希位置处不具有校验数据的指纹数据,则确认校验数据在本地缓存系统中的第一缓存状态为已缓存状态。
可选的,第二校验模块13获取校验数据在远程缓存系统中的第二缓存状态的方式,包括:
向远程缓存系统发送数据校验请求,以使远程缓存系统根据数据校验请求获取校验数据在远程缓存系统中的第二缓存状态;数据校验请求携带校验数据;
获取远程缓存系统所返回的第二缓存状态。
可选的,获取模块11获取校验数据的方式,包括:
获取网络请求;
从网络请求中解析得到校验数据。
可选的,已缓存数据包括已缓存的至少一个非法域名数据;校验数据是任一个域名数据;
上述装置1还用于:
若已缓存的至少一个非法域名数据包括校验数据,则对网络请求进行拦截处理。
可选的,上述装置1还用于:
若校验数据属于已缓存数据,则按照已缓存数据的业务逻辑对校验数据进行业务处理。
根据本申请的一个实施例,图3所示的数据校验方法所涉及的步骤可由图12所示的数据校验装置1中的各个模块来执行。例如,图3中所示的步骤S101可由图12中的获取模块11来执行,图3中所示的步骤S102可由图12中的第一校验模块12来执行;图3中所示的步骤S103可由图12中的第二校验模块13来执行,图3中所示的步骤S104可由图12中的确定模块14来执行。
本申请可以获取校验数据;获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。由此可见,本申请提出的方法首先可以在本地缓存系统中通过哈希位置快速确定校验数据是否属于已缓存数据,进而还可以通过远程缓存系统进一步确定校验数据是否属于已缓存数据,因此,提升了对校验数据的缓存状态进行校验的准确性。
根据本申请的一个实施例,图12所示的数据校验装置1中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。在本申请的其它实施例中,数据校验装置1也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图3中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图12中所示的数据校验装置1,以及来实现本申请实施例的数据校验方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
请参见图13,图13是本申请提供的一种计算机设备的结构示意图。如图13所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图13所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图13所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取校验数据;
获取校验数据在本地缓存系统的哈希位置,并根据校验数据的哈希位置获取校验数据在本地缓存系统中的第一缓存状态;
若第一缓存状态为已缓存状态,则获取校验数据在远程缓存系统中的第二缓存状态;
若第二缓存状态为已缓存状态,则确定校验数据属于缓存系统中的已缓存数据;缓存系统包括本地缓存系统和远程缓存系统。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3对应实施例中对上述数据校验方法的描述,也可执行前文图12所对应实施例中对上述数据校验装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的数据校验装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3所对应实施例中对数据校验方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
作为示例,上述程序指令可被部署在一个计算机设备上执行,或者被部署位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链网络。
上述计算机可读存储介质可以是前述任一实施例提供的数据校验装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图3对应实施例中对上述数据校验方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种数据校验方法,其特征在于,所述方法包括:
获取校验数据;
获取所述校验数据在本地缓存系统的哈希位置,并根据所述校验数据的哈希位置获取所述校验数据在所述本地缓存系统中的第一缓存状态;
若所述第一缓存状态为已缓存状态,则获取所述校验数据在远程缓存系统中的第二缓存状态;
若所述第二缓存状态为已缓存状态,则确定所述校验数据属于缓存系统中的已缓存数据;所述缓存系统包括所述本地缓存系统和所述远程缓存系统。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一缓存状态为未缓存状态,则确定所述校验数据属于所述缓存系统的未缓存数据;
按照所述未缓存数据的业务逻辑对所述校验数据进行业务处理。
3.根据权利要求1所述的方法,其特征在于,所述缓存系统还包括备用缓存系统;所述方法还包括:
若所述第二缓存状态为未缓存状态,则获取所述校验数据在备用缓存系统中的第三缓存状态;
若所述第三缓存状态为已缓存状态,则确认所述校验数据属于所述缓存系统的所述已缓存数据;
若所述第三缓存状态为未缓存状态,则确认所述校验数据属于所述缓存系统的未缓存数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述第三缓存状态为未缓存状态,则确定在所述本地缓存系统中存在针对所述校验数据的缓存状态的误判操作;
根据在所述本地缓存系统中针对所述校验数据的缓存状态的误判操作,更新所述本地缓存系统针对数据的缓存状态的误判率。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述本地缓存系统的误判率大于误判率阈值,则对所述本地缓存系统进行系统扩容处理。
6.根据权利要求1所述的方法,其特征在于,所述获取所述校验数据在本地缓存系统的哈希位置,包括:
根据哈希指纹算法对所述校验数据进行运算,得到所述校验数据的指纹数据;
根据哈希位置算法对所述指纹数据进行运算,得到所述校验数据的哈希位置。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述根据所述校验数据的哈希位置获取所述校验数据在所述本地缓存系统中的第一缓存状态,包括:
若所述本地缓存系统中所述校验数据的哈希位置处具有所述校验数据的指纹数据,则确认所述校验数据在所述本地缓存系统中的所述第一缓存状态为未缓存状态;
若所述本地缓存系统中所述校验数据的哈希位置处不具有所述校验数据的指纹数据,则确认所述校验数据在所述本地缓存系统中的所述第一缓存状态为已缓存状态。
8.根据权利要求1所述的方法,其特征在于,所述获取所述校验数据在远程缓存系统中的第二缓存状态,包括:
向所述远程缓存系统发送数据校验请求,以使所述远程缓存系统根据所述数据校验请求获取所述校验数据在所述远程缓存系统中的所述第二缓存状态;所述数据校验请求携带所述校验数据;
获取所述远程缓存系统所返回的所述第二缓存状态。
9.根据权利要求1所述的方法,其特征在于,所述获取校验数据,包括:
获取网络请求;
从所述网络请求中解析得到所述校验数据。
10.根据权利要求9所述的方法,其特征在于,所述已缓存数据包括已缓存的至少一个非法域名数据;所述校验数据是任一个域名数据;
所述方法还包括:
若已缓存的所述至少一个非法域名数据包括所述校验数据,则对所述网络请求进行拦截处理。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述校验数据属于所述已缓存数据,则按照所述已缓存数据的业务逻辑对所述校验数据进行业务处理。
12.一种数据校验装置,其特征在于,所述装置包括:
获取模块,用于获取校验数据;
第一校验模块,用于获取所述校验数据在本地缓存系统的哈希位置,并根据所述校验数据的哈希位置获取所述校验数据在所述本地缓存系统中的第一缓存状态;
第二校验模块,用于若所述第一缓存状态为已缓存状态,则获取所述校验数据在远程缓存系统中的第二缓存状态;
确定模块,用于若所述第二缓存状态为已缓存状态,则确定所述校验数据属于缓存系统中的已缓存数据;所述缓存系统包括所述本地缓存系统和所述远程缓存系统。
13.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1-11任一项所述方法的步骤。
14.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-11中任一项所述方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适用于由处理器加载并执行权利要求1-11任一项所述的方法。
CN202210129663.8A 2022-02-11 2022-02-11 数据校验方法、装置、程序产品、计算机设备和介质 Pending CN114461684A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210129663.8A CN114461684A (zh) 2022-02-11 2022-02-11 数据校验方法、装置、程序产品、计算机设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210129663.8A CN114461684A (zh) 2022-02-11 2022-02-11 数据校验方法、装置、程序产品、计算机设备和介质

Publications (1)

Publication Number Publication Date
CN114461684A true CN114461684A (zh) 2022-05-10

Family

ID=81412852

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210129663.8A Pending CN114461684A (zh) 2022-02-11 2022-02-11 数据校验方法、装置、程序产品、计算机设备和介质

Country Status (1)

Country Link
CN (1) CN114461684A (zh)

Similar Documents

Publication Publication Date Title
CN112019575B (zh) 数据包处理方法、装置、计算机设备以及存储介质
CN110209652B (zh) 数据表迁移方法、装置、计算机设备和存储介质
CN103019879B (zh) 浏览器崩溃信息的处理方法及系统
CN104219316A (zh) 一种分布式系统中的调用请求处理方法及装置
CN110599346A (zh) 一种区块链信息获取方法及相关设备
CN114840782A (zh) 基于扫码的页面访问方法、装置、电子设备及存储介质
CN109361628B (zh) 报文组装方法、装置、计算机设备和存储介质
CN112214519B (zh) 一种数据查询方法、装置、设备及可读介质
CN110222535B (zh) 区块链配置文件的处理装置、方法及存储介质
CN110826978A (zh) 一种基于企业浏览器的统一待办事项处理方法和装置
CN111240892A (zh) 数据备份方法及装置
CN110602234B (zh) 区块链网络节点管理方法、装置、设备以及存储介质
CN110213073B (zh) 数据流向变更方法、电子设备、计算节点及存储介质
CN104348905A (zh) 一种离线推送消息的方法及装置
CN112507010B (zh) 业务数据处理方法、装置、计算机设备和存储介质
KR102393913B1 (ko) 이상행위 탐지 장치, 방법 및 이를 포함하는 시스템
CN111294347B (zh) 一种工控设备的安全管理方法及系统
CN110457900B (zh) 一种网站监测方法、装置、设备及可读存储介质
CN114461684A (zh) 数据校验方法、装置、程序产品、计算机设备和介质
CN111539028B (zh) 档案存储方法、装置、存储介质及电子设备
CN114968822A (zh) 接口测试方法、装置、计算机设备及存储介质
CN110377665B (zh) 数据同步方法、装置、电子设备及存储介质
CN114968963A (zh) 文件覆盖写方法、装置和电子设备
CN108255533B (zh) 系统配置更改方法及装置
CN110995658A (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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40071968

Country of ref document: HK