CN102833352A - 分布式缓存管理***和实现分布式缓存管理的方法 - Google Patents
分布式缓存管理***和实现分布式缓存管理的方法 Download PDFInfo
- Publication number
- CN102833352A CN102833352A CN2012103456229A CN201210345622A CN102833352A CN 102833352 A CN102833352 A CN 102833352A CN 2012103456229 A CN2012103456229 A CN 2012103456229A CN 201210345622 A CN201210345622 A CN 201210345622A CN 102833352 A CN102833352 A CN 102833352A
- Authority
- CN
- China
- Prior art keywords
- server
- index
- data
- distributed
- request
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供了一种分布式缓存管理***,包括索引服务器和分布式内存对象缓存服务器,其中,所述索引服务器包括:索引建立单元,用于根据接收到的数据缓存请求,将对应的数据存储至分布式内存对象缓存服务器中,并为缓存的数据建立索引;数据获取单元,用于根据接收到的数据获取请求,获取对应的索引,并利用该索引从所述分布式内存对象缓存服务器中获取对应的数据。本发明还提供了一种实现分布式缓存管理的方法。通过本发明的技术方案,可以对分布式内存对象缓存服务器中的数据进行有效管理,提高请求响应和数据处理的效率。
Description
技术领域
本发明涉及分布式缓存管理技术领域,具体而言,涉及一种分布式缓存管理***和一种实现分布式缓存管理的方法。
背景技术
在B2C电商实践中,为了改善用户浏览图片的速度,但同时减少图片存储服务器的访问压力,采用了Memcached(分布式内存对象缓存服务器)实现cache(高速缓冲存储器)集群,达到分担来自前端的请求。在运营的过程中,随着Memcached中实例的不断增加,开始出现以下问题:
1.n台分布的Memcached做实际数据的存储,每台Memcached存放数据总量的一个子集(分布算法:Key映射整数值,再根据已有server数取模),随着Memcached实例数量的增加,管理、维护的难度也相应增加;
2.新增x台Memcached进行扩容,已有数据需要作大规模迁移,且同时一定时间内cache命中较低;
3.如有Memcached服务异常退出,如不能迅速拉起,会影响前端访问的体验,或者可能导致数据分布的重计算,使得Memcached的SLA(Service-Level Agreement,服务等级协议)级别较低;
4.因为缺乏统一分配、管理机制,可能会存在数据在多个Memcached存在实例的情况,导致数据不一致或不同版本数据冲突的情况。
因此,需要一种新的分布式缓存管理技术,可以对分布式内存对象缓存服务器中的数据进行有效管理,提高请求响应和数据处理的效率。
发明内容
本发明正是基于上述问题,提出了一种新的分布式缓存管理技术,可以对分布式内存对象缓存服务器中的数据进行有效管理,提高请求响应和数据处理的效率。
有鉴于此,本发明提出了一种分布式缓存管理***,包括索引服务器和分布式内存对象缓存服务器,其中,所述索引服务器包括:索引建立单元,用于根据接收到的数据缓存请求,将对应的数据存储至分布式内存对象缓存服务器中,并为缓存的数据建立索引;数据获取单元,用于根据接收到的数据获取请求,获取对应的索引,并利用该索引从所述分布式内存对象缓存服务器中获取对应的数据。
在该技术方案中,在分布式内存对象缓存服务器的前端设置索引服务器,通过为缓存的数据建立索引,当用户希望获取某个数据时,能够由索引服务器根据索引及时准确地查找到该数据,在缓存的数据量较大时,依然能够对每个数据进行有效管理,并提高数据查找效率。在由多台分布式内存对象缓存服务器构成服务器集群时,其中的部分服务器出现问题时,不会对其他的服务器造成影响,使得整个***保持高可用性。
在上述技术方案中,优选地,所述索引服务器还包括:数据判断单元,用于根据需要缓存的数据的关键字以及已建立的索引,判断是否存在相同的已缓存数据,若存在,则进一步判断所述需要缓存的数据的版本号是否高于所述已缓存数据的版本号;数据替换单元,用于在所述需要缓存的数据的版本号高于所述已缓存数据的版本号的情况下,将所述需要缓存的数据替换所述已缓存数据,否则拒绝所述数据缓存请求。
在该技术方案中,通过对数据版本号的比较,实现对于数据的更新,并避免出现低版本的数据对高版本数据的覆盖。
在上述任一技术方案中,优选地,所述索引服务器还包括:时间记录单元,用于记录建立索引的时间;以及存储控制单元,用于在所述分布式内存对象缓存服务器中的已使用内存容量大于或等于预设的容量阈值的情况下,利用新建立的索引及对应的数据替换建立时间最早的已建立索引及对应的数据。
在该技术方案中,对于已使用内存容量不足的情况下,根据建立时间进行新老替换,从而可以比较好地处理索引数量的不断增加与有限的内存容量之间的供需矛盾。
在上述任一技术方案中,优选地,所述分布式内存对象缓存服务器的数量为多个,则所述索引服务器还包括:位置确定单元,用于根据所述分布式内存对象缓存服务器的实时状态,确定需要缓存的数据的存储位置,其中,所述实时状态包括以下至少之一或其组合:所述分布式内存对象缓存服务器的个数、容量、内存空闲程度。
在该技术方案中,不再按照Key取模的方式进行处理,从而实现更好的负载均衡分配。
在上述任一技术方案中,优选地,通过多台索引服务器实现对所述分布式内存对象缓存服务器的管理,其中,所述多台索引服务器包括主服务器和从服务器:在所述主服务器正常工作的情况下,所述主服务器实现对所述数据缓存请求和所述数据获取请求的响应,所述从服务器实现对所述主服务器的热备;在所述主服务器出现故障的情况下,由所述从服务器实现对所述数据缓存请求和所述数据获取请求的响应;以及在所述主服务器恢复正常的情况下,从指定的索引服务器上获取最新索引状态信息,以获取对所述数据缓存请求和所述数据获取请求的响应。
在该技术方案中,通过设置主从式的索引服务器集群,从而在主服务器出现问题时,可以由从服务器进行顶替;而主服务器在恢复正常后,也能够及时通过对最新索引状态信息的获取,最快地重新恢复工作,把对***运行和用户体验的影响降至最小。
根据本发明的又一方面,还提出了一种实现分布式缓存管理的方法,包括:步骤202,根据接收到的数据缓存请求,将对应的数据存储至分布式内存对象缓存服务器中,并为缓存的数据建立索引;步骤204,根据接收到的数据获取请求,获取对应的索引,并利用该索引从所述分布式内存对象缓存服务器中获取对应的数据。
在该技术方案中,在分布式内存对象缓存服务器的前端设置索引服务器,通过为缓存的数据建立索引,当用户希望获取某个数据时,能够由索引服务器根据索引及时准确地查找到该数据,在缓存的数据量较大时,依然能够对每个数据进行有效管理,并提高数据查找效率。在由多台分布式内存对象缓存服务器构成服务器集群时,其中的部分服务器出现问题时,不会对其他的服务器造成影响,使得整个***保持高可用性。
在上述技术方案中,优选地,所述步骤202还包括:根据需要缓存的数据的关键字以及已建立的索引,判断是否存在相同的已缓存数据,若存在,则当所述需要缓存的数据的版本号高于所述已缓存数据的版本号时,将所述需要缓存的数据替换所述已缓存数据,否则拒绝所述数据缓存请求。
在该技术方案中,通过对数据版本号的比较,实现对于数据的更新,并避免出现低版本的数据对高版本数据的覆盖。
在上述任一技术方案中,优选地,所述步骤202还包括:记录建立索引的时间;以及在所述分布式内存对象缓存服务器中的已使用内存容量大于或等于预设的容量阈值时,利用新建立的索引及对应的数据替换建立时间最早的已建立索引及对应的数据。
在该技术方案中,对于已使用内存容量不足的情况下,根据建立时间进行新老替换,从而可以比较好地处理索引数量的不断增加与有限的内存容量之间的供需矛盾。
在上述任一技术方案中,优选地,所述分布式内存对象缓存服务器的数量为多个,则根据所述分布式内存对象缓存服务器的实时状态,确定需要缓存的数据的存储位置,其中,所述实时状态包括以下至少之一或其组合:所述分布式内存对象缓存服务器的个数、容量、内存空闲程度。
在该技术方案中,不再按照Key取模的方式进行处理,从而实现更好的负载均衡分配。
在上述任一技术方案中,优选地,通过多台索引服务器实现对所述分布式内存对象缓存服务器的管理,其中,所述多台索引服务器包括主服务器和从服务器:当所述主服务器正常工作时,所述主服务器实现对所述数据缓存请求和所述数据获取请求的响应,所述从服务器实现对所述主服务器的热备;当所述主服务器出现故障时,由所述从服务器实现对所述数据缓存请求和所述数据获取请求的响应;以及当所述主服务器恢复正常时,从指定的索引服务器上获取最新索引状态信息,以获取对所述数据缓存请求和所述数据获取请求的响应。
在该技术方案中,通过设置主从式的索引服务器集群,从而在主服务器出现问题时,可以由从服务器进行顶替;而主服务器在恢复正常后,也能够及时通过对最新索引状态信息的获取,最快地重新恢复工作,把对***运行和用户体验的影响降至最小。
通过以上技术方案,可以对分布式内存对象缓存服务器中的数据进行有效管理,提高请求响应和数据处理的效率。
附图说明
图1A和图1B示出了根据本发明的实施例的分布式缓存管理***的框图;
图2示出了根据本发明的实施例的实现分布式缓存管理的方法的流程图;
图3示出了根据本发明的实施例的分布式缓存管理***的结构示意图;
图4A示出了根据本发明的实施例的主索引服务器的索引服务的运行时的示意图;
图4B示出了根据本发明的实施例的从索引服务器的索引服务的运行时的示意图;
图5A示出了根据本发明的实施例的建立索引的流程示意图;
图5B示出了根据本发明的实施例的读取数据的流程示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1A和图1B示出了根据本发明的实施例的分布式缓存管理***的框图。
如图1A所示,根据本发明的实施例的分布式缓存管理***100,包括索引服务器100A和分布式内存对象缓存服务器100B,其中,所述索引服务器100A包括:索引建立单元102,用于根据接收到的数据缓存请求,将对应的数据存储至分布式内存对象缓存服务器100B中,并为缓存的数据建立索引;数据获取单元104,用于根据接收到的数据获取请求,获取对应的索引,并利用该索引从所述分布式内存对象缓存服务器100B中获取对应的数据。
在该技术方案中,在分布式内存对象缓存服务器100B的前端设置索引服务器100A,通过为缓存的数据建立索引,当用户希望获取某个数据时,能够由索引服务器100A根据索引及时准确地查找到该数据,在缓存的数据量较大时,依然能够对每个数据进行有效管理,并提高数据查找效率。在由多台分布式内存对象缓存服务器100B构成服务器集群时,其中的部分服务器出现问题时,不会对其他的服务器造成影响,使得整个***保持高可用性。
在上述技术方案中,优选地,所述索引服务器100A还包括:数据判断单元106,用于根据需要缓存的数据的关键字以及已建立的索引,判断是否存在相同的已缓存数据,若存在,则进一步判断所述需要缓存的数据的版本号是否高于所述已缓存数据的版本号;数据替换单元108,用于在所述需要缓存的数据的版本号高于所述已缓存数据的版本号的情况下,将所述需要缓存的数据替换所述已缓存数据,否则拒绝所述数据缓存请求。
在该技术方案中,通过对数据版本号的比较,实现对于数据的更新,并避免出现低版本的数据对高版本数据的覆盖。
在上述任一技术方案中,优选地,所述索引服务器100A还包括:时间记录单元110,用于记录建立索引的时间;以及存储控制单元112,用于在所述分布式内存对象缓存服务器100B中的已使用内存容量大于或等于预设的容量阈值的情况下,利用新建立的索引及对应的数据替换建立时间最早的已建立索引及对应的数据。
在该技术方案中,对于已使用内存容量不足的情况下,根据建立时间进行新老替换,从而可以比较好地处理索引数量的不断增加与有限的内存容量之间的供需矛盾。
如图1B所示,优选地,所述分布式内存对象缓存服务器100B的数量为多个,则所述索引服务器100A包含除了图1A中所示的各单元外,还包括:位置确定单元114,用于根据所述分布式内存对象缓存服务器100B的实时状态,确定需要缓存的数据的存储位置,其中,所述实时状态包括以下至少之一或其组合:所述分布式内存对象缓存服务器100B的个数、容量、内存空闲程度。
在该技术方案中,不再按照Key取模的方式进行处理,从而实现更好的负载均衡分配。
在上述技术方案中,优选地,通过多台索引服务器100A实现对所述分布式内存对象缓存服务器100B的管理,其中,所述多台索引服务器100A包括主服务器和从服务器:在所述主服务器正常工作的情况下,所述主服务器实现对所述数据缓存请求和所述数据获取请求的响应,所述从服务器实现对所述主服务器的热备;在所述主服务器出现故障的情况下,由所述从服务器实现对所述数据缓存请求和所述数据获取请求的响应;以及在所述主服务器恢复正常的情况下,从指定的索引服务器100A上获取最新索引状态信息,以获取对所述数据缓存请求和所述数据获取请求的响应。
在该技术方案中,通过设置主从式的索引服务器集群,从而在主服务器出现问题时,可以由从服务器进行顶替;而主服务器在恢复正常后,也能够及时通过对最新索引状态信息的获取,最快地重新恢复工作,把对***运行和用户体验的影响降至最小。
图2示出了根据本发明的实施例的实现分布式缓存管理的方法的流程图。
如图2所示,根据本发明的实施例的实现分布式缓存管理的方法,包括:步骤202,根据接收到的数据缓存请求,将对应的数据存储至分布式内存对象缓存服务器中,并为缓存的数据建立索引;步骤204,根据接收到的数据获取请求,获取对应的索引,并利用该索引从所述分布式内存对象缓存服务器中获取对应的数据。
在该技术方案中,在分布式内存对象缓存服务器的前端设置索引服务器,通过为缓存的数据建立索引,当用户希望获取某个数据时,能够由索引服务器根据索引及时准确地查找到该数据,在缓存的数据量较大时,依然能够对每个数据进行有效管理,并提高数据查找效率。在由多台分布式内存对象缓存服务器构成服务器集群时,其中的部分服务器出现问题时,不会对其他的服务器造成影响,使得整个***保持高可用性。
在上述技术方案中,优选地,所述步骤202还包括:根据需要缓存的数据的关键字以及已建立的索引,判断是否存在相同的已缓存数据,若存在,则当所述需要缓存的数据的版本号高于所述已缓存数据的版本号时,将所述需要缓存的数据替换所述已缓存数据,否则拒绝所述数据缓存请求。
在该技术方案中,通过对数据版本号的比较,实现对于数据的更新,并避免出现低版本的数据对高版本数据的覆盖。
在上述任一技术方案中,优选地,所述步骤202还包括:记录建立索引的时间;以及在所述分布式内存对象缓存服务器中的已使用内存容量大于或等于预设的容量阈值时,利用新建立的索引及对应的数据替换建立时间最早的已建立索引及对应的数据。
在该技术方案中,对于已使用内存容量不足的情况下,根据建立时间进行新老替换,从而可以比较好地处理索引数量的不断增加与有限的内存容量之间的供需矛盾。
在上述任一技术方案中,优选地,所述分布式内存对象缓存服务器的数量为多个,则根据所述分布式内存对象缓存服务器的实时状态,确定需要缓存的数据的存储位置,其中,所述实时状态包括以下至少之一或其组合:所述分布式内存对象缓存服务器的个数、容量、内存空闲程度。
在该技术方案中,不再按照Key取模的方式进行处理,从而实现更好的负载均衡分配。
在上述任一技术方案中,优选地,通过多台索引服务器实现对所述分布式内存对象缓存服务器的管理,其中,所述多台索引服务器包括主服务器和从服务器:当所述主服务器正常工作时,所述主服务器实现对所述数据缓存请求和所述数据获取请求的响应,所述从服务器实现对所述主服务器的热备;当所述主服务器出现故障时,由所述从服务器实现对所述数据缓存请求和所述数据获取请求的响应;以及当所述主服务器恢复正常时,从指定的索引服务器上获取最新索引状态信息,以获取对所述数据缓存请求和所述数据获取请求的响应。
在该技术方案中,通过设置主从式的索引服务器集群,从而在主服务器出现问题时,可以由从服务器进行顶替;而主服务器在恢复正常后,也能够及时通过对最新索引状态信息的获取,最快地重新恢复工作,把对***运行和用户体验的影响降至最小。
图3示出了根据本发明的实施例的分布式缓存管理***的结构示意图。
如图3所示,分布式缓存管理***包括索引服务器和Memcached100B,其中,索引服务器包括主索引服务器100A1和从索引服务器100A2。应用服务器300通过主索引服务器100A1进行数据的Set(缓存并建立对应的索引)/Get(读取),并由主索引服务器100A1对Memcached100B进行访问,而应用服务器300自身并不直接对Memcached100B进行访问。
索引服务器以Memcached100B缓存索引数据,将来自应用服务器300的数据分配到具体的Memcached100B位置,并记录对应的索引信息。索引服务器以FIFO(First Input First Output,先入先出队列)方式进行淘汰,并作为应用服务器300和Memcached100B之间的Proxy(代理服务器)角色进行数据的传输。
可将多个索引服务器配置在一起构成一个索引集群。如该图所示,在同一个索引集群中,索引信息在各个索引服务器之前互为拷贝,保证索引表的一致性,这一特性使用索引集群具有高可用性。
具体地,索引集群中的索引服务器分为主索引服务器100A1和从索引服务器100A2,其中,从索引服务器100A2不进行实际的Set/Get操作,只是对主索引服务器100A1的一份热备。当主索引服务器100A1出现异常时,从索引服务器100A2可承担处理应用的请求,而原来已经异常的主索引服务器100A1变为从,把对应用产生的影响降至最小。主索引服务器100A1出现异常时,通过配置中心进行服务路由切换,那么从索引服务器100A2将由从变为主,所有的Set/Get请求落在该从索引服务器100A2上,待故障的主索引服务器100A1恢复并重新启动时,会向集群中指定IP的索引服务器请求当前最新的状态信息,这些信息包括:Memcached服务列表信息、索引数据的全量信息等,从而重新由从变回主,对数据进行处理。
索引服务器后端的Memcached100B构成实际的存储信息集群,每个Memcached100B保存一部分数据,索引服务器对已有的存储资源进行分配,并实时地将索引信息同步到索引集群中的其他索引服务器上去。
在Memcached100B中,数据的实际存储位置的分配,不再按照Key取模的方式,而是根据后端Memcached100B的个数及容量、内存空闲程度等进行负载均衡分配。当对Memcached100B进行扩容时,不会对已存储的信息造成影响,也不存在扩容时的数据迁移问题,因为所有的数据都已经通过索引建立了具体的对应关系,只需要对之后继续缓存的数据继续建立索引即可;同时,单个或部分Memcached100B的失效也不会影响到整个Memcached群集的可用性。
在建立索引的过程中,对于同一索引Key的数据,根据已缓存的数据和待缓存的数据的版本号进行区分,从而避免了低版本数据覆盖高版本数据的问题。
通过上述分布式缓存管理***及相应的处理过程,使得Memcached实例的SLA级别相比于不使用索引时得到较大的提升。
对于图3所示的分布式缓存管理***,其具体的框架及运行时的情况,下面结合图4A和图4B进行说明,其中,图4A示出了根据本发明的实施例的主索引服务器的索引服务的运行时的示意图;图4B示出了根据本发明的实施例的从索引服务器的索引服务的运行时的示意图。
如图4A和图4B所示,索引服务器主要包括配置代理模块(Config-agent)、本地索引控制器(Loc Index Controller)、数据传输装置(Reactor NetIO)、通信管理线程(JgroupsMsg Manager Thread)、工作池(WorkersPool)分发器、Worker线程等实现索引建立、数据获取等功能,其中:
本地索引控制器中还设置有定时器模块(Timer-Module)和Memcached列表(Memcached List),配置代理模块与定时器模块之间实现JAVA本地调用(jni,Java Native Interface),而定时器模块与Memcached列表实现数据传输。
数据传输装置中包含有请求单元(request)和响应单元(response)。
通信管理线程与应用服务器通过多播信息(多播Pkg)实现数据交互。
Worker线程包括队列、索引图(Index Map)、Memcached连接池(Memcached con pool),每个Worker线程分别与Memcached集群连接,实现数据交互。
如图4A所示,在建立索引的过程中,主要包括以下步骤:
1、请求单元将请求发送至工作池分发器。
2、工作池分发器根据请求中的Key取Worker线程数模进行分发。
3、Worker线程处理完成后返回数据包。
如图4B所示,在读取数据的过程中,主要包括以下步骤:
1、通过通信管理线程接收到应用服务器发送的多播信息。
2、通信管理线程将多播信息发送至工作池分发器。
3、工作池分发器将消息分给具体的Worker线程进行处理。
对于图4A和图4B对应的具体的建立索引和读取数据的流程,下面结合图5A和图5B进行详细说明,其中,图5A示出了根据本发明的实施例的建立索引的流程示意图;图5B示出了根据本发明的实施例的读取数据的流程示意图。
如图5A所示,建立索引的流程包括:
1.使用者发出的设置(Set)请求通过前端的应用服务器发送至数据传输装置。
2.数据传输装置读取请求包,并判断请求包是否已经读取完整。
3.若请求包读取完整,则数据传输装置将请求包发送至工作池。
4.由工作池分发器选择一个Worker线程,将请求包放入该线程对应的缓存队列,并唤醒该Woker线程进行处理。
5.Worker处理线程判断当前Set数据是否有效,并判断Key是否已经存在Index记录,且版本信息高于当前请求值,若是,需拒绝当前Set请求。否则,从目前有效的Memcached中,随机选择一个作为存储入口(根据Memcached容量信息来随机选择,可以设置为大容量Memcached具有大的当选概率)。
6.通过上述存储入口,将对应的数据缓存至Memcached,其中,如果当前选择中Memcached的已使用内存容量大于预设阈值(比如接近最大值),那么从索引map中找到最老节点(距离当前时间最长),并使用新的数据替换之。这样就可以比较好的处理索引不断增多和有限的内存容量之间的供需矛盾。
7.Woker线程将Index更新信息保存在Jgroups通知缓存队列中。
8.待Jgroups-msg-snder(通信线程)发送更新消息,通知到索引集群内其他索引服务器。
Worker处理线程根据获取到的Memcached入口信息,获取到此Memcached的长连接,保存应用应用数据。若保存失败,需删除相应Index信息。
9.Worker处理线程拼装Set响应信息,通过NetIO.RespDispatcher找到对应的前端应用连接入口,将响应包缓存到响应缓存队列。
10.数据传输装置将响应包发送至应用前端。
如图5B所示,读取数据的流程包括:
1.使用者发出的设置(Get)请求通过前端的应用服务器发送至数据传输装置。
2.数据传输装置读取请求包,并判断请求包是否已经读取完整。
3.若请求包读取完整,则数据传输装置发送至工作池。
4.由工作池分发器选择一个Worker线程,将请求包放入该线程对应的缓存队列,并唤醒该Woker线程进行处理。
5.Worker处理线程首先判断Key是否在本地索引表中存在记录,若无则直接通知前端应用Get失败。另外,还可以判断索引是否已经超时,或对应的后端Memcached是否当前有效。
6.Worker处理线程根据获取到的Memcached入口信息,获取到此Memcached的长连接,查询应用应用数据。若查询失败,需删除相应Index信息。
7.Worker处理线程拼装Get响应信息,通过Netio.RespDispatcher找到对应的前端应用连接入口,将响应包缓存到响应缓存队列。
8.数据传输装置将响应包发送至应用前端。
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中无法很好地对分布式内存对象进行有效管理,因此,本发明提供了一种分布式缓存管理***和一种实现分布式缓存管理的方法,可以对分布式内存对象缓存服务器中的数据进行有效管理,提高请求响应和数据处理的效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种分布式缓存管理***,其特征在于,包括索引服务器和分布式内存对象缓存服务器,其中,
所述索引服务器包括:
索引建立单元,用于根据接收到的数据缓存请求,将对应的数据存储至分布式内存对象缓存服务器中,并为缓存的数据建立索引;
数据获取单元,用于根据接收到的数据获取请求,获取对应的索引,并利用该索引从所述分布式内存对象缓存服务器中获取对应的数据。
2.根据权利要求1所述的分布式缓存管理***,其特征在于,所述索引服务器还包括:
数据判断单元,用于根据需要缓存的数据的关键字以及已建立的索引,判断是否存在相同的已缓存数据,若存在,则进一步判断所述需要缓存的数据的版本号是否高于所述已缓存数据的版本号;
数据替换单元,用于在所述需要缓存的数据的版本号高于所述已缓存数据的版本号的情况下,将所述需要缓存的数据替换所述已缓存数据,否则拒绝所述数据缓存请求。
3.根据权利要求1所述的分布式缓存管理***,其特征在于,所述索引服务器还包括:
时间记录单元,用于记录建立索引的时间;以及
存储控制单元,用于在所述分布式内存对象缓存服务器中的已使用内存容量大于或等于预设的容量阈值的情况下,利用新建立的索引及对应的数据替换建立时间最早的已建立索引及对应的数据。
4.根据权利要求1至3中任一项所述的分布式缓存管理***,其特征在于,所述分布式内存对象缓存服务器的数量为多个,则所述索引服务器还包括:
位置确定单元,用于根据所述分布式内存对象缓存服务器的实时状态,确定需要缓存的数据的存储位置,其中,所述实时状态包括以下至少之一或其组合:
所述分布式内存对象缓存服务器的个数、容量、内存空闲程度。
5.根据权利要求1至3中任一项所述的分布式缓存管理***,其特征在于,通过多台索引服务器实现对所述分布式内存对象缓存服务器的管理,其中,所述多台索引服务器包括主服务器和从服务器:
在所述主服务器正常工作的情况下,所述主服务器实现对所述数据缓存请求和所述数据获取请求的响应,所述从服务器实现对所述主服务器的热备;
在所述主服务器出现故障的情况下,由所述从服务器实现对所述数据缓存请求和所述数据获取请求的响应;以及
在所述主服务器恢复正常的情况下,从指定的索引服务器上获取最新索引状态信息,以获取对所述数据缓存请求和所述数据获取请求的响应。
6.一种实现分布式缓存管理的方法,其特征在于,包括:
步骤202,根据接收到的数据缓存请求,将对应的数据存储至分布式内存对象缓存服务器中,并为缓存的数据建立索引;
步骤204,根据接收到的数据获取请求,获取对应的索引,并利用该索引从所述分布式内存对象缓存服务器中获取对应的数据。
7.根据权利要求6所述的实现分布式缓存管理的方法,其特征在于,所述步骤202还包括:
根据需要缓存的数据的关键字以及已建立的索引,判断是否存在相同的已缓存数据,若存在,则当所述需要缓存的数据的版本号高于所述已缓存数据的版本号时,将所述需要缓存的数据替换所述已缓存数据,否则拒绝所述数据缓存请求。
8.根据权利要求6所述的实现分布式缓存管理的方法,其特征在于,所述步骤202还包括:
记录建立索引的时间;以及
在所述分布式内存对象缓存服务器中的已使用内存容量大于或等于预设的容量阈值时,利用新建立的索引及对应的数据替换建立时间最早的已建立索引及对应的数据。
9.根据权利要求6至8中任一项所述的实现分布式缓存管理的方法,其特征在于,所述分布式内存对象缓存服务器的数量为多个,则根据所述分布式内存对象缓存服务器的实时状态,确定需要缓存的数据的存储位置,其中,所述实时状态包括以下至少之一或其组合:
所述分布式内存对象缓存服务器的个数、容量、内存空闲程度。
10.根据权利要求6至8中任一项所述的实现分布式缓存管理的方法,其特征在于,通过多台索引服务器实现对所述分布式内存对象缓存服务器的管理,其中,所述多台索引服务器包括主服务器和从服务器:
当所述主服务器正常工作时,所述主服务器实现对所述数据缓存请求和所述数据获取请求的响应,所述从服务器实现对所述主服务器的热备;
当所述主服务器出现故障时,由所述从服务器实现对所述数据缓存请求和所述数据获取请求的响应;以及
当所述主服务器恢复正常时,从指定的索引服务器上获取最新索引状态信息,以获取对所述数据缓存请求和所述数据获取请求的响应。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103456229A CN102833352A (zh) | 2012-09-17 | 2012-09-17 | 分布式缓存管理***和实现分布式缓存管理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012103456229A CN102833352A (zh) | 2012-09-17 | 2012-09-17 | 分布式缓存管理***和实现分布式缓存管理的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102833352A true CN102833352A (zh) | 2012-12-19 |
Family
ID=47336319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012103456229A Pending CN102833352A (zh) | 2012-09-17 | 2012-09-17 | 分布式缓存管理***和实现分布式缓存管理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102833352A (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104539583A (zh) * | 2014-12-05 | 2015-04-22 | 浙江浙大中控信息技术有限公司 | 一种实时数据库订阅***及方法 |
CN104883381A (zh) * | 2014-05-27 | 2015-09-02 | 陈杰 | 分布式存储的数据存取方法及*** |
CN105516284A (zh) * | 2015-12-01 | 2016-04-20 | 深圳市华讯方舟软件技术有限公司 | 一种集群数据库分布式存储的方法和装置 |
CN105554121A (zh) * | 2015-12-18 | 2016-05-04 | 深圳中兴网信科技有限公司 | 实现分布式缓存***负载均衡的方法及*** |
CN105701219A (zh) * | 2016-01-14 | 2016-06-22 | 北京邮电大学 | 一种分布式缓存的实现方法 |
CN106021484A (zh) * | 2016-05-18 | 2016-10-12 | 中国电子科技集团公司第三十二研究所 | 基于内存计算的可定制多模式大数据处理*** |
CN106095832A (zh) * | 2016-06-01 | 2016-11-09 | 东软集团股份有限公司 | 分布式并行数据处理方法以及装置 |
CN103714144B (zh) * | 2013-12-25 | 2017-05-10 | 新华三技术有限公司 | 一种信息检索装置和方法 |
CN106790422A (zh) * | 2016-12-02 | 2017-05-31 | 北京锐安科技有限公司 | 一种用于web应用的数据缓存集群和数据检索方法 |
CN107463567A (zh) * | 2016-06-02 | 2017-12-12 | 广州市动景计算机科技有限公司 | 数据缓存加载方法和装置以及便携式终端设备 |
CN107506396A (zh) * | 2017-07-31 | 2017-12-22 | 努比亚技术有限公司 | 一种数据缓存初始化方法、移动终端以及计算机可读存储介质 |
CN108121776A (zh) * | 2017-12-13 | 2018-06-05 | 深圳市智物联网络有限公司 | 一种数据读取方法及装置 |
CN109189554A (zh) * | 2018-08-20 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种虚拟机整机热迁移的方法及装置 |
CN109254981A (zh) * | 2018-08-27 | 2019-01-22 | 阿里巴巴集团控股有限公司 | 一种分布式缓存***的数据管理方法和装置 |
CN109933288A (zh) * | 2019-03-11 | 2019-06-25 | 北京安信易德科技有限公司 | 走时表分布式存储方法及装置 |
CN111935490A (zh) * | 2019-05-13 | 2020-11-13 | 深圳市茁壮网络股份有限公司 | 一种直播录流容灾处理方法及*** |
CN112068963A (zh) * | 2020-09-15 | 2020-12-11 | 中国科学技术大学 | 一种嵌入式***分布式调度*** |
CN112988078A (zh) * | 2021-04-27 | 2021-06-18 | 山东英信计算机技术有限公司 | 一种分布式存储应用中缓存内存占用的管理方法及装置 |
CN114896344A (zh) * | 2022-05-26 | 2022-08-12 | 上海聚水潭网络科技有限公司 | 一种分布式内存缓存的数据同步方法及*** |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651628A (zh) * | 2009-09-17 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种三状态内容可寻址存储器实现方法及装置 |
CN101969465A (zh) * | 2010-10-13 | 2011-02-09 | 北京神州融信信息技术股份有限公司 | 集群读写方法、装置、***及控制器 |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN102420867A (zh) * | 2011-12-01 | 2012-04-18 | 浪潮电子信息产业股份有限公司 | 一种基于实时负载均衡机制的集群存储入口解析方法 |
CN102662699A (zh) * | 2012-03-27 | 2012-09-12 | 惠州Tcl移动通信有限公司 | 一种更新移动终端nfc固件的方法及其移动终端 |
-
2012
- 2012-09-17 CN CN2012103456229A patent/CN102833352A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101651628A (zh) * | 2009-09-17 | 2010-02-17 | 杭州华三通信技术有限公司 | 一种三状态内容可寻址存储器实现方法及装置 |
CN102375853A (zh) * | 2010-08-24 | 2012-03-14 | ***通信集团公司 | 分布式数据库***、在其中建立索引的方法和查询方法 |
CN101969465A (zh) * | 2010-10-13 | 2011-02-09 | 北京神州融信信息技术股份有限公司 | 集群读写方法、装置、***及控制器 |
CN102420867A (zh) * | 2011-12-01 | 2012-04-18 | 浪潮电子信息产业股份有限公司 | 一种基于实时负载均衡机制的集群存储入口解析方法 |
CN102662699A (zh) * | 2012-03-27 | 2012-09-12 | 惠州Tcl移动通信有限公司 | 一种更新移动终端nfc固件的方法及其移动终端 |
Cited By (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103714144B (zh) * | 2013-12-25 | 2017-05-10 | 新华三技术有限公司 | 一种信息检索装置和方法 |
CN104883381A (zh) * | 2014-05-27 | 2015-09-02 | 陈杰 | 分布式存储的数据存取方法及*** |
CN104539583B (zh) * | 2014-12-05 | 2018-01-30 | 浙江浙大中控信息技术有限公司 | 一种实时数据库订阅***及方法 |
CN104539583A (zh) * | 2014-12-05 | 2015-04-22 | 浙江浙大中控信息技术有限公司 | 一种实时数据库订阅***及方法 |
CN105516284A (zh) * | 2015-12-01 | 2016-04-20 | 深圳市华讯方舟软件技术有限公司 | 一种集群数据库分布式存储的方法和装置 |
CN105516284B (zh) * | 2015-12-01 | 2019-05-03 | 深圳市华讯方舟软件技术有限公司 | 一种集群数据库分布式存储的方法和装置 |
CN105554121A (zh) * | 2015-12-18 | 2016-05-04 | 深圳中兴网信科技有限公司 | 实现分布式缓存***负载均衡的方法及*** |
CN105701219A (zh) * | 2016-01-14 | 2016-06-22 | 北京邮电大学 | 一种分布式缓存的实现方法 |
CN105701219B (zh) * | 2016-01-14 | 2019-04-02 | 北京邮电大学 | 一种分布式缓存的实现方法 |
CN106021484A (zh) * | 2016-05-18 | 2016-10-12 | 中国电子科技集团公司第三十二研究所 | 基于内存计算的可定制多模式大数据处理*** |
CN106095832A (zh) * | 2016-06-01 | 2016-11-09 | 东软集团股份有限公司 | 分布式并行数据处理方法以及装置 |
CN107463567A (zh) * | 2016-06-02 | 2017-12-12 | 广州市动景计算机科技有限公司 | 数据缓存加载方法和装置以及便携式终端设备 |
CN107463567B (zh) * | 2016-06-02 | 2021-04-09 | 阿里巴巴(中国)有限公司 | 数据缓存加载方法和装置以及便携式终端设备 |
CN106790422A (zh) * | 2016-12-02 | 2017-05-31 | 北京锐安科技有限公司 | 一种用于web应用的数据缓存集群和数据检索方法 |
CN107506396A (zh) * | 2017-07-31 | 2017-12-22 | 努比亚技术有限公司 | 一种数据缓存初始化方法、移动终端以及计算机可读存储介质 |
CN108121776A (zh) * | 2017-12-13 | 2018-06-05 | 深圳市智物联网络有限公司 | 一种数据读取方法及装置 |
CN109189554A (zh) * | 2018-08-20 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种虚拟机整机热迁移的方法及装置 |
CN109254981A (zh) * | 2018-08-27 | 2019-01-22 | 阿里巴巴集团控股有限公司 | 一种分布式缓存***的数据管理方法和装置 |
CN109254981B (zh) * | 2018-08-27 | 2021-07-23 | 创新先进技术有限公司 | 一种分布式缓存***的数据管理方法和装置 |
CN109933288A (zh) * | 2019-03-11 | 2019-06-25 | 北京安信易德科技有限公司 | 走时表分布式存储方法及装置 |
CN111935490A (zh) * | 2019-05-13 | 2020-11-13 | 深圳市茁壮网络股份有限公司 | 一种直播录流容灾处理方法及*** |
CN111935490B (zh) * | 2019-05-13 | 2023-12-05 | 深圳市茁壮网络股份有限公司 | 一种直播录流容灾处理方法及*** |
CN112068963A (zh) * | 2020-09-15 | 2020-12-11 | 中国科学技术大学 | 一种嵌入式***分布式调度*** |
CN112988078A (zh) * | 2021-04-27 | 2021-06-18 | 山东英信计算机技术有限公司 | 一种分布式存储应用中缓存内存占用的管理方法及装置 |
CN114896344A (zh) * | 2022-05-26 | 2022-08-12 | 上海聚水潭网络科技有限公司 | 一种分布式内存缓存的数据同步方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102833352A (zh) | 分布式缓存管理***和实现分布式缓存管理的方法 | |
CN103905537A (zh) | 分布式环境下管理工业实时数据存储的*** | |
CN103207841A (zh) | 基于键值对缓存的数据读写方法及装置 | |
CN106789726A (zh) | 一种基于业务优先级的高并发服务资源分配方法 | |
CN103856393A (zh) | 基于数据库的分布式消息中间件***及其运行方法 | |
CN102263822B (zh) | 一种分布式缓存的控制方法、***及装置 | |
CN101662483A (zh) | 云计算网络的缓存***及其方法 | |
CN104023058B (zh) | 一种存储资源的管理和分配方法和*** | |
CN101706817B (zh) | 分布式文件***及其垃圾数据清理方法 | |
US20120303725A1 (en) | Message Distribution System and Message Distribution Method | |
CN105472002A (zh) | 基于集群节点间即时拷贝的会话同步方法 | |
CN102761528A (zh) | 数据管理***及方法 | |
CN105554121A (zh) | 实现分布式缓存***负载均衡的方法及*** | |
CN103312624A (zh) | 一种消息队列服务***和方法 | |
CN102724314A (zh) | 一种基于元数据管理的分布式缓存客户端 | |
CN102456048A (zh) | 海量数据处理方法及*** | |
CN106790552B (zh) | 一种基于内容分发网络的内容提供*** | |
CN101599994A (zh) | 分布式文件***、接入节点及节点间传输文件数据的方法 | |
CN102262512A (zh) | 一种实现磁盘阵列缓存分区管理的***、装置及方法 | |
CN102279810A (zh) | 一种网络存储服务器及其缓存数据的方法 | |
CN101330431A (zh) | 一种即时信息存储方法和*** | |
CN105162869B (zh) | 一种用于数据备份管理的方法与设备 | |
CN109871365A (zh) | 一种分布式文件*** | |
CN102402544A (zh) | 一种附件共享的方法、装置及业务*** | |
CN101141482B (zh) | 网络资源管理***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20121219 |