数据处理方法、装置、系统及存储介质
技术领域
本发明实施例涉及计算机
技术领域
,尤其涉及数据处理方法、装置、系统及存储介质。背景技术
目前,缓存与数据库结合使用,是一种提高互联网服务性能的常见方法。缓存中储存少量热点数据,当需要进行数据查询时,先查询缓存,如果命中缓存,就不需要查询数据库,从而可以有效缓解数据库的压力,且查询缓存速度更快,可以有效提高服务性能。
对于缓存来说,用于存储热点数据,因此,服务节点在查询缓存时,存在缓存不命中的情况,通常的做法是在缓存不命中时,将数据库中的数据同步到缓存,另外,服务节点在更新数据后,将新数据同步到缓存。然而,当缓存存在多个副本的情况下,例如存在多个服务节点,每个服务节点对应一个缓存,多个服务节点并行更新数据库时,缓存之间也会进行数据同步,而数据库中的数据同步到缓存需要一定时间,因此,容易造成多个缓存副本之间数据不一致,以及缓存与数据库之间数据不一致,难以保证缓存中数据的准确性。
因此,现有的缓存数据的处理方案仍不够完善,需要改进。
发明内容
本发明实施例提供了数据处理方法、装置、系统及存储介质,可以优化针对缓存数据的处理方案。
第一方面,本发明实施例提供了一种数据处理方法,应用于数据处理系统,所述数据处理系统中包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,所述数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号,所述方法包括:
第一服务节点响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本,在确定所述第一缓存副本中不存在所述第一数据条目的情况下,向所述数据库发送对应的查询指示;
所述数据库响应于所述查询指示,向所述第一服务节点返回所述第一数据条目的第一数据内容和第一版本号;
所述第一服务节点在确定所述第一缓存副本中当前存在所述第一数据条目的情况下,获取所述第一缓存副本中的所述第一数据条目的第二版本号,若所述第一版本号大于所述第二版本号,则根据所述第一数据内容对所述第一缓存副本中的第一数据条目的数据内容进行更新。
第二方面,本发明实施例提供了一种数据处理装置,集成于数据处理系统,所述数据处理系统中包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,所述数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号,所述装置包括:
集成于第一服务节点中的查询模块,用于响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本,在确定所述第一缓存副本中不存在所述第一数据条目的情况下,向所述数据库发送对应的查询指示;
集成于所述数据库中的查询响应模块,用于响应于所述查询指示,向所述第一服务节点返回所述第一数据条目的第一数据内容和第一版本号;
集成于第一服务节点中的缓存更新模块,用于在确定所述第一缓存副本中当前存在所述第一数据条目的情况下,获取所述第一缓存副本中的所述第一数据条目的第二版本号,若所述第一版本号大于所述第二版本号,则根据所述第一数据内容对所述第一缓存副本中的第一数据条目的数据内容进行更新。
第三方面,本发明实施例提供了一种数据处理系统,包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,所述数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号,所述数据库由第一计算机设备实现,所述服务节点由第二计算机设备实现,所述第一计算机设备和所述第二计算机设备中包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本发明实施例提供的数据处理方法中的相应步骤。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的数据处理方法。
本发明实施例中提供的数据处理方案,应用于数据处理系统,数据处理系统中包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号,第一服务节点响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本,在确定第一缓存副本中不存在所述第一数据条目的情况下,向数据库发送对应的查询指示,数据库响应于查询指示,向第一服务节点返回第一数据条目的第一数据内容和第一版本号,第一服务节点在确定第一缓存副本中当前存在第一数据条目的情况下,获取第一缓存副本中的第一数据条目的第二版本号,若第一版本号大于第二版本号,则根据第一数据内容对第一缓存副本中的第一数据条目的数据内容进行更新。通过采用上述技术方案,数据处理系统中的数据库在存储数据条目的同时,还存储对应的最新的版本号,该版本号采用递增更新的方式进行维护,当服务节点响应客户端的数据条目的查询请求时,若缓存未命中,则查询数据库,数据库返回此时最新的版本号和数据内容,但查询数据库的过程一般需要一段时间,在这段时间内,很可能会导致缓存中加入了通过缓存之间同步等方式得到的该数据条目,此时,通过版本号比对的方式,可以快速确定更加准确的数据内容,进而对缓存数据进行更新,提高缓存数据的准确性。
附图说明
图1为本发明实施例提供的一种数据处理方法所适用的应用场景的场景架构图。
图2为本发明实施例提供的一种数据处理方法的流程示意图;
图3为本发明实施例提供的又一种数据处理方法的流程示意图;
图4为本发明实施例提供的再一种数据处理方法的流程示意图;
图5为本发明实施例提供的一种数据处理装置的结构框图;
图6为本发明实施例提供的一种数据处理系统的结构框图;
图7为本发明实施例提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明实施例中提及的“第一”、“第二”等概念仅用于对不同的项目(如下文中的数据条目、服务节点、数据内容以及版本号等)进行区分,并非限定不同项目之间的顺序或者相互依存关系。
图1为本发明实施例提供的一种数据处理方法所适用的应用场景的场景架构图。具体的,参考图1,该应用场景中可以包括数据处理系统和客户端40,数据处理系统包括服务节点10和数据库30,服务节点可以由服务器等设备实现,服务节点的数量为多个,具体数量不做限定(图1中以3个为例),可选的,各服务节点之间可以是等价的,也即可以没有主从之分,当然,也可设置一个主服务节点和至少一个从服务节点,具体不做限定。服务节点10对应一个本地的缓存副本20,可理解为服务节点和本地的缓存副本之间是一对一的关系。数据库(DateBase,DB)可用于提供持久化存储服务,也可称为数据库层,对所存储的数据的具体类型不做限定,数据一般以数据条目为单位进行存储,也即可以将每个数据项称为一个数据条目,数据库中存储的数据条目一般是系统中的全部数据条目。缓存副本可用于提供短暂性高速数据存储服务,也可称为缓存、本地缓存或本地缓存层等,缓存副本中存储的是系统中的部分数据条目,一般为热点数据条目,例如访问频率较高的数据条目,具体如何确定热点数据条目不做限定。本发明实施例中,对数据库和缓存的实现形式均不做限定。服务节点可以将自己对应的缓存副本中的数据与数据库中的数据进行同步。不同的缓存副本之间可以进行数据同步,具体的同步方式不做限定。每个服务节点可以独立接收并响应客户端的请求,也即,不同服务节点对数据库中的同一个数据条目的更新等操作是可以存在并行情况的。
现有技术中,服务节点在查询缓存不命中时,查询数据库并将数据库中的数据同步到缓存,但当缓存存在多个副本的情况下,多个服务节点可能并行更新数据库,但查询数据库的过程一般需要一段时间,在这段时间内,很可能会导致缓存中加入了通过缓存之间同步等方式得到的需要查询的数据条目,这时,缓存本地已有的数据条目和从数据库查询到的数据条目很可能会不一致,且并不知道哪个更加准确,从而导致数据一致性以及数据准确性存在问题。
本发明实施例中,数据处理系统中的数据库在存储数据条目的同时,还存储对应的最新的版本号,该版本号采用递增更新的方式进行维护,在进行数据查询时,可以通过版本号比对的方式,快速确定更加准确的数据内容,进而对缓存数据进行更新,提高缓存数据的准确性。
图2为本发明实施例提供的一种数据处理方法的流程示意图,该方法可以由数据处理装置执行,其中该装置可由软件和/或硬件实现,一般可集成在数据处理系统中的计算机设备中。所述数据处理系统中包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,所述数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号。
如图2所示,该方法包括:
步骤201、第一服务节点响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本,在确定所述第一缓存副本中不存在所述第一数据条目的情况下,向所述数据库发送对应的查询指示。
本发明实施例中,第一服务节点可以是数据处理系统中任意一个服务节点。客户端可以是第一服务节点能够为其提供服务的任意一个客户端,该客户端可以安装在如手机、平板电脑或台式计算机等任意计算机设备中。第一数据条目可以是任意一个数据条目,数据条目一般包括身份标识(或数据名称)和对应的数据内容,若数据条目以键值对(key-value)的形式进行存储,则身份标识可以是键(key,简称k),数据内容可以为值(value,简称v)。当然,数据条目还可以是以其他形式进行存储,具体不做限定。
示例性的,当客户端需要针对第一数据条目进行查询时,可以向第一服务节点发送对应的查询请求。该查询请求中可以包括第一数据条目的身份标识。第一服务节点可以先在对应的本地的第一缓存副本中查询是否存在第一数据条目,例如查询是否存在身份标识与查询请求中身份标识一致的数据条目,若存在,则可认为存在第一数据条目,若不存在,则可认为不存在第一数据条目。在确定第一缓存副本中不存在第一数据条目的情况下,向数据库发送对应的查询指示,以实现在数据库中查询第一数据条目。
步骤202、所述数据库响应于所述查询指示,向所述第一服务节点返回所述第一数据条目的第一数据内容和第一版本号。
示例性的,查询指示中也可包括第一数据条目的身份标识。本发明实施例中,数据库可以由一个独立的数据库实现,还可以由一个数据库集群实现,具体不做限定,各服务节点在需要进行数据查询或数据更新等操作时,均与该数据库进行通信,也即,数据处理系统中的数据库对于各服务节点来说可以是统一存在的。数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号。示例性的,当数据库需要对其存储的数据条目进行修改时,要对版本号进行递增修改,从而使得数据库中的数据条目的版本号是最新的。数据库在接收到第一服务节点发送的查询指示后,在数据库中查询第一数据条目,并将对应的数据内容(记为第一数据内容)和最新的版本号(记为第一版本号)发送给第一服务节点。
步骤203、所述第一服务节点在确定所述第一缓存副本中当前存在所述第一数据条目的情况下,获取所述第一缓存副本中的所述第一数据条目的第二版本号,若所述第一版本号大于所述第二版本号,则根据所述第一数据内容对所述第一缓存副本中的第一数据条目的数据内容进行更新。
示例性的,第一服务节点在向数据库发送查询指示的时刻到接收到数据库返回的第一数据内容和第一版本号的时刻之间,一般存在一定的时间间隔,因为数据库在查询时需要消耗一定时间,第一服务节点和数据库之间的通信也需要消耗少量时间,在这期间,其他服务节点对应的缓存副本可能会向第一缓存副本同步了第一数据条目,因此,第一缓存副本中当前可能会已经存在了第一数据条目,例如,第一缓存副本中当前存在的第一数据条目通过第二服务节点对应的第二缓存副本向第一缓存副本进行同步得到。这样,第一缓存副本中当前存在的第一数据条目的数据内容和数据库刚刚返回给第一服务节点的第一数据内容可能存在不一致的情况,无法确定哪个数据内容是最新的。本发明实施例中,在确定第一缓存副本中当前存在第一数据条目的情况下,获取第一缓存副本中的第一数据条目的第二版本号,将第二版本号和第一版本号进行比较,若第一版本号大于第二版本号,则可说明数据库返回的第一数据内容相比于第一缓存中已有的第一数据条目的数据内容来说是新的,更加准确,因此,根据第一数据内容对所述第一缓存副本中的第一数据条目的数据内容进行更新,保证缓存副本中第一数据条目的准确性。
可选的,为了提高第一服务节点对查询请求的响应速度,可以在确定第一版本号大于第二版本号时,先将第一数据内容返回至客户端,在根据第一数据内容对第一缓存副本中的第一数据条目的数据内容进行更新。当然,也可在对根据第一数据内容对第一缓存副本中的第一数据条目的数据内容进行更新之后,将第一数据内容返回至客户端。
可选的,为了进一步提高第一服务节点对查询请求的响应速度,第一服务节点也可在接收到数据库返回的第一数据内容之后,先将第一数据内容返回至客户端,再判断第一缓存副本中当前是否存在第一数据条目。
可选的,所述第一服务节点在确定所述第一缓存副本中当前不存在所述第一数据条目的情况下,将第一数据内容返回至客户端。
本发明实施例中提供的数据处理方法,应用于数据处理系统,数据处理系统中包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号,第一服务节点响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本,在确定第一缓存副本中不存在所述第一数据条目的情况下,向数据库发送对应的查询指示,数据库响应于查询指示,向第一服务节点返回第一数据条目的第一数据内容和第一版本号,第一服务节点在确定第一缓存副本中当前存在第一数据条目的情况下,获取第一缓存副本中的第一数据条目的第二版本号,若第一版本号大于第二版本号,则根据第一数据内容对第一缓存副本中的第一数据条目的数据内容进行更新。通过采用上述技术方案,数据处理系统中的数据库在存储数据条目的同时,还存储对应的最新的版本号,该版本号采用递增更新的方式进行维护,当服务节点响应客户端的数据条目的查询请求时,若缓存未命中,则查询数据库,数据库返回此时最新的版本号和数据内容,但查询数据库的过程一般需要一段时间,在这段时间内,很可能会导致缓存中加入了通过缓存之间同步等方式得到的该数据条目,此时,通过版本号比对的方式,可以快速确定更加准确的数据内容,进而对缓存数据进行更新,提高缓存数据的准确性。
在一些实施例中,该方法还可包括:所述第一服务节点确定所述第一版本号小于所述第二版本号时,将所述第二版本号对应的第二数据内容返回所述客户端,并禁止根据所述第一数据内容对所述第一缓存副本中的第一数据条目的数据内容进行更新。这样设置的好处在于,若在第一服务节点接收到数据库返回的第一数据内容之前,其他服务节点对第一数据条目进行了修改,并快速同步到第一缓存副本,则第一缓存副本中当前存在的第一数据条目的数据内容更加准确,也即第一版本号小于第二版本号,因此,将第一缓存副本中当前存在的第一数据条目对应的第二数据内容返回客户端,保证将准确的数据内容反馈给客户端,并禁止根据所述第一数据内容对所述第一缓存副本中的第一数据条目的数据内容进行更新,避免旧数据内容覆盖新数据内容。
需要说明的是,若第一版本号等于第二版本号,则可认为第一数据内容和第二数据内容相同,可以向客户端返回其中任意一个。
在一些实施例中,在所述第一服务节点查询对应的第一缓存副本之后,还包括:所述第一服务节点在确定所述第一缓存副本中存在所述第一数据条目的情况下,将所述第一缓存副本中的所述第一数据条目对应的数据内容返回所述客户端。这样设置的好处在于,若第一服务节点在查询数据库之前,已经确定第一缓存副本中存在第一数据条目,则可不进行版本号的比较,直接将第一缓存副本中的第一数据条目对应的数据内容返回客户端,以保证第一服务节点能够快速响应查询请求,减少数据库的压力。
图3为本发明实施例提供的又一种数据处理方法的流程示意图,如图3所示,该方法可包括:
步骤301、第一服务节点响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本。
步骤302、第一服务节点判断第一缓存副本中是否存在第一数据条目,若是,则执行步骤303;否则,执行步骤304。
步骤303、第一服务节点向客户端返回第一缓存副本中存储的第一数据条目的数据内容,结束流程。
步骤304、第一服务节点向数据库发送查询请求对应的查询指示。
步骤305、数据库响应于查询指示,向第一服务节点返回第一数据条目的第一数据内容和第一版本号。
步骤306、第一服务节点判断第一缓存副本中当前是否存在第一数据条目,若是,则执行步骤307;否则,执行步骤311。
步骤307、第一服务节点获取第一缓存副本中的第一数据条目的第二版本号。
步骤308、第一服务节点判断第一版本号是否大于第二版本号,若是,则执行步骤309;否则,执行步骤310。
步骤309、第一服务节点将第一数据内容返回客户端,并根据第一数据内容对第一缓存副本中的第一数据条目的数据内容进行更新,结束流程。
步骤310、第一服务节点将第一缓存副本中当前存储的第一数据条目对应的数据内容,结束流程。
可选的,在结束流程之前,还包括:禁止根据第一数据内容对第一缓存副本中的第一数据条目的数据内容进行更新,避免旧数据内容覆盖新数据内容。
步骤311、第一服务节点将第一数据内容返回客户端,并在第一缓存副本中存储数据内容为第一数据内容的第一数据条目。
可选的,也可仅将第一数据内容返回客户端,而不在第一缓存副本中添加第一数据条目。
本发明实施例提供的数据处理方法,当服务节点响应客户端的数据条目的查询请求时,先查询缓存副本,若缓存命中,则可直接快速返回缓存中的数据内容,若缓存未命中,再查询数据库,接收数据库返回的版本号和数据内容,若此时缓存中依然不存在第一数据条目,则可将数据库返回的数据内容直接返回客户端,若此时缓存中出现了第一数据条目,则需要进行版本号的比对,并将版本号较新的数据内容返回给客户端,并根据比对结果决定是否对缓存中的数据内容进行更新,提高缓存数据的准确性。
在上述各可选实施例基础上,在一些实施例中,数据处理方法还可包括:所述第一服务节点响应于客户端发起的针对第二数据条目的更新请求,向所述数据库发送对应的更新指示;所述数据库响应于所述更新指示,对所述数据库中的第二数据条目中的数据内容进行更新,并递增修改对应的版本号;所述第一服务节点从所述数据库获取所述第二数据条目的第三数据内容和第三版本号,在确定所述第一缓存副本中当前存在所述第二数据条目的情况下,获取所述第二缓存副本中的所述第二数据条目的第四版本号,若所述第三版本号大于所述第四版本号,则根据所述第三数据内容对所述第一缓存副本中的第二数据条目的数据内容进行更新。这样设置的好处在于,在服务节点针对某个数据条目进行更新后,及时更新对应的本地缓存副本中的数据,且在更新前进行版本号的比对,保证缓存中数据的准确性。
示例性的,第二数据条目可以是任意一个数据条目,可以与前面的第一数据条目相同,也可以不同。当客户端需要针对第二数据条目进行更新时,可以向第一服务节点发送对应的更新请求。更新请求中可以包括第二数据条目的身份标识以及需要进行更新的数据内容(可记为目标数据内容)。第一服务节点(需要说明的是,这里的第一服务节点可以是任意的服务节点,可以是上述响应查询请求的服务节点,还可以是其他服务节点,为了便于说明,此处仍称为第一服务节点)在接收到更新请求后,向数据库发送更新指示,同样的,更新指示中可以包括第二数据条目的身份标识和目标数据内容。数据库接收到更新指示后,将数据库中的第二数据条目中的数据内容更新为目标数据内容,并递增修改对应的版本号(如从原来的V5修改为V6)。
示例性的,数据库在完成数据内容和版本号的更新后,可向第一服务节点返回该更新指示对应的更新成功信息,第一服务节点再从数据库获取第二数据条目的第三数据内容和第三版本号,此时,第三数据内容和第三版本号是数据库中存储的最新的数据内容和最新的版本号,第一服务节点在将第一缓存副本中的第二数据条目的数据内容更新为第三数据内容之前,先进行版本号的比对,因为第一服务节点在向数据库发送更新指示的时刻到接收到数据库返回的第三数据内容和第三版本号的时刻之间,一般存在一定的时间间隔,在这期间,其他服务节点对应的缓存副本可能会向第一缓存副本同步更新了第一数据条目的数据内容,因此,为了避免旧数据将新数据覆盖,此处进行版本号的比对,若第三版本号大于第四版本号,则说明数据库返回的数据内容更加准确,因此,可以根据第三数据内容对第一缓存副本中的第二数据条目的数据内容进行更新。
可选的,若第三版本号小于第四版本号,则第一缓存副本中当前已存在的数据内容更加准确,因此,可以不对第一缓存副本中的第二数据条目的数据内容进行更新,也即阻止根据第三数据内容对第一缓存副本中的第二数据条目的数据内容进行更新。
在一些实施例中,在所述数据库递增修改对应的版本号之后,还包括:所述数据库将所述第二数据条目对应的更新后的第三数据内容和第三版本号作为一条消息写入预设消息队列;第二服务节点实时对所述预设消息队列中的消息进行消费,并根据消费情况对对应的第二缓存副本中的数据条目进行更新。这样设置的好处在于,在数据库中增设预设消息队列,通过该预设消息队列顺序存储数据库中各数据条目的更新记录,方便各服务节点实时对更新记录进行消费,进而对缓存副本中的数据进行更新,避免发生数据遗漏更新的情况,进一步保证缓存数据的准确性。
进一步的,所述第二服务节点实时对所述预设消息队列中的消息进行消费,并根据消费情况对对应的第二缓存副本中的数据条目进行更新,可包括:所述第二服务节点实时获取所述预设消息队列中的第一消息,其中,所述第一消息中包括第三数据条目对应的第五数据内容和第五版本号;所述第二服务节点在确定对应的第二缓存副本中当前存在所述第三数据条目的情况下,获取所述第二缓存副本中的所述第三数据条目的第六版本号,若所述第五版本号大于所述第六版本号,则根据所述第五数据内容对所述第二缓存副本中的第三数据条目的数据内容进行更新。这样设置的好处在于,在通过消费预设消息队列的方式进行缓存更新时,同样采用版本号比对的方式来确认较新的数据内容,在确保及时无遗漏的更新的同时,保证更新后的数据内容的准确性。
在一些实施例中,所述方法还可包括:所述数据库在确定所述第二服务节点针对第二消息消费成功后,在所述预设消息队列中的第二消息处添加所述第二服务节点对应的消费标识;其中,所述第二服务节点在实时对所述预设消息队列中的消息进行消费时,在所述预设消息队列中查询所述第二服务节点对应的消费标识,对首个不存在所述第二服务节点对应的消费标识的消息进行消费;所述数据库在确定所述预设消息队列中的第三消息被所述数据处理系统中的预设数量的服务节点消费成功后,将所述第三消息从所述预设消息队列中删除。这样设置的好处在于,由于预设消息队列是一个统一的消息队列,而多个服务节点均需要对其进行消费,不同的服务节点对其中的同一个消息的消费时机可能不同,因此,为了便于区分某个消息已被哪个或哪些服务节点消费成功,可以由数据库在确定第二服务节点针对第二消息消费成功后,在预设消息队列中的第二消息处添加第二服务节点对应的消费标识,该消费标识与服务节点之间可以存在一一对应的关系,例如可以是服务节点的身份标识。当第二服务节点需要在预设消息队列中查找当前需要进行消费的消息时,可以顺序查找到首个不存在自身对应的消费标识的消息进行消费。数据库在确定预设消息队列中的第三消息被数据处理系统中的预设数量的服务节点消费成功后,将第三消息从预设消息队列中删除,其中,预设数量可以小于或等于数据处理系统中的服务节点的总数量,例如可以是等于,这样,若存在少量服务节点出现异常的情况,当异常服务节点恢复正常后,仍然可以继续通过消费预设消息队列的方式来保证对应的缓存副本中数据内容的准确性。
图4为本发明实施例提供的再一种数据处理方法的流程示意图,如图4所示,该方法包括:
步骤401、第一服务节点响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本,在确定第一缓存副本中不存在第一数据条目的情况下,向数据库发送对应的查询指示。
步骤402、数据库响应于查询指示,向第一服务节点返回第一数据条目的第一数据内容和第一版本号。
步骤403、第一服务节点在确定第一缓存副本中当前存在第一数据条目的情况下,获取第一缓存副本中的第一数据条目的第二版本号,若第一版本号大于第二版本号,则根据第一数据内容对第一缓存副本中的第一数据条目的数据内容进行更新。
步骤404、第一服务节点响应于客户端发起的针对第二数据条目的更新请求,向数据库发送对应的更新指示。
步骤405、数据库响应于更新指示,对数据库中的第二数据条目中的数据内容进行更新,并递增修改对应的版本号,将第二数据条目对应的更新后的第三数据内容和第三版本号作为第一消息写入预设消息队列。
其中,预设消息队列供数据处理系统中的所有服务节点进行独立地并行消费,数据库在确定第二服务节点针对第二消息消费成功后,在预设消息队列中的第二消息处添加第二服务节点对应的消费标识。数据库在确定预设消息队列中的第三消息被数据处理系统中的预设数量的服务节点消费成功后,将第三消息从预设消息队列中删除。
步骤406、第一服务节点从数据库获取第二数据条目的第三数据内容和第三版本号,在确定第一缓存副本中当前存在第二数据条目的情况下,获取第二缓存副本中的第二数据条目的第四版本号。
可选的,若第一服务节点确定第一缓存副本中当前不存在第二数据条目的情况下,则可结束流程或执行步骤409。
可选的,若第一服务节点确定第一缓存副本中当前不存在第二数据条目的情况下,也可在第一缓存副本中存储数据内容为第三数据内容的第二数据条目。
可选的,由于第一服务节点在进行数据库中第二数据条目的数据更新后,可以立即从数据库获取第二数据条目的第三数据内容和第三版本号,并进行版本号的比较以及缓存更新,因此,数据库可以在向第一服务节点返回第二数据条目的第三数据内容和第三版本号的同时,在预设消息队列中的第一消息处添加第一服务节点对应的消费标识,减少第一服务节点对预设消息队列的消费次数。
步骤407、第一服务节点判断第三版本号是否大于第四版本号,若是,则执行步骤408;否则,执行步骤409。
步骤408、第一服务节点根据第三数据内容对第一缓存副本中的第二数据条目的数据内容进行更新。
步骤409、第二服务节点实时获取预设消息队列中的第二消息,其中,第二消息中包括第三数据条目对应的第五数据内容和第五版本号。
其中,第二服务节点在实时对预设消息队列中的消息进行消费时,在预设消息队列中查询第二服务节点对应的消费标识,对首个不存在第二服务节点对应的消费标识的消息进行消费,假设此时首个不存在第二服务节点对应的消费标识的消息为第二消息,则对第二消息进行消费。
步骤410、第二服务节点在确定对应的第二缓存副本中当前存在第三数据条目的情况下,获取第二缓存副本中的第三数据条目的第六版本号,若第五版本号大于第六版本号,则根据第五数据内容对第二缓存副本中的第三数据条目的数据内容进行更新。
可选的,第二服务节点在确定对应的第二缓存副本中当前不存在第三数据条目的情况下,可以消费预设消息队列中的下一条消息,或者可以在第二缓存副本中添加数据内容为第五数据内容的第三数据条目后,消费预设消息队列中的下一条消息。
本发明实施例提供的数据处理方法,数据处理系统中的数据库在存储数据条目的同时,还存储对应的最新的版本号,该版本号采用递增更新的方式进行维护,当服务节点响应客户端的数据条目的查询请求时,若缓存未命中,则查询数据库,若查询后缓存中已存在该数据条目,则通过版本号比对的方式快速确定更加准确的数据内容,进而对缓存数据进行更新,提高缓存数据的准确性。此外,服务节点在数据库完成数据更新操作后,查询所更新的数据条目的最新版本号,若存在更新的版本号,则根据较新的数据内容对缓存进行更新,提高数据更新过程中缓存数据的准确性。最后,数据库中在进行数据更新时,在消息队列中写入对应的消息,由系统中的各服务节点实时地消费消息队列,在确保及时无遗漏的更新的同时,保证更新后的数据内容的准确性,也即进一步保证缓存数据的准确性,有效解决缓存之间数据不一致以及缓存与数据库中数据不一致的问题。
图5为本发明实施例提供的一种数据处理装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在数据处理系统中的计算机设备中,可通过执行数据处理方法来进行数据处理。所述数据处理系统中包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,所述数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号。该装置可包括:集成于第一服务节点中的查询模块,集成于所述数据库中的查询响应模块和集成于第一服务节点中的缓存更新模块。具体的,如图5所示,该装置包括:
查询模块501,用于响应于客户端发起的针对第一数据条目的查询请求,查询对应的第一缓存副本,在确定所述第一缓存副本中不存在所述第一数据条目的情况下,向所述数据库发送对应的查询指示;
查询响应模块502,用于响应于所述查询指示,向所述第一服务节点返回所述第一数据条目的第一数据内容和第一版本号;
缓存更新模块503,用于在确定所述第一缓存副本中当前存在所述第一数据条目的情况下,获取所述第一缓存副本中的所述第一数据条目的第二版本号,若所述第一版本号大于所述第二版本号,则根据所述第一数据内容对所述第一缓存副本中的第一数据条目的数据内容进行更新。
本发明实施例中提供的数据处理装置,数据处理系统中的数据库在存储数据条目的同时,还存储对应的最新的版本号,该版本号采用递增更新的方式进行维护,当服务节点响应客户端的数据条目的查询请求时,若缓存未命中,则查询数据库,数据库返回此时最新的版本号和数据内容,但查询数据库的过程一般需要一段时间,在这段时间内,很可能会导致缓存中加入了通过缓存之间同步等方式得到的该数据条目,此时,通过版本号比对的方式,可以快速确定更加准确的数据内容,进而对缓存数据进行更新,提高缓存数据的准确性。
本发明实施例提供了一种数据处理系统,包括数据库和多个服务节点,每个服务节点对应一个本地的缓存副本,所述数据库用于存储数据条目并维护数据条目对应的递增更新的最新的版本号,所述数据库由第一计算机设备实现,所述服务节点由第二计算机设备实现,所述第一计算机设备和所述第二计算机设备中包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例所述的数据处理方法中的相应步骤。
图6为本发明实施例提供的一种数据处理系统的结构框图,如图6所示,数据处理系统包括数据库601、第一服务节点602和第二服务节点602。需要说明的是,图6仅为示意性说明,还可以存在更多或更少的服务节点。
本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的数据处理装置中的模块。图7为本发明实施例提供的一种计算机设备的结构框图。计算机设备700包括存储器701、处理器702及存储在存储器701上并可在处理器702上运行的计算机程序,所述处理器702执行所述计算机程序时实现本发明实施例提供的数据处理方法中的相应步骤。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的数据处理方法。
上述实施例中提供的数据处理装置、系统、设备以及存储介质可执行本发明任意实施例所提供的数据处理方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的数据处理方法。
注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:基于多链NFT跨链方法及系统