一种基于元数据管理的分布式缓存实现方法及系统技术方案

技术编号:7851422 阅读:189 留言:0更新日期:2012-10-13 08:18
本发明专利技术提供一种基于元数据管理的分布式缓存实现方法,包括:步骤1、用户通过缓存客户端获取实际缓存节点元数据信息;步骤2、用户根据缓存客户端返回的元数据信息直接访问缓存节点存取数据。本发明专利技术还提供一种基于元数据管理的分布式缓存实现系统。通过本发明专利技术提供一种基于元数据管理的分布式缓存实现方法及系统,可以解决在分布式缓存的环境中,当缓存节点数目有变化,或者某些缓存节点失效的情况下所引起的缓存重组、命中率大幅度降低的问题。

【技术实现步骤摘要】

本专利技术涉及一种计算机领域,特别是涉及一种基于元数据管理的分布式缓存实现方法及系统
技术介绍
分布式,是指在核心系统外部,通过一个集群方式实现的某项功能。Memcached是目前使用范围最广泛的一个分布式缓存实现。Memcached尽管是“分布式”的缓存服务器,但服务器端并没有分布式功能。各个Memcached节点间不会互相通信以共享信息,对分布式的支持完全取决于客户端的实现。 目前的Memcache客户端,一般通过资源池的方式实现分布式,资源调度算法主要有“余数计算法”和“一致哈希计算法”,采用“余数计算法”的客户端,在缓存服务器数目有变化时,会引发大面积的缓存重组,严重影响缓存命中率。而“一致哈希计算法”的复杂度高于“余数计算法”,在缓存服务器数目变化时,影响面积小于“余数计算法”,但也同样会产生缓存重组,降低缓存命中率。另外,目前的Memcache客户端实现均不支持副本功能。所以,有必要提出一种新的技术,以解决在分布式缓存的环境中,当缓存节点(月艮务器)数目有变化,或者某些缓存节点失效的情况下,所引起的缓存重组、命中率大幅度降低的问题。
技术实现思路
本专利技术的目的在于提供一种基于元数据管理的分布式缓存实现方法及系统,可以解决在分布式缓存的环境中,当缓存节点数目有变化,或者某些缓存节点失效的情况下所引起的缓存重组、命中率大幅度降低的问题。为了解决以下技术问题,本专利技术提供一种基于元数据管理的分布式缓存实现方法,包括步骤I、用户通过缓存客户端获取实际缓存节点元数据信息;步骤2、用户根据缓存客户端返回的元数据信息直接访问缓存节点存取数据。进一步地,所述步骤I具体包括步骤I. I、缓存客户端接收用户请求;步骤I. 2、缓存客户端根据用户请求,获取实际缓存节点元数据信息;步骤I. 3、缓存客户端将获取的缓存节点元数据信息返回给用户。进一步地,所述步骤I. 2具体包括缓存客户端根据用户请求,从存储的元数据中确定出最优缓存节点作为用户的实际缓存节点。进一步地,所述确定最优缓存节点的具体方法如下当缓存数据没有副本时,根据元数据中存储的缓存节点存储情况以及响应时间,确定最优缓存节点;当缓存数据有副本时,用户的请求在缓存主体创建完成后即返回,再排除掉主体所在缓存节点,根据元数据中存储的缓存节点存储情况以及响应时间,逐一确定副本所在的最优缓存节点。为了解决以下技术问题,本专利技术还提供一种基于元数据管理的分布式缓存实现系统,包括用户、缓存客户端、至少包含一个缓存节点,所述缓存客户端,位于用户与缓存节点之间,用于接收用户请求,以及管理缓存节点的元数据信息;所述缓存节点,用于存取数据;用户访问缓存节点时,用户通过所述缓存客户端获取实际缓存节点元数据信息,根据元数据信息直接访问缓存节点存取数据。 进一步地,所述缓存客户端包括元数据管理模块、心跳服务模块、负载均衡模块,所述元数据管理模块,用于提供元数据支持,并对元数据进行管理;所述心跳服务模块,用于向缓存节点发送心跳消息,并记录存储其响应时间到元数据中;所述负载均衡模块,根据元数据中存储的缓存节点存储情况以及心跳服务模块提供的缓存节点响应时间,确定最优缓存节点,再从该最优缓存节点下载缓存数据。进一步地,所述缓存客户端还进一步包括副本管理模块,用于在某个缓存节点存在大并发用户访问时,对其缓存数据建立副本。进一步地,所述副本管理模块建立副本过程如下将缓存数据从主节点,按照负载均衡算法计算出一系列副本节点,以异步形式将缓存数据从主节点复制到多个副本节点上,同时将副本的位置信息记录到元数据中。进一步地,所述负载均衡模块确定出最优缓存节点的方法是当缓存数据没有副本时,根据元数据中存储的缓存节点存储情况以及响应时间,确定最优缓存节点;当缓存数据有副本时,用户的请求在缓存主体创建完成后即返回,再排除掉主体所在缓存节点,根据元数据中存储的缓存节点存储情况以及响应时间,逐一确定副本所在的最优缓存节点。进一步地,所述缓存客户端还进一步包括失效管理模块,用于在缓存数据失效时清理客户端的元数据。与现有技术相比,本专利技术提供一种基于元数据管理的分布式缓存实现方法及系统,采用元数据存储的方式实现Memcached客户端,提供细粒度的调度算法,精确控制缓存数据的分布,并可对缓存服务器的状态进行监控。支持通过缓存服务器响应时间、剩余空间等多个参数计算缓存分布。当用户访问缓存服务时,控制流与数据流分离,用户与客户端只交互元数据,实际缓存数据则是用户直接与缓存服务器交互,避免客户端成为IO瓶颈。此外,本专利技术采用缓存副本,副本在第一个缓存数据创建后,通过异步方式在多个节点间复制,多副本缓存可在用户并发访问时提供更高的性能,在缓存服务器数目有变化时,不会产生缓存重组现象,在缓存服务器集群中某些节点宕机时,用户可从副本节点获取缓存,不影响缓存命中率;在有用户并发访问的情况下,客户可将请求中转到多个副本服务器,减低单点并发所产生的IO瓶颈。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本专利技术的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中图I是本专利技术提供一种基于元数据管理的分布式缓存实现系统的结构示意图。图2是本专利技术提供一种基于元数据管理的分布式缓存客户端的结构示意图。图3是本专利技术提供一种基于元数据管理的分布式缓存实现方法的流程图。具体实施例方式为了使本专利技术所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。如图I所示,本专利技术提供一种基于元数据管理的分布式缓存实现系统,包括用户 10、缓存客户端20、至少包含一个缓存节点30,其中,缓存客户端20,位于用户10与缓存节点30之间,用于接收和中转用户10请求,并管理多个缓存节点30的元数据信息,实现分布式功能。缓存节点30,用于存取数据,以Memcached来实现。当用户10访问缓存节点30时,首先通过缓存客户端20获取实际缓存节点30的元数据信息,再根据元数据信息直接访问缓存节点30存取数据,实现控制流与数据流分离。如图2所示,本专利技术提供一种基于元数据管理的分布式缓存客户端,所述缓存客户端位于用户与缓存节点之间,用于接收和中转用户请求,并管理多个缓存节点的元数据信息,实现分布式功能,包括元数据管理模块21、心跳服务模块22、副本管理模块23、失效管理模块24、负载均衡模块25。元数据管理模块21 :用于提供元数据支持,对缓存元数据、副本元数据、缓存节点元数据进行管理。其中,缓存元数据包含缓存数据的key、大小、位置等信息。副本元数据包含缓存副本的主数据位置、副本分布位置等信息。缓存节点元数据包含缓存服务器的IP、存储空间、响应时间等信息。心跳服务模块22 :用于向缓存节点发送心跳消息,并记录存储其响应时间到缓存节点元数据中。如果某个缓存节点在多次心跳后均无响应,则认为此缓存节点失效,从缓存节点元数据中移除此缓存节点。副本管理模块23:用于在某个缓存节点存在大并发用户访问时,对其缓存数据建立副本,平衡用户的并发请求。建立过程是当缓存节点需要副本支持时,将缓存数据从主节点,按照负载均衡算法计算出本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种基于元数据管理的分布式缓存实现方法,其特征在于,包括 步骤I、用户通过缓存客户端获取实际缓存节点元数据信息; 步骤2、用户根据缓存客户端返回的元数据信息直接访问缓存节点存取数据。2.如权利要求I所述的方法,其特征在于,所述步骤I具体包括 步骤I. I、缓存客户端接收用户请求; 步骤I. 2、缓存客户端根据用户请求,获取实际缓存节点元数据信息; 步骤I. 3、缓存客户端将获取的缓存节点元数据信息返回给用户。3.如权利要求2所述的方法,其特征在于,所述步骤I.2具体包括缓存客户端根据用户请求,从存储的元数据中确定出最优缓存节点作为用户的实际缓存节点。4.如权利要求3所述的方法,其特征在于,所述确定最优缓存节点的具体方法如下 当缓存数据没有副本时,根据元数据中存储的缓存节点存储情况以及响应时间,确定最优缓存节点; 当缓存数据有副本时,用户的请求在缓存主体创建完成后即返回,再排除掉主体所在缓存节点,根据元数据中存储的缓存节点存储情况以及响应时间,逐一确定副本所在的最优缓存节点。5.一种基于元数据管理的分布式缓存实现系统,其特征在于,包括用户、缓存客户端、至少包含一个缓存节点, 所述缓存客户端,位于用户与缓存节点之间,用于接收用户请求,以及管理缓存节点的元数据信息; 所述缓存节点,用于存取数据; 用户访问缓存节点时,用户通过所述缓存客户端获取实际缓存节点元数据信息,根据元数据信息直接访问...

【专利技术属性】
技术研发人员:高正
申请(专利权)人:深圳市远行科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1