数据一致性校验方法及装置
技术领域
本说明书涉及互联网领域。
背景技术
随着互联网技术的发展,数据一致性问题越来越引起广泛的关注。例如,客户端页面显示的内容,与远程过程调用(Remote Procedure Call,RPC)/缓存里看到的内容不一致。这种情况有可能造成用户的损失。
现有技术中,需要遍历全量页面文档对象模型(Document Object Model,简称“DOM”),这种方式会造成性能损失和数据的不精确校验,因此,无法及时有效地发现客户端的页面内容异常情况。
发明内容
本说明书提供了一种数据一致性校验方法及装置,能够避免性能损失,提高校验精确度,并且更加及时地发现页面内容异常情况。
本申请公开了一种数据一致性校验方法,包括:
服务端为页面中每个待校验节点生成唯一标志,每个所述待校验节点分别对应页面中的一个需要校验的内容;
所述服务端将包含所述唯一标志的校验规则发送到客户端;
所述客户端根据所述校验规则中的唯一标志,从所述页面中提取各个所述唯一标志对应的内容,并根据所述校验规则进行校验。
在一个优选例中,在所述服务端为页面中每个待校验节点生成唯一标志之后,还包含以下步骤:所述服务端使用所述待校验节点的唯一标志,确定校验规则。
在一个优选例中,还包括:
所述客户端将校验结果上报所述服务端。
在一个优选例中,所述服务端为页面中每个待校验节点生成唯一标志的步骤中,还包含:所述服务端根据所有待校验节点的唯一标志的属性取值组成的集合,生成所述页面的唯一标志文件。
在一个优选例中,所述服务端将包含所述唯一标志的校验规则发送到客户端的步骤,还包括:在所述页面首次加载完成之后,所述客户端向所述服务端请求所述页面的校验规则的最新版本,并通过将所述最新版本与所述页面的当前的校验规则的版本进行匹配,判断是否要求所述服务端下发最新版本的校验规则。
在一个优选例中,所述服务端将包含所述唯一标志的校验规则发送到客户端的步骤,还包括:如果所述校验规则的版本的匹配结果不一致,所述客户端请求所述服务端下发所述页面相应的最新版本的校验规则,并更新校验规则文件。
在一个优选例中,每个所述待校验节点对应的唯一标志的属性取值,对于所述页面是唯一的。
在一个优选例中,所述校验规则描述的是各个待校验节点的内容之间的关系。
在一个优选例中,所述各个待校验节点的内容之间的关系是“和”或“乘”的关系。
本申请还公开了一种数据一致性校验装置包括服务端与客户端,
所述服务端包括:
唯一标志生成模块,用于为页面中每个待校验节点生成唯一标志,每个所述待校验节点分别对应页面中的一个需要校验的内容;
发送模块,用于将包含所述唯一标志的校验规则发送到客户端;
并且,所述客户端包括:
校验模块,用于根据所述校验规则中的唯一标志,从所述页面中提取各个所述唯一标志对应的内容,并根据所述校验规则进行校验。
在一个优选例中,所述客户端还包括:
上报模块,用于将校验结果上报所述服务端。
在一个优选例中,所述服务端还包括:
校验规则模块,用于使用所述待校验节点的唯一标志,确定校验规则。
本申请还公开了一种数据一致性校验设备包括:
存储器,用于存储计算机可执行指令;以及,
处理器,用于在执行该计算机可执行指令时实现如前文描述的方法中的步骤。
本申请还公开了一种计算机可读存储介质该计算机可读存储介质中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现如前文描述的方法中的步骤。
本说明书实施方式中,将页面上需要校验的内容的节点作为待校验节点,为待校验节点增加一个唯一标志,为每个待校验节点确定一个对应的唯一标志属性取值,并根据所有待校验节点对应的唯一标志属性取值所组成的集合,生成页面对应的唯一标志文件,根据页面对应的唯一标志文件中的所有唯一标志属性取值所对应的待校验节点的内容之间的关系,编写页面相应的校验规则。在对页面进行校验时,根据页面相应的校验规则确定唯一标志文件中的所有唯一标志属性取值所对应的待校验节点的内容,再根据校验规则中的待校验节点的内容之间的关系,对页面进行校验。通过这种方式,能够精确的控制页面需要校验的内容区块,不但能够避免性能损失,提高校验精确度,并且更加及时地发现页面内容异常情况。
本说明书中记载了大量的技术特征,分布在各个技术方案中,如果要罗列出本申请所有可能的技术特征的组合(即技术方案)的话,会使得说明书过于冗长。为了避免这个问题,本说明书上述发明内容中公开的各个技术特征、在下文各个实施方式和例子中公开的各技术特征、以及附图中公开的各个技术特征,都可以自由地互相组合,从而构成各种新的技术方案(这些技术方案均应该视为在本说明书中已经记载),除非这种技术特征的组合在技术上是不可行的。例如,在一个例子中公开了特征A+B+C,在另一个例子中公开了特征A+B+D+E,而特征C和D是起到相同作用的等同技术手段,技术上只要择一使用即可,不可能同时采用,特征E技术上可以与特征C相组合,则,A+B+C+D的方案因技术不可行而应当不被视为已经记载,而A+B+C+E的方案应当视为已经被记载。
附图说明
图1是根据本说明书第一实施方式的数据一致性校验方法的流程示意图;
图2是根据本说明书第二实施方式的数据一致性校验装置的结构示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
术语解释:
待校验节点:网页的页面本质上是HTML代码,代码里的每个标签都代表一个页面的节点,本说明书的实施例中,将页面上具有需要校验内容的节点,作为待校验节点,并为待校验节点增加唯一标志,每个待校验节点的唯一标志对应一个属性取值。
待校验节点的内容:HTML节点里面可以被浏览器渲染并显示出来的内容即为节点的内容,本说明书的实施例中的待校验节点的内容,即上述待校验节点里可以被浏览器渲染并显示出来的内容。
唯一标志文件:本说明书的实施例中,上述每个页面的所有待校验节点对应的唯一标志属性取值的集合,即为该页面对应的唯一标志文件。
服务端:负责进行上述校验规则的版本管理、校验规则编写,以及校验规则下发等。
下面将结合附图对本说明书的实施方式作进一步地详细描述。
为了便于理解,对本说明书实施例的应用场景进行介绍,该应用场景中包括:
本说明书的实施例中,用户通过自己的终端(即,客户端)使用某个大宗商品网上交易的服务提供商的服务。用户可以通过安装在终端上的客户端软件访问服务端,也可以通过终端上的浏览器或其他应用程度访问服务端。
其中,终端是计算机网络或通信网络中处于网络最外围的设备,主要用于用户信息的输入以及处理结果的输出等。除了输入输出的功能,终端也能进行一定的运算和处理,实现部分系统功能。终端可以是例如智能手机,平板电脑,笔记本电脑,台式电脑,智能手表,智能手环,电视机,有输入功能的投影机,个人数字助理(PDA)等。
服务端是指网络中能对其它设备提供服务的计算机系统。服务端服务的对象通常称为终端或客户端,服务端与终端之间可以通过有线或者无线的方式通信连接。服务端的实现方式是多种多样的,可以是单台的计算机设备,也可以是多台计算机设备的组合(例如集群服务器,云服务器等)。
图1示出了本申请的一个实施例的数据一致性校验方法的流程示意图,总的来说,该方法包括以下步骤:
步骤210:服务端为页面中每个待校验节点生成唯一标志,每个待校验节点分别对应页面中的一个需要校验的内容。
步骤220:服务端使用待校验节点的唯一标志,确定校验规则。其中,校验规则描述的是各个待校验节点的内容之间的关系,例如,可以是数学关系或逻辑关系。
步骤230:服务端将包含唯一标志的校验规则发送到客户端。
步骤240:客户端根据校验规则中的唯一标志,从页面中提取各个唯一标志对应的内容,并根据校验规则进行校验。
步骤250:客户端将校验结果上报服务端。
下面针对每一个步骤进行更具体的解释和说明。
针对步骤210:
本申请的实施例中,页面可以使用DOM(Document Object Model,文档对象模型)结构,这种情况下,HTML文档中的所有内容都是节点。每个待校验节点分别对应页面中的一个需要校验的内容。
具体的,服务端为每个待校验节点新增加一个唯一标志,并为每个待校验节点的唯一标志确定一个对应的属性取值。并且,根据该页面中所有待校验节点的唯一标志对应的属性取值所组成的集合,生成该页面对应的唯一标志文件。
例如,对于一个页面来说,有10个待校验节点,在这种情况下,每一个待校验节点的唯一标志对应一个属性取值,则总共有10个属性取值。将这10个属性取值作为一个集合,放在一个文件里,即构成该页面对应的唯一标志文件。
需指出,唯一标志文件是按照页面维度来分割的,一个页面具有一个唯一标志文件,如果需要发新版本的校验规则,每个页面的待校验节点会变化,对应的唯一标志文件也会相应变化,所以每个页面相应的校验规则的具有不同的版本,其中,老版本更新老版本的唯一标志文件,新版本更新版本的唯一标志文件,使更新更加高效及时。
这样做的好处在于,可以从应用和页面维度,针对待校验节点的唯一标志进行开发管理,并通过服务端对需要用到的校验规则等进行下发,使得用户端页面能及时更新到唯一标志文件。
针对步骤220:
具体地说,开发者在编写页面校验规则之前,还需要让代码库遍历当前页面文档对象模型结构,使得代码库能对待校验节点增加唯一标志,并为每个待校验节点的唯一标志确定对应的属性取值。
通过给具有需要校验的内容的节点(即,待校验节点)增加唯一标志,使该节点成为能够被识别的待校验节点。具体的,增加唯一标志的方法是将该标志设置在该节点的一个属性中,或者说该唯一标志就是该节点的一个属性的取值。
例如,代码片段<div data-vcode=”vcode-aed2wx2ds421”>111</div>,其中,div元素是用来为HTML(标准通用标记语言下的一个应用)文档内大块(block-level)的内容提供结构和背景的元素。data-vcode是具有需要校验的内容的节点的唯一标志,它对应的属性取值是vcode-aed2wx2ds421,“111”是上述待校验节点的内容。由此,根据该待校验节点的唯一标志对应的属性取值“vcode-aed2wx2ds421”,就可以从页面中确定并提取该待校验节点,并确定该待校验节点的内容是“111”。
需指出,上述唯一标志的属性取值“vcode-aed2wx2ds421”对整个应用和该页面来说都是唯一的。
进一步的,在校验规则中,包含页面中每个需要校验的节点(即,待校验节点)的唯一标志对应的属性取值,以及需要校验的节点的内容之间的关系。
具体的,在获得上述页面的唯一标志文件之后,开发者可以根据预先设置的页面中的内容之间的关系条件,通过编写校验规则来表示待校验节点的内容之间的关系,该关系可以是数学关系,例如,“和”或“乘”的关系,或者是逻辑关系,例如,通过“与”“或”“非”运算符组成的逻辑表达式。
例如,代码片段<div data-vcode=”vcode-aed2wx2ds421”>111</div>,<divdata-vcode=”vcode-aedghssa2d12ds1”>222</div>和<div data-vcode=”vcode-adsacasds231”>333</div>,其中,三个待校验节点的关系,从内容上说,是“前两个节点之和等于第三个节点”。
在这种情况下,对于校验规则“vcode-aed2wx2ds421”+“vcode-aedghssa2d12ds1”=“vcode-adsacasds231”,可以得出,该等式表示页面中唯一标志属性取值分别为“vcode-aed2wx2ds421”和“vcode-aedghssa2d12ds1”的两个待校验节点的内容求和,应当等于唯一标志属性取值为“vcode-adsacasds231”的待校验节点的内容。如果不相等,则说明该页面显示的内容或者数据是异常的。
又例如,代码片段<div data-vcode=”vcode-aed2wx2ds423”>3</div>,<divdata-vcode=”vcode-aedghssa2d12ds2”>2</div>和<div data-vcode=”vcode-adsacasds236”>6</div>,其中,三个待校验节点的关系,从内容上说,是“前两个节点相乘等于第三个节点”。
在这种情况下,对于校验规则“vcode-aed2wx2ds423”דvcode-aedghssa2d12ds2”=“vcode-adsacasds236”,可以得出,该等式表示页面中唯一标志属性取值分别为“vcode-aed2wx2ds423”和“vcode-aedghssa2d12ds2”的两个待校验节点的内容相乘,应当等于唯一标志属性取值为“vcode-adsacasds236”的待校验节点的内容。如果不相等,则说明该页面显示的内容或者数据是异常的。
需指出,以上“和”或“乘”仅为方便理解而举出的例子,在本申请的实施例中,待校验节点的唯一标志对应的属性取值以及该校验节点的具体内容,均可以有各种不同的取值,在此不做赘述。
在本步骤中,编写校验规则,就是通过唯一标志对应的属性取值来标识待校验节点,并根据常见的“和”或“乘”等的关系,表示待校验节点的内容之间的关系。
例如,对于代码片段<div data-vcode=”vcode-aed2wx2ds421”>111</div>,<divdata-vcode=”vcode-aedghssa2d12ds1”>222</div>和<div data-vcode=”vcode-adsacasds231”>333</div>,最终的校验规则可以编写成:
“vcode-aed2wx2ds421”+“vcode-aedghssa2d12ds1”=“vcode-adsacasds231”。
这样做的好处在于,可以用很简洁的语言描述该页面的待校验节点的内容之间的关系,方便后续开发者快速编写该页面相应的校验规则,也能通过程序把校验规则转成具体的校验逻辑。
针对步骤230:
具体地说,在页面首次加载完成之后,该客户端向服务端请求页面相应的校验规则的最新版本,并通过与页面的校验规则的当前版本进行匹配,判断是否需要下发该最新版本的校验规则,以使页面当前版本的校验规则为最新版本的校验规则。
如果上述校验规则的版本的匹配结果不一致,说明该页面当前版本的校验规则不是最新版本的校验规则。
在这种情况下,需要请求服务端下发该页面相应的最新版本的校验规则,并更新校验规则文件。
如果上述校验规则的版本的匹配结果一致,则客户端不需要再请求该页面相应的最新版本的校验规则进行更新了。
需指出,在本步骤中,可以通过页面的版本号、页面所在应用标识(即,应用ID)、校验规则的版本、页面标识(即,页面ID)来确定该页面的唯一的校验规则。
换句话说,就是将该页面相应的当前的校验规则的“页面的版本号、页面所在应用ID、校验规则版本、页面ID”与服务端中该对应的页面的最新的校验规则的“页面的版本号、页面所在应用ID、校验规则版本、页面ID”进行一一匹配,如果匹配结果全部一致,则表示该页面当前的校验规则版本是最新的,因此不需要更新。
针对步骤240:
具体地说,客户端的代码库(validate.js)先通过该页面相应的校验规则中的唯一标志,识别页面中所有的待校验节点,以确定这些待校验节点相应的内容,并根据校验规则,对待校验节点的内容之间的关系进行校验,生成校验结果。
例如,根据唯一标志对应的属性取值“vcode-aed2wx2ds421”,找到页面中data-vcode=“vcode-aed2wx2ds421”的待校验节点,并得出该待校验节点中的内容为111。
并根据唯一标志对应的属性取值“vcode-aedghssa2d12ds1”,找到页面中data-vcode=“vcode-aedghssa2d12ds1”的待校验节点,并得出该待校验节点中的内容(即,innerText)为222。
并根据唯一标志对应的属性取值“vcode-adsacasds231”,找到页面中data-vcode=”vcode-adsacasds231”的待校验节点,并得出该节点中的内容(即,innerText)为333。
然后,判断上述这些待校验节点的内容之间的关系,是否与校验规则一致,即,是否满足关系等式:“vcode-aed2wx2ds421”+“vcode-aedghssa2d12ds1”=“vcode-adsacasds231”。
如果满足上述关系等式,则该页面的校验结果是true,表示该页面中的内容没有异常。
如果不满足上述等式,则该页面的校验结果是false,表示该页面中的内容有异常。
针对步骤250:
具体地说,客户端将上述页面相应的校验结果上报给服务端,由服务端根据校验结果进行后续相应的处理。
具体的,如果服务端获得的页面校验结果是false,且false的比例很多,则需要开发者立即定位当前页面校验大量出错的具体原因。一旦确认页面出现问题,则立即针对此次代码变更进行回滚,避免用户影响面的扩大,引起外部用户的恐慌。另一方面,如果获得的页面校验结果是true,则可以认为此次代码变更没有内容异常的问题,因此,可以继续扩大代码变更的用户更新群体。
在本说明书的实施例中,可以调用分布式平台上报生成的校验结果。在分布式平台中针对校验结果生成报表,来监控每次发布后页面内容的质量,如果校验结果为true的比例很大,可以扩大代码变更的用户更新群体,如果校验结果为false的比例很大,则需要针对此次代码变更进行回滚,即,改用前一个版本的代码。
这样做的好处在于,根据校验结果的true,false以及true与false的比例,可以更加迅速地确定进行了一次代码变更之后,页面中是否引入了新的内容异常等问题。由此,协助开发者对代码变更进行更加有效的监控,及时减少对用户的负面影响。
在上述实施例中,将页面上需要校验的内容的节点作为待校验节点,为待校验节点增加一个唯一标志,为每个待校验节点确定一个对应的唯一标志属性取值,并根据所有所述待校验节点对应的唯一标志属性取值所组成的集合,生成页面对应的唯一标志文件,根据页面对应的唯一标志文件中的所有唯一标志属性取值所对应的待校验节点的内容之间的关系,编写页面相应的校验规则。相应的,在对页面进行校验时,根据页面相应的校验规则确定唯一标志文件中的所有唯一标志属性取值所对应的待校验节点的内容,再根据校验规则中的待校验节点的内容之间的关系,对页面进行校验。通过这种方式,能够精确的控制页面需要校验的内容区块,不但能够避免性能损失,提高校验精确度,并且更加及时地发现页面内容异常情况。
本说明书的第二实施方式涉及一种数据一致性校验装置,其结构如图2所示,该数据一致性校验装置包括:包括服务端与客户端,所述服务端包括:
唯一标志生成模块,用于为页面中每个待校验节点生成唯一标志,每个所述待校验节点分别对应页面中的一个需要校验的内容;
校验规则模块,用于使用所述待校验节点的唯一标志,确定校验规则;
发送模块,用于将包含所述唯一标志的校验规则发送到客户端;
并且,所述客户端包括:
校验模块,用于根据所述校验规则中的唯一标志,从所述页面中提取各个所述唯一标志对应的内容,并根据所述校验规则进行校验;
上报模块,用于将校验结果上报所述服务端。
需指出,第一实施方式是与本实施方式相对应的方法实施方式,第一实施方式中的技术细节可以应用于本实施方式,本实施方式中的技术细节也可以应用于第一实施方式。
需要说明的是,本领域技术人员应当理解,上述数据一致性校验装置的实施方式中所示的各模块的实现功能可参照前述数据一致性校验方法的相关描述而理解。上述数据一致性校验装置的实施方式中所示的各模块的功能可通过运行于处理器上的程序(可执行指令)而实现,也可通过具体的逻辑电路而实现。本说明书实施例上述数据一致性校验装置如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本说明书各个实施例该方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本说明书实施例不限制于任何特定的硬件和软件结合。
相应地,本说明书实施方式还提供一种计算机可读存储介质,其中存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现本说明书的各方法实施方式。计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于,相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
此外,本说明书实施方式还提供一种数据一致性校验设备,其中包括用于存储计算机可执行指令的存储器,以及,处理器;该处理器用于在执行该存储器中的计算机可执行指令时实现上述各方法实施方式中的步骤。其中,该处理器可以是中央处理单元(CentralProcessing Unit,简称“CPU”),还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,简称“DSP”)、专用集成电路(Application Specific IntegratedCircuit,简称“ASIC”)等。前述的存储器可以是只读存储器(read-only memory,简称“ROM”)、随机存取存储器(random access memory,简称“RAM”)、快闪存储器(Flash)、硬盘或者固态硬盘等。本发明各实施方式所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
需要说明的是,在本专利的申请文件中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括该要素的过程、方法、物品或者设备中还存在另外的相同要素。本专利的申请文件中,如果提到根据某要素执行某行为,则是指至少根据该要素执行该行为的意思,其中包括了两种情况:仅根据该要素执行该行为、和根据该要素和其它要素执行该行为。多个、多次、多种等表达包括2个、2次、2种以及2个以上、2次以上、2种以上。
在本说明书提及的所有文献都被认为是整体性地包括在本说明书的公开内容中,以便在必要时可以作为修改的依据。此外应理解,以上该仅为本说明书的较佳实施例而已,并非用于限定本说明书的保护范围。凡在本说明书一个或多个实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例的保护范围之内。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。