一种基于元数据管理的分布式缓存客户端的制作方法

文档序号:7854002阅读:152来源:国知局
专利名称:一种基于元数据管理的分布式缓存客户端的制作方法
技术领域
本发明涉及一种计算机领域,特别是涉及一种基于元数据管理的分布式缓存客户端。
背景技术
分布式,是指在核心系统外部,通过一个集群方式实现的某项功能。Memcached是目前使用范围最广泛的一个分布式缓存实现。Memcached尽管是“分布式”的缓存服务器,但服务器端并没有分布式功能。各个Memcached节点间不会互相通信以共享信息,对分布式的支持完全取决于客户端的实现。目前的Memcache客户端,一般通过资源池的方式实现分布式,资源调度算法主要 有“余数计算法”和“一致哈希计算法”,采用“余数计算法”的客户端,在缓存服务器数目有变化时,会引发大面积的缓存重组,严重影响缓存命中率。而“一致哈希计算法”的复杂度高于“余数计算法”,在缓存服务器数目变化时,影响面积小于“余数计算法”,但也同样会产生缓存重组,降低缓存命中率。另外,目前的Memcache客户端实现均不支持副本功能。所以,有必要提出一种新的技术,以解决在分布式缓存的环境中,当缓存节点(月艮务器)数目有变化,或者某些缓存节点失效的情况下,所引起的缓存重组、命中率大幅度降低,以及客户端实现均不支持副本功能的问题。

发明内容
本发明的目的在于提供一种基于元数据管理的分布式缓存客户端,采用元数据存储的方式实现Memcached客户端,可以解决在分布式缓存的环境中,当缓存节点数目有变化,或者某些缓存节点失效的情况下所引起的缓存重组、命中率大幅度降低,以及客户端不支持副本功能的问题。为了解决以下技术问题,本发明提供一种基于元数据管理的分布式缓存客户端,包括元数据管理模块、心跳服务模块、负载均衡模块,所述元数据管理模块,用于提供元数据支持,并对元数据进行管理;所述心跳服务模块,用于向缓存节点发送心跳消息,并记录存储其响应时间到元数据中;所述负载均衡模块,根据元数据中存储的缓存节点存储情况以及心跳服务模块提供的缓存节点响应时间,确定最优缓存节点,再从该最优缓存节点下载缓存数据。进一步地,所述心跳服务模块向缓存节点发送心跳消息,如果该缓存节点在多次心跳后均无响应,则认为该缓存节点失效,从缓存节点元数据中移除该缓存节点。进一步地,所述缓存客户端还进一步包括副本管理模块,用于在某个缓存节点存在大并发用户访问时,对其缓存数据建立副本。进一步地,所述副本管理模块建立副本过程如下将缓存数据从主节点,按照负载均衡算法计算出一系列副本节点,以异步形式将缓存数据从主节点复制到多个副本节点上,同时将副本的位置信息记录到元数据中。进一步地,所述负载均衡模块包括放置缓存子模块与下载缓存子模块,所述放置缓存子模块,用于从存储的元数据中确定出最优缓存节点;所述下载缓存子模块,用于从最优缓存节点的存储位置下载缓存数据。进一步地,所述放置缓存子模块确定出最优缓存节点的方法是当缓存数据没有副本时,根据元数据中存储的缓存节点存储情况以及响应时间,确定最优缓存节点;当缓存数据有副本时,用户的请求在缓存主体创建完成后即返回,再排除掉主体所在缓存节点,根据元数据中存储的缓存节点存储情况以及响应时间,逐一确定副本所在的最优缓存节点,副本数据的创建是以异步方式进行。进一步地,所述缓存客户端还进一步包括失效管理模块,用于在缓存数据失效时清理客户端的元数据。 进一步地,所述失效管理模块采用优先队列来记录所有缓存数据的失效时间信息,在失效时间到后,自动清理掉缓存数据。与现有技术相比,本发明提供一种基于元数据管理的分布式缓存客户端,采用元数据存储的方式实现Memcached客户端,提供细粒度的调度算法,精确控制缓存数据的分布,并可对缓存服务器的状态进行监控。支持通过缓存服务器响应时间、剩余空间等多个参数计算缓存分布。此外,本发明采用缓存副本,副本在第一个缓存数据创建后,通过异步方式在多个节点间复制,多副本缓存可在用户并发访问时提供更高的性能,在缓存服务器数目有变化时,不会产生缓存重组现象,在缓存服务器集群中某些节点宕机时,用户可从副本节点获取缓存,不影响缓存命中率;在有用户并发访问的情况下,客户可将请求中转到多个副本服务器,减低单点并发所产生的IO瓶颈。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图I是本发明提供一种基于元数据管理的分布式缓存实现系统的结构示意图。图2是本发明提供一种基于元数据管理的分布式缓存客户端的结构示意图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。如图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:用于在某个缓存节点存在大并发用户访问时,对其缓存数据建立副本,平衡用户的并发请求。建立过程是当缓存节点需要副本支持时,将缓存数据从主节点,按照负载均衡算法计算出一系列副本节点,并以异步形式将缓存数据从主节点复制到多个副本节点上,同时将副本的位置信息记录到缓存节点元数据中。这样,当某个缓存可能存在大并发的用户访问时,对其建立副本后,多个副本可平衡用户的并发请求,提高IO效率。失效管理模块24 :用于在缓存数据失效时同步清理客户端的元数据。缓存的一个特性就是“临时性”,用户在存放缓存数据时,需要确定其有效时间,有效时间过后,此缓存数据会被系统自动清理掉。失效管理模块采用一个优先队列来记录所有缓存数据的失效时间信息,并循环以下步骤来检测数据失效并清理I、根据缓存数据的失效时间,将其插入到优先队列的适当位置。可以按失效时间的升序或降序来排列。2、检测队列头的元素的有效时间是否超时。3、如果超时,则弹出队列头。4、获取队列头的元素的有效时间与当前时间的差值,按此差值休眠检测线程。负载均衡模块25 :根据缓存节点元数据中存储的各个缓存节点的存储情况以及心跳服务模块提供的缓存节点响应时间,确定出一个最优缓存节点,再从该最优缓存节点下载缓存数据。此负载均衡模块包括放置缓存子模块与下载缓存子模块。放置缓存子模块从存储的缓存节点元数据中确定出一个最优缓存节点;确定的具体方法是当缓存数据没有副本时,根据缓存节点元数据中存储的各个缓存节点的存储情况以及响应时间,确定出一个最优缓存节点;当缓存数据有副本时,用户的请求在缓存主体创建完成后即返回,再排除掉主体所在缓存节点,根据元数据中存储的缓存节点存储情况以及响应时间,逐一确定副本所在的最优缓存节点,副本数据的创建是以异步方式进行。下载缓存子模块从确定的最优缓存节点的存储位置下载缓存数据。本发明提供一种基于元数据管理的分布式缓存客户端,采用元数据存储的方式实现Memcached客户端,提供细粒度的调度算法,精确控制缓存数据的分布,并可对缓存服务器的状态进行监控。支持通过缓存服务器响应时间、剩余空间等多个参数计算缓存分布。此外,本发明采用缓存副本,副本在第一个缓存数据创建后,通过异步方式在多个节点间复制,多副本缓存可在用户并发访问时提供更高的性能,在缓存服务器数目有变化时,不会产生缓存重组现象,在缓存服务器集群中某些节点宕机时,用户可从副本节点获取缓存,不影响缓存命中率;在有用户并发访问的情况下,客户可将请求中转到多个副本服务器,减低单点并发所产生的IO瓶颈。 上述说明示出并描述了本发明的一个优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种基于元数据管理的分布式缓存客户端,其特征在于,包括元数据管理模块、心跳服务模块、负载均衡模块, 所述元数据管理模块,用于提供元数据支持,并对元数据进行管理; 所述心跳服务模块,用于向缓存节点发送心跳消息,并记录存储其响应时间到元数据中; 所述负载均衡模块,根据元数据中存储的缓存节点存储情况以及心跳服务模块提供的缓存节点响应时间,确定最优缓存节点,再从该最优缓存节点下载缓存数据。
2.如权利要求I所述的客户端,其特征在于,所述心跳服务模块向缓存节点发送心跳消息,如果该缓存节点在多次心跳后均无响应,则认为该缓存节点失效,从缓存节点元数据中移除该缓存节点。
3.如权利要求I所述的客户端,其特征在于,所述缓存客户端还进一步包括副本管理模块,用于在某个缓存节点存在大并发用户访问时,对其缓存数据建立副本。
4.如权利要求3所述的客户端,其特征在于,所述副本管理模块建立副本过程如下将缓存数据从主节点,按照负载均衡算法计算出一系列副本节点,以异步形式将缓存数据从主节点复制到多个副本节点上,同时将副本的位置信息记录到元数据中。
5.如权利要求I所述的客户端,其特征在于,所述负载均衡模块包括放置缓存子模块与下载缓存子模块, 所述放置缓存子模块,用于从存储的元数据中确定出最优缓存节点; 所述下载缓存子模块,用于从最优缓存节点的存储位置下载缓存数据。
6.如权利要求5所述的客户端,其特征在于,所述放置缓存子模块确定出最优缓存节点的方法是当缓存数据没有副本时,根据元数据中存储的缓存节点存储情况以及响应时间,确定最优缓存节点;当缓存数据有副本时,用户的请求在缓存主体创建完成后即返回,再排除掉主体所在缓存节点,根据元数据中存储的缓存节点存储情况以及响应时间,逐一确定副本所在的最优缓存节点。
7.如权利要求I所述的客户端,其特征在于,所述缓存客户端还进一步包括失效管理模块,用于在缓存数据失效时清理客户端的元数据。
8.如权利要求7所述的客户端,其特征在于,所述失效管理模块采用优先队列来记录所有缓存数据的失效时间信息,在失效时间到后,自动清理掉缓存数据。
全文摘要
本发明提供一种基于元数据管理的分布式缓存客户端,包括元数据管理模块、心跳服务模块、负载均衡模块,所述元数据管理模块,用于提供元数据支持,并对元数据进行管理;所述心跳服务模块,用于向缓存节点发送心跳消息,并记录存储其响应时间到元数据中;所述负载均衡模块,根据元数据中存储的缓存节点存储情况以及心跳服务模块提供的缓存节点响应时间,确定最优缓存节点,再从该最优缓存节点下载缓存数据。通过本发明提供一种基于元数据管理的分布式缓存实现方法及系统,可以解决在分布式缓存的环境中,当缓存节点数目有变化,或者某些缓存节点失效的情况下所引起的缓存重组、命中率大幅度降低,以及客户端不支持副本功能的问题。
文档编号H04L29/08GK102724314SQ20121020526
公开日2012年10月10日 申请日期2012年6月20日 优先权日2012年6月20日
发明者高正 申请人:深圳市远行科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1