一种分布式缓存的实现方法及装置的制作方法

文档序号:6585132阅读:131来源:国知局
专利名称:一种分布式缓存的实现方法及装置的制作方法
技术领域
本发明涉及数据存储领域,尤其涉及一种分布式缓存的实现方法及装置。
背景技术
目前,在现有数据缓存的方案中,比较典型的是记忆缓存memcached方案,如图1 所示为现有技术中缓存方案的系统架构示意图,图1中包括客户端程序库、采用分布式算 法设置的多个memcached。从上述现有技术的系统结构图中可知,其分布式架构主要布置在客户端,当增加 一个新节点时,会造成缓存数据分布的重新计算;同时,由于缓存(Cache)服务节点都是单 点设置的,当某个Cache服务节点崩溃时,就需要较长的时间才能恢复,影响了业务的正常 运行。

发明内容
本发明实施例提供了一种分布式缓存的实现方法及装置,能够实现数据的分布式 缓存,并在增加Cache服务节点时,能够实现数据的动态迁移,使数据可以重新分布,而不 影响业务的正常使用。本发明实施例提供了一种分布式缓存的实现方法,所述方法包括配置缓存数据和多个缓存服务节点之间的存储对应关系,并在某个缓存服务节点 向另一缓存服务节点迁移数据后,更改缓存数据和所述某个缓存服务节点以及所述另一缓 存服务节点之间的存储对应关系;通过代理服务模块接收业务应用的数据操作请求,并根据所配置的存储对应关 系,将所述数据操作请求分配到相应的缓存服务节点上进行数据操作。所述方法还包括为所述多个缓存服务节点设置一一对应的备用缓存服务节点,并将所述多个缓存 服务节点内的缓存数据同步到与之对应的备用缓存服务节点;当某个缓存服务节点发生故障时,将所述数据操作请求切换到与该缓存服务节点 对应的备用缓存服务节点上进行相应的数据操作。所述在相应的缓存服务节点上进行数据操作时,所述方法还包括将所述相应缓存服务节点内存储的未回写数据,通过数据存储服务模块回写到存 储介质中。所述代理服务模块包括一个或多个,接收并处理一个或多个业务应用的数据操作 请求。在所述某个缓存服务节点向另一缓存服务节点迁移数据时,所述方法还包括若所迁移的数据为未回写数据,则由所述某个缓存服务节点通过数据存储服务模 块将该迁移的数据回写到存储介质中;若有针对该迁移数据的数据操作请求,则由所述某个缓存服务节点来执行相应的数据操作,并在完成相应的数据操作之后,继续向所述另一缓存服务节点迁移数据。所述数据操作请求包括数据查询或设置请求。所述配置缓存数据和多个缓存服务节点之间的存储对应关系,具体包括在路由器中配置缓存数据和多个缓存服务节点之间的存储对应关系。本发明实施例还提供了一种分布式缓存的实现装置,所述装置包括存储对应关系配置单元,用于配置缓存数据和多个缓存服务节点之间的存储对应 关系,并在某个缓存服务节点向另一缓存服务节点迁移数据后,负责更改缓存数据和所述 某个缓存服务节点以及所述另一缓存服务节点之间的存储对应关系;代理服务模块,用于接收业务应用的数据操作请求,并根据所述存储对应关系配 置单元所配置的存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进行数 据操作。所述装置还包括备用节点设置单元,用于为所述多个缓存服务节点设置一一对应的备用缓存服务 节点,并将所述多个缓存服务节点内的缓存数据同步到与之对应的备用缓存服务节点;备用节点切换单元,用于当某个缓存服务节点发生故障时,将数据操作请求切换 到与该缓存服务节点对应的备用缓存服务节点上进行相应的数据操作。本发明实施例还提供了一种分布式缓存的实现系统,所述系统包括代理服务模 块、存储对应关系配置单元、多个缓存服务节点、数据存储服务模块和存储介质,其中所述存储对应关系配置单元,用于配置缓存数据和所述多个缓存服务节点之间的 存储对应关系,并在某个缓存服务节点向另一缓存服务节点迁移数据后,负责更改缓存数 据和所述某个缓存服务节点以及所述另一缓存服务节点之间的存储对应关系;所述代理服务模块,用于接收业务应用的数据操作请求,并根据所述存储对应关 系配置单元所配置的存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进 行数据操作;所述多个缓存服务节点,用于将数据从所述存储介质中查询得到,或保存数据到 所述存储介质中;所述数据存储服务模块,用于将所述相应缓存服务节点内存储的未回写数据回写 到所述存储介质中; 所述存储介质,用于存储数据。所述系统还包括多个备用缓存服务节点,与所述多个缓存服务节点一一对应,且所述多个缓存服 务节点内的缓存数据被同步到与之对应的备用缓存服务节点内;其中,当某个缓存服务节点发生故障时,数据操作请求被切换到与该缓存服务节 点对应的备用缓存服务节点上进行相应的数据操作。由上述所提供的技术方案可以看出,首先配置缓存数据和多个缓存服务节点之间 的存储对应关系;然后通过代理服务模块接收业务应用的数据操作请求,并根据所配置的 存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进行数据操作。通过上 述技术方案,就可以实现数据的分布式缓存,并在增加Cache服务节点时,能够实现数据的 动态迁移,使数据可以重新分布,而不影响业务的正常使用。


图1为现有技术中缓存方案的系统架构示意图;图2为本发明实施例1所提供分布式缓存实现方法的流程示意图;图3为按照本发明实施例1所述方法进行实施的具体实例的系统结构示意图;图4为按照本发明实施例1所述方法进行实施的具体实例的迁移过程时序图;图5为本发明实施例1所举具体实例数据设置操作的信令交互示意图;图6为本发明实施例1所举具体实例数据查询操作的信令交互示意图;图7为本发明实施例2所提供分布式缓存实现装置的结构示意图。
具体实施例方式本发明实施例提供了一种分布式缓存的实现方法及装置,能够实现数据的分布式 缓存,并在增加Cache服务节点时,能够实现数据的动态迁移,使数据可以重新分布,而不 影响业务的正常使用。为更好的描述本发明实施例,现结合附图对本发明的具体实施例进行说明,如图2 所示本发明实施例1所提供分布式缓存实现方法的流程示意图,所述方法包括步骤21 配置缓存数据和多个缓存服务节点之间的存储对应关系。在该步骤中,首先需要配置缓存数据和多个缓存服务节点之间的存储对应关系, 并且在某个缓存服务节点向另一缓存服务节点迁移数据之后,更改缓存数据和该某个缓存 服务节点以及另一缓存服务节点之间的存储对应关系。在具体实现过程中,可以在路由器中配置缓存数据和多个缓存服务节点之间的存 储对应关系,举例来说,具体配置策略的方式可以是先对缓存数据的key进行一致性的哈 希hash运算,得到一个32位的无符号整数,其值均勻的分布在0 4294967295范围内,然 后对key的hash值进行分页管理,例如可以设置1万为一页,再配置页数与各缓存服务节 点之间的对应关系。除以上所述的方式外,本领域技术人员根据实际需求想到的其他配置 方式也是可以满足要求的。另外,在本实施例1中,当某个缓存服务节点向另一缓存服务节点迁移数据时,若 所迁移的数据为未回写数据(即已经写入到缓存服务节点,但还没有更新到存储介质上的 数据),则可以由该某个缓存服务节点通过数据存储服务模块将该未回写的迁移数据回写 到存储介质中,这里的存储介质可以包括数据库或文件等。另外,当某个缓存服务节点向另一缓存服务节点迁移数据时,若有针对该迁移数 据的数据操作请求,则可以由所述某个缓存服务节点来执行相应的数据操作,并在完成相 应的数据操作之后,继续向所述另一缓存服务节点迁移数据,这样就可以在迁移数据失败 时,保证数据不丢失,提高安全性。在具体实现过程中,还可以为该多个缓存服务节点设置一一对应的备用缓存服务 节点,并将所述多个缓存服务节点内的缓存数据同步到与之对应的备用缓存服务节点中; 当某个缓存服务节点发生故障时,就可以通过更改路由器的配置关系,将数据操作请求切 换到与该缓存服务节点对应的备用缓存服务节点上进行相应的数据操作,这样就可以迅速 恢复故障,从而减少对业务的不利影响。
步骤22 通过代理服务模块接收业务应用的数据操作请求,并根据所配置的存储 对应关系,将所述数据操作请求分配到相应的缓存服务节点上进行数据操作。在本步骤22中,首先通过代理服务模块接收业务应用发起的数据操作请求,例如 数据查询或设置请求等;然后由代理服务模块根据所配置的存储对应关系,将所述数据操 作请求分配到相应的缓存服务节点上进行数据操作。这样通过增加路由和代理服务,就可 以将数据分布的算法封装在系统内,业务应用只需要调用系统提供的接口就可以实现数据 的分布式缓存;并且当增加新的缓存服务节点时,只需修改路由配置关系,就可以实现数据 迁移,使数据重新分布,而不影响业务的使用。这里的代理服务模块可以包括一个或多个,形成代理服务模块群,这样就可以接 收并处理一个或多个业务应用的数据操作请求,提高处理效率。另外,当在相应的缓存服务节点上进行数据操作时,若相应缓存服务节点上有未 回写的数据,则可以进一步通过数据存储服务模块将相应缓存服务节点内存储的未回写数 据回写到存储介质中。通过以上实施例1的技术方案,就可以实现数据的分布式缓存,并在增加Cache服 务节点时,能够实现数据的动态迁移,使数据可以重新分布,而不影响业务的正常使用。举例来说,如图3所示为按照本发明实施例1所述方法进行实施的具体实例的 系统结构示意图,图3中包括多个代理服务模块ftOxy、路由器Router、缓存服务节点群 CacheServer (包括多个缓存服务节点)、数据存储服务模块Db Accesse以及存储介质,具 体各部分功能为Proxy负责接收到业务应用的数据操作请求(例如数据查询或设置请求)后,并 根据Router中所配置的路由表将所述数据操作请求分派到相应的Cach必erver上进行操 作;图3中的多个Proxy可以接收并处理多个业务应用的数据操作请求,例如图3中所示为 2个业务应用的数据操作请求。Router负责配置缓存数据和各CacheServer之间的对应关系表,通过该对应关系 表可以得之缓存数据应该存储在哪个CacheServer中。缓存服务节点群Cachekrver是数据查询和存储的核心,负责通过它将数据从内 存中查询得到或保存数据到内存中。Db Access负责将未回写数据写入到存储介质中,存储介质可以是数据库或文件等。按照如图3的系统架构,在需要进行缓存数据迁移时,举例来说,若如图3中业务1 的缓存服务节点1向缓存服务节点2迁移数据时,迁移过程的时序图如图4所示,图4中首先,Router向缓存服务节点2发送迁移某号段的请求;缓存服务节点2返回准 备完成;Router再发送开始迁移请求到缓存服务节点1。缓存服务节点1再按顺序把该号段的同步到缓存服务节点2 ;这里,若同步某号段 数据之前,判断该数据为未回写数据,则可以通过Db Access将该未回写数据回写到存储介 质中,并将同步时的set时间为当前时间,未回写数据的标识设为空false。然后缓存服务节点1向Router返回迁移完成的消息;Router再更改相应缓存数 据、缓存服务节点1和缓存服务节点2之间的配置关系,完成路由配置信息的更改,并通知 到各个相关服务,完成数据迁移过程。
在具体实现过程中,若新增缓存服务节点,或原有的缓存服务节点无法满足数据 存储需求时,就可以按照上述如图4的过程进行数据的迁移;同时在迁移号段数据的过程 中,如果有针对该迁移数据的数据操作请求,则可以由原缓存服务节点来执行相应的数据 操作,并在完成相应的数据操作之后,继续向另一缓存服务节点迁移数据,例如在如图4的 迁移过程中,若有针对该号段的get请求,则在缓存服务节点1查询出结果并返回结果;若 有针对该号段的Set请求,则在缓存服务节点1完成Set操作,并将数据回写到存储设备之 后,再当作干净的数据同步迁移到缓存服务节点2中。这样在迁移数据失败时,就可以保证 数据不丢失,从而提高安全性。另外,按照如图3的系统架构,在具体实现过程中,业务应用发起的数据操作请求 可以为数据设置Get)操作请求或数据查询(get)操作请求,并且图3中的多个缓存服务 节点(可称为主缓存服务节点)都设置有一一对应的备用缓存服务节点,在主缓存服务节 点进行相应的数据操作请求时,可以将主缓存服务节点内的缓存数据同步到与之对应的备 用缓存服务节点中。举例来说,如图5所示为本发明实施例1所举具体实例数据设置操作的信令交互 示意图,图5中包括1、代理服务模块ftOxy将接收到的数据设置操作set请求发送到相应的主缓存服 务节点cache ;2、主cache将set信息存入共享内存中;3、主cache返回相应的操作结果到Proxy ;4、主cache在返回操作结果的同时,将其内的缓存数据同步到与之对应的备用 cache 中;5、备用cache记录同步点;6、主cache通过数据存储服务模块Db Accesse将未回写数据回写到存储介质中, 这里回写未回写数据的过程可以是一个定时的作业;7、存储介质通过Db Accesse返回相应的处理结果到主cache ;8、主cache同步回写时间点到备用cache。通过以上的信令交互过程,主缓存服务节点在进行数据设置操作时,会将主缓存 服务节点内的缓存数据同步到与之对应的备用缓存服务节点中,当主缓存服务节点发生故 障时,就可以将业务应用发起的数据操作请求切换到与之对应的备用缓存服务节点上继续 进行。如图6所示为本发明实施例1所举具体实例数据查询操作的信令交互示意图,图 6中UProxy将接收到的数据查询操作get请求发送到相应的主cache ;2、主cache首先从共享内存中查找数据;这里,如果从共享内存中查找到了数据, 那么就可以直接返回结果;3、若主cache没有从共享内存中查找到数据,则通过Db Accesse在存储介质中查 找数据;4、存储介质通过Db Accesse返回相应的结果到主cache,并将结果传给ftOxy ;5、主cache将其内的缓存数据同步到备用cache ;
6、备用cache返回同步结果到主cache。通过以上的信令交互过程,主缓存服务节点在进行数据查询操作时,会将主缓存 服务节点内的缓存数据同步到与之对应的备用缓存服务节点中,当主缓存服务节点发生故 障时,就可以将业务应用发起的数据操作请求切换到与之对应的备用缓存服务节点上继续 进行。在具体实现中,可以通过路由器来实现主备切换,由Router更新配置关系,将某 备用缓存服务节点改为主缓存服务节点,当这个备用缓存服务节点同步到该配置更改后, 就可以将自己的服务状态改为主缓存服务节点,继续为业务应用提供服务,这样就可以迅 速恢复故障,从而减少对业务的不利影响。本发明实施例2还提供了一种分布式缓存的实现装置,如图7所示为本发明实施 例2所提供装置的结构示意图,所述装置包括存储对应关系配置单元,用于配置缓存数据和多个缓存服务节点之间的存储对应 关系,并在某个缓存服务节点向另一缓存服务节点迁移数据后,负责更改缓存数据和所述 某个缓存服务节点以及所述另一缓存服务节点之间的存储对应关系。具体进行配置的方式 见以上方法实施例1中所述。代理服务模块,用于接收业务应用的数据操作请求,并根据所述存储对应关系配 置单元所配置的存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进行数 据操作。具体接收和分配的过程见以上方法实施例1中所述。另外,在上述装置中还可包括备用节点设置单元,用于为所述多个缓存服务节点设置一一对应的备用缓存服务 节点,并将所述多个缓存服务节点内的缓存数据同步到与之对应的备用缓存服务节点。备用节点切换单元,用于当某个缓存服务节点发生故障时,将数据操作请求切换 到与该缓存服务节点对应的备用缓存服务节点上进行相应的数据操作。本实施例2所述分布式缓存实现装置的具体实现过程可以见以上方法实施例1中 所述。本发明实施例3还提供了一种分布式缓存的实现系统,所述系统包括代理服务 模块、存储对应关系配置单元、多个缓存服务节点、数据存储服务模块和存储介质,其中所述存储对应关系配置单元,用于配置缓存数据和所述多个缓存服务节点之间的 存储对应关系,并在某个缓存服务节点向另一缓存服务节点迁移数据后,负责更改缓存数 据和所述某个缓存服务节点以及所述另一缓存服务节点之间的存储对应关系。所述代理服务模块,用于接收业务应用的数据操作请求,并根据所述存储对应关 系配置单元所配置的存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进 行数据操作。所述多个缓存服务节点,用于将数据从所述存储介质中查询得到,或保存数据到 所述存储介质中。所述数据存储服务模块,用于将所述相应缓存服务节点内存储的未回写数据回写 到所述存储介质中。所述存储介质,用于存储数据。上述系统还可包括多个备用缓存服务节点,该多个备用缓存服务节点与所述多个缓存服务节点一一对应,且所述多个缓存服务节点内的缓存数据被同步到与之对应的备用 缓存服务节点内;其中,当某个缓存服务节点发生故障时,数据操作请求被切换到与该缓存 服务节点对应的备用缓存服务节点上进行相应的数据操作。本实施例3所述分布式缓存实现系统的具体实现过程可以见以上方法实施例1中 所述。值得注意的是,上述装置和系统实施例中,所包括的各个单元只是按照功能逻辑 进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元 的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。综上所述,本发明实施例能够实现数据的分布式缓存,并在增加Cache服务节点 时,能够实现数据的动态迁移,使数据可以重新分布,而不影响业务的正常使用;同时,通过 主备缓存服务节点之间的切换,可以迅速恢复故障,减少对业务的不利影响。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换, 都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范 围为准。
权利要求
1.一种分布式缓存的实现方法,其特征在于,所述方法包括配置缓存数据和多个缓存服务节点之间的存储对应关系,并在某个缓存服务节点向另 一缓存服务节点迁移数据后,更改缓存数据和所述某个缓存服务节点以及所述另一缓存服 务节点之间的存储对应关系;通过代理服务模块接收业务应用的数据操作请求,并根据所配置的存储对应关系,将 所述数据操作请求分配到相应的缓存服务节点上进行数据操作。
2.如权利要求1所述的方法,其特征在于,所述方法还包括为所述多个缓存服务节点设置一一对应的备用缓存服务节点,并将所述多个缓存服务 节点内的缓存数据同步到与之对应的备用缓存服务节点;当某个缓存服务节点发生故障时,将所述数据操作请求切换到与该缓存服务节点对应 的备用缓存服务节点上进行相应的数据操作。
3.如权利要求1所述的方法,其特征在于,所述在相应的缓存服务节点上进行数据操 作时,所述方法还包括将所述相应缓存服务节点内存储的未回写数据,通过数据存储服务模块回写到存储介 质中。
4.如权利要求1所述的方法,其特征在于,所述代理服务模块包括一个或多个,接收并 处理一个或多个业务应用的数据操作请求。
5.如权利要求1所述的方法,其特征在于,在所述某个缓存服务节点向另一缓存服务 节点迁移数据时,所述方法还包括若所迁移的数据为未回写数据,则由所述某个缓存服务节点通过数据存储服务模块将 该迁移的数据回写到存储介质中;若有针对该迁移数据的数据操作请求,则由所述某个缓存服务节点来执行相应的数据 操作,并在完成相应的数据操作之后,继续向所述另一缓存服务节点迁移数据。
6.如权利要求1-5其中之一所述的方法,其特征在于,所述数据操作请求包括数据查 询或设置请求。
7.如权利要求1-5其中之一所述的方法,其特征在于,所述配置缓存数据和多个缓存 服务节点之间的存储对应关系,具体包括在路由器中配置缓存数据和多个缓存服务节点之间的存储对应关系。
8.一种分布式缓存的实现装置,其特征在于,所述装置包括存储对应关系配置单元,用于配置缓存数据和多个缓存服务节点之间的存储对应关 系,并在某个缓存服务节点向另一缓存服务节点迁移数据后,负责更改缓存数据和所述某 个缓存服务节点以及所述另一缓存服务节点之间的存储对应关系;代理服务模块,用于接收业务应用的数据操作请求,并根据所述存储对应关系配置单 元所配置的存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进行数据操 作。
9.如权利要求9所述的装置,其特征在于,所述装置还包括备用节点设置单元,用于为所述多个缓存服务节点设置一一对应的备用缓存服务节 点,并将所述多个缓存服务节点内的缓存数据同步到与之对应的备用缓存服务节点;备用节点切换单元,用于当某个缓存服务节点发生故障时,将数据操作请求切换到与该缓存服务节点对应的备用缓存服务节点上进行相应的数据操作。
10.一种分布式缓存的实现系统,其特征在于,所述系统包括代理服务模块、存储对应 关系配置单元、多个缓存服务节点、数据存储服务模块和存储介质,其中所述存储对应关系配置单元,用于配置缓存数据和所述多个缓存服务节点之间的存储 对应关系,并在某个缓存服务节点向另一缓存服务节点迁移数据后,负责更改缓存数据和 所述某个缓存服务节点以及所述另一缓存服务节点之间的存储对应关系;所述代理服务模块,用于接收业务应用的数据操作请求,并根据所述存储对应关系配 置单元所配置的存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进行数 据操作;所述多个缓存服务节点,用于将数据从所述存储介质中查询得到,或保存数据到所述 存储介质中;所述数据存储服务模块,用于将所述相应缓存服务节点内存储的未回写数据回写到所 述存储介质中;所述存储介质,用于存储数据。
11.如权利要求10所述的系统,其特征在于,所述系统还包括多个备用缓存服务节点,与所述多个缓存服务节点一一对应,且所述多个缓存服务节 点内的缓存数据被同步到与之对应的备用缓存服务节点内;其中,当某个缓存服务节点发生故障时,数据操作请求被切换到与该缓存服务节点对 应的备用缓存服务节点上进行相应的数据操作。
全文摘要
本发明实施例提供了一种分布式缓存的实现方法及装置。所述方法包括首先配置缓存数据和多个缓存服务节点之间的存储对应关系;然后通过代理服务模块接收业务应用的数据操作请求,并根据所配置的存储对应关系,将所述数据操作请求分配到相应的缓存服务节点上进行数据操作。通过上述技术方案,就可以实现数据的分布式缓存,并在增加Cache服务节点时,能够实现数据的动态迁移,使数据可以重新分布,而不影响业务的正常使用。
文档编号G06F12/08GK102103544SQ20091024257
公开日2011年6月22日 申请日期2009年12月16日 优先权日2009年12月16日
发明者张凯, 张维全, 赵政, 钟科, 阮曙东, 陈生, 黄桂山 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1