一种缓存数据同步方法及系统与流程

文档序号:12462692阅读:278来源:国知局
一种缓存数据同步方法及系统与流程

本发明涉及计算机信息处理技术领域,尤其涉及一种缓存数据同步方法及系统。



背景技术:

在计算机进行高性能运算时,通常将数据缓存在内存中,在调用数据时,直接从内存中读取数据,能够取得比从磁盘读取数据更好的效果。但是,当内存中需要缓存的数据经常发生变化时,仅仅通过定时刷新的方式保持缓存数据与基础数据的同步是不够的,这样会导致最终读取的数据可能是更新之前的旧数据,因而,如何及时同步基础数据及内存中的缓存数据成为了急需解决的问题。针对上述问题,现有的解决方案是由调用缓存的客户端负责缓存的同步,即,在客户端更新基础数据的同时更新缓存,这样能够保证客户端下次从缓存中读取的数据必然是最新的数据。

上述现有的解决方案虽然能够解决缓存数据和基础数据的实时同步问题,但是,由于缓存数据由客户端负责更新,在为了提高性能而需要引入缓存时,或者增加了一种需要缓存的业务数据种类时,都需要修改调用的客户端程序,这是一种侵入式的改变。进一步地,对客户端程序进行修改还可能出现引入新的错误的情况,给用户带来不便。



技术实现要素:

本发明实施例提供了一种缓存数据同步方法及系统,旨在不改变客户端程序的情况下,使缓存数据与基础数据保持同步。

本发明实施例的第一方面,提供了一种缓存数据同步方法,所述缓存数据同步方法包括:

存储网关接收客户端发送的数据操作请求及目标操作数据;

所述存储网关根据所述数据操作请求,针对所述目标操作数据,分别对缓存区域及持久化存储区域进行相应的数据操作,以使得所述缓存区域及所述持久化存储区域的数据达到同步。

本发明实施例的第二方面,提供了一种缓存数据同步系统,包括:

客户端,与所述客户端相连的存储网关,与所述存储网关相连的持久化存储区域及缓存区域;

其中,所述存储网关包括:

操作请求接收单元,用于接收所述客户端发送的数据操作请求及目标操作数据;

数据操作单元,用于根据所述操作请求接收单元接收的数据操作请求,针对所述目标操作数据,分别对缓存区域及持久化存储区域进行相应的数据操作,以使得所述缓存区域及所述持久化存储区域的数据达到同步。

由上可见,在本发明实施例中,存储网关接收客户端发送的数据操作请求及目标操作数据,并由所述存储网关根据所述数据操作请求,针对所述目标操作数据,分别对缓存区域及持久化存储区域进行相应的数据操作,以使得所述缓存区域及所述持久化存储区域的数据达到同步。本发明实施例使得缓存区域与客户端解耦,客户端无需作任何改变,即可使得缓存区域中的缓存数据与持久化存储区域中的基础数据保持同步。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的缓存数据同步方法的实现流程图;

图2为本发明实施例提供的缓存数据同步系统的结构框图;

图3为本发明实施例提供的缓存数据同步系统中的存储网关的结构框图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

以下结合具体实施例对本发明的实现进行详细描述:

实施例一

图1示出了本发明实施例一提供的缓存数据同步方法的实现流程,详述如下:

在步骤S101中,存储网关接收客户端发送的数据操作请求及目标操作数据。

在本发明实施例中,可以由存储网关接收上述客户端发送的用户输入的数据操作请求及目标操作数据。上述数据操作请求包括但不限于如下一种以上:数据修改请求、数据删除请求及数据写入请求。

在步骤S102中,上述存储网关根据上述数据操作请求,针对上述目标操作数据,分别对缓存区域及持久化存储区域进行相应的数据操作,以使得上述缓存区域及上述持久化存储区域的数据达到同步。

在本发明实施例中,由上述存储网关将上述目标操作数据根据上述步骤S101接收到的数据操作请求,分别对缓存区域及持久化区域进行相应的数据操作。可选地,可以由上述存储网关将上述目标操作数据发送至上述持久化存储区域,以进行数据持久化操作;并由上述存储网关将上述目标操作数据发布至上述缓存区域,以使得上述缓存区域根据接收到的目标操作数据与上述持久化存储区域的数据进行同步更新。

具体地,当上述数据操作请求为数据修改请求时,在步骤S102中,存储网关可以将上述目标操作数据发送至上述持久化存储区域,替换掉上述持久化存储区域中与上述目标操作数据对应的原基础数据;并且,存储网关还可以将上述目标数据发送至上述缓存区域中,替换掉上述缓存区域中与上述目标操作数据对应的原缓存数据。

具体地,当上述数据操作请求为数据删除请求时,在步骤S102中,存储网关可以将上述数据删除请求发送至上述持久化存储区域,查找到上述目标操作数据并删除;并且,存储网关还可以将上述数据删除请求发送至上述缓存区域,查找到上述目标操作数据并删除。

具体地,当上述数据操作请求为数据写入请求时,在步骤S102中,存储网关可以将上述目标操作数据发送至上述持久化存储区域,存储于由持久化存储区域为其分配的位置;并且,存储网关还可以将上述目标数据发送至上述缓存区域中,存储于由缓存区域为其分配的位置。

需要注意的是,步骤S102中,存储网关对缓存区域及持久化区域进行的相应数据操作可以以同步模式进行,也可以以异步模式进行,此处不作限定。

可选地,为了避免浪费上述缓存区域的资源,上述缓存区域可以使用发布/订阅模式订阅上述存储网关的数据,上述缓存数据同步方法还包括:

根据存储于上述持久化存储区域的所有数据的数据类型,对上述数据类型进行配置,确定被上述缓存区域订阅的数据类型;

上述存储网关将上述目标操作数据发布至上述缓存区域,以使得上述缓存区域根据接收到的目标操作数据与上述持久化存储区域的数据进行同步更新,包括:

上述存储网关判断上述目标操作数据是否为被上述缓存区域订阅的数据类型;

若上述目标操作数据为被上述缓存区域订阅的数据类型,则将上述目标操作数据发布至上述缓存区域,以使得上述缓存区域根据接收到的目标操作数据与上述持久化存储区域的数据进行同步更新。

其中,由缓存区域通过订阅/发布模式订阅存储网关的数据,当存储网关的数据发生改变时,会通知缓存区域这个订阅者。因而,客户端只需要向存储网关进行数据交互即可,而与缓存区域及持久化存储区域的交互则由存储网关来执行。当然,上述缓存区域也可以使用事件机制或者观察者模式订阅存储网关的数据,此处不作限定。

同时,由于数据被调用的频率并不一样,可能存在被客户端访问频繁的活跃数据,同时也可能存在不活跃的非热点数据。对于活跃数据,如果仅仅将其存放于持久化存储区域中,当客户端直接或间接地从持久化存储区域中读取数据时,由于持久化存储区域读取速度的限制,将导致性能瓶颈,拖累速度。而另一方面,对于不活跃的非热点数据,如果也将其都存放于缓存区域的话,将导致缓存区域的空间被大量非热点数据占用,导致资源被浪费。因而,这本发明实施例中,需要对存放在缓存区域的数据类型作出区分,将活跃数据同时存放于持久化存储区域及缓存区域中,而非热点数据则只会被存放于持久化存储区域中。用户或者开发人员可以预先通过配置文件,将存储区域中可能存放的所有数据的数据类型进行分类,确定可以被存放于缓存区域的热点数据类型。当然,对数据类型进行的分类操作也可以通由用户在运行客户端时通过软件程序实现,此处不作限定。

在确定了被缓存区域订阅的数据类型后,当存储网关接收到客户端发送的目标操作数据后,则可以先对上述目标操作数据进行判断,检测其是否被缓存区域订阅。如果上述目标操作数据未被存储区域订阅,则无需将上述目标操作数据发布至缓存区域,只需将其发送至持久化存储区域进行存储即可;如果上述目标操作数据被存储区域订阅,则除了将上述目标操作数据发送至持久化存储区域,还需要将其发布至缓存区域。上述缓存区域在接收到了目标操作数据后,根据上述数据操作请求,对目标操作数据进行相应的数据操作,以使得缓存区域中存储的数据与持久化存储区域中存储的数据达到同步。

可选地,为了保障读取数据时读取到的是最新数据,上述缓存数据同步方法还包括:

上述存储网关接收上述客户端发送的数据读取请求,根据上述数据读取请求确定目标读取数据;

上述存储网关在上述缓存区域中查找上述目标读取数据,并将查找到的上述目标读取数据发送至上述客户端。

其中,客户端不再直接读取缓存区域的数据,而是通过存储网关获取间接的获取缓存区域的数据。进一步地,由于数据存在活跃数据及非热点数据的区别,而只有活跃数据是存储在缓存区域中的,因而,此处存储网关不一定能够从缓存区域中查找到目标读取数据。当缓存区域中不存在上述目标读取数据时,需要由存储网关从持久化存储区域中再次查找上述目标读取数据并返回给客户端。或者,也可以通过存储网关中对数据类型的配置判断上述目标读取数据是否存于上述缓存区域中,以节省查找数据的时间。

由上可见,在本发明实施例中,不再通过客户端负责缓存的更新,而是由存储网关解耦缓存区域与客户端,当需要缓存新的数据类别时,仅需进行简单的配置即可,不需要修改任何客户端的代码,即可实现持久化存储区域及缓存区域的数据同步。进一步地,由于客户端无需作任何改变,因而杜绝了引入新错误的可能。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,上述的存储介质,如ROM/RAM、磁盘或光盘等。

实施例二

图2示出了本发明实施例二提供的缓存数据同步系统的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该缓存数据同步系统2包括:客户端21,与上述客户端21相连的存储网关22,与上述存储网关22相连的缓存区域23及持久化存储区域24。

进一步地,图3示出了本发明实施例提供的缓存数据同步系统2中的存储网关22的具体结构框图,为了便于说明,仅示出了与本发明实施例相关的部分。该存储网关22包括:操作请求接收单元221,数据操作单元222。

其中,操作请求接收单元221,用于接收客户端21发送的数据操作请求及目标操作数据;

数据操作单元222,用于根据上述操作请求接收单元221接收的数据操作请求,针对上述目标操作数据,分别对缓存区域23及持久化存储区域24进行相应的数据操作,以使得上述缓存区域23及上述持久化存储区域24的数据达到同步。

可选地,上述数据操作单元222,包括:

持久化操作子单元,用于将上述操作请求接收单元221接收到的目标操作数据发送至上述持久化存储区域24,以进行数据持久化操作;

缓存操作子单元,用于将上述操作请求接收单元221接收到的目标操作数据发布至上述缓存区域23,以使得上述缓存区域23根据接收到的目标操作数据与上述持久化存储区域24的数据进行同步更新。

可选地,上述缓存区域23使用发布/订阅模式订阅上述存储网关22的数据,上述存储网关22还包括:

数据配置单元,用于根据存储于上述持久化存储区域24的所有数据的数据类型,对上述数据类型进行配置,确定被上述缓存区域23订阅的数据类型;

上述数据操作单元222,包括:

订阅数据判断子单元,用于判断上述目标操作数据是否为被上述缓存区域23订阅的数据类型;

上述缓存操作子单元,具体用于当上述目标操作数据为被上述缓存区域23订阅的数据类型时,将上述目标操作数据发布至上述缓存区域23,以使得上述缓存区域23根据接收到的目标操作数据与上述持久化存储区域24的数据进行同步更新。

可选地,上述存储网关22还包括:

读取请求接收单元,用于接收上述客户端21发送的数据读取请求;

目标读取数据确定单元,用于根据上述读取请求接收单元接收到的数据读取请求确定目标读取数据;

第一数据查找单元,用于在上述缓存区域23中查找上述目标读取数据确定单元确定的目标读取数据

第一数据返回单元,用于将上述第一数据查找单元查找到的目标读取数据发送至上述客户端21。

可选地,上述存储网关22还包括;

第二数据查找单元,用于当上述缓存区域23中不存在上述目标读取数据时,从上述持久化存储区域24中查找上述目标读取数据;

第二数据返回单元,用于将上述第二数据查找单元查找到的目标读取数据发送至上述客户端21。

由上可见,在本发明实施例中,缓存数据同步系统引入了存储网关,因而不再通过客户端负责缓存的更新,而是由存储网关解耦缓存区域与客户端,当需要缓存新的数据类别时,仅需进行简单的配置即可,不需要修改任何客户端的代码,即可实现持久化存储区域及缓存区域的数据同步。进一步地,由于客户端无需作任何改变,因而杜绝了引入新错误的可能。

需要说明的是,在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的一种较佳实施例,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1