CN105744001B - 分布式缓存系统扩容方法、数据访问方法及装置和系统 - Google Patents

分布式缓存系统扩容方法、数据访问方法及装置和系统 Download PDF

Info

Publication number
CN105744001B
CN105744001B CN201610221781.6A CN201610221781A CN105744001B CN 105744001 B CN105744001 B CN 105744001B CN 201610221781 A CN201610221781 A CN 201610221781A CN 105744001 B CN105744001 B CN 105744001B
Authority
CN
China
Prior art keywords
memory management
management unit
cryptographic hash
data
node equipment
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.)
Active
Application number
CN201610221781.6A
Other languages
English (en)
Other versions
CN105744001A (zh
Inventor
吴连朋
于芝涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Poly Polytron Technologies Inc
Original Assignee
Poly Polytron Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Poly Polytron Technologies Inc filed Critical Poly Polytron Technologies Inc
Priority to CN201610221781.6A priority Critical patent/CN105744001B/zh
Publication of CN105744001A publication Critical patent/CN105744001A/zh
Application granted granted Critical
Publication of CN105744001B publication Critical patent/CN105744001B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种分布式缓存系统扩容方法、基于分布式缓存系统的数据访问方法及装置和系统。扩容前的分布式缓存系统和扩容后的分布式缓存系统均基于缓存管理单元的哈希值进行数据管理,在扩容时,可将缓存管理单元以及缓存管理单元所管理的缓存数据在缓存节点设备间迁移。由于扩容前的分布式缓存系统和扩容后的分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理,且每个缓存管理单元用于计算哈希值的配置信息在扩容前和扩容后保持不变,因此,扩容前和扩容后的哈希策略以及缓存的数据保持一致性。

Description

分布式缓存系统扩容方法、数据访问方法及装置和系统
技术领域
本发明涉及通信技术领域,尤其涉及一种分布式缓存系统扩容方法、基于分布式缓存系统的数据访问方法及装置和系统。
背景技术
互联网行业中,由于数据访问的实时性要求高、数据量大且并发压力大,很多系统会部署分布式缓存系统来适应业务的需要。分布式缓存系统中包括多个缓存节点设备(即服务器),分布式缓存系统基于对缓存节点设备的标识进行哈希运算,并根据设置的哈希策略(哈希策略用于定义由数据访问请求计算得到的哈希值与缓存节点设备的哈希值之间的映射关系),将数据存储、访问、管理等操作分担到多个缓存节点设备上进行。
随着业务发展,需要更多缓存节点设备支撑时,需要对分布式缓存系统进行扩容。目前对分布式缓存系统进行扩容的方法是,将新的缓存节点设备加入分布式缓存系统。新的缓存节点设备的加入会导致哈希策略发生变化,原有的部分数据访问被分配到新的缓存节点设备中进行,而新的缓存节点设备上无原数据,因此会导致数据丢失,造成业务损失。即使额外部署了用于存储所有数据的存储系统,通过与该存储系统交互以实现数据访问,但频繁与该存储系统交互会导致该存储系统性能降低,影响数据访问操作的处理效率,甚至会导致该存储系统瘫痪。
由此可见,如何进行分布式存储系统扩容以减少或避免上述问题的发生,是目前亟需解决的问题。
发明内容
本发明实施例提供了一种分布式缓存系统扩容方法及装置。
本发明实施例提供的分布式缓存系统扩容方法,包括:
获取第二分布式缓存系统的缓存节点设备中缓存管理单元的部署信息;其中,所述第二分布缓存系统是对第一分布式缓存系统扩容后得到的,所述第一分布式缓存系统和所述第二分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理;
根据获取到的缓存管理单元的部署信息,将所述第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到所述第二分布式缓存系统的缓存节点设备中;其中,每个缓存管理单元用于计算哈希值的配置信息保持不变。
优选地,所述第一分布式缓存系统中包括N组缓存管理单元,N大于等于所述第二分布式缓存系统中的缓存节点设备的数量;
一组缓存管理单元包括一个主缓存管理单元以及至少一个从缓存管理单元,一组缓存管理单元中的每个缓存管理单元配置有相同的虚拟标识,不同组缓存管理单元配置的虚拟标识互不相同,缓存管理单元配置的虚拟标识用于计算该缓存管理单元的哈希值。
优选地,将所述第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到所述第二分布式缓存系统的缓存节点设备中,包括:将所述第一分布式缓存系统的缓存节点设备中的至少一组缓存处理单元以及所述至少一组缓存管理单元所管理的缓存数据,迁移到所述第二分布式缓存系统的缓存节点设备中。
本发明实施例提供的分布式缓存系统扩容装置,包括:
获取模块,用于获取第二分布式缓存系统的缓存节点设备中缓存管理单元的部署信息;其中,所述第二分布缓存系统是对第一分布式缓存系统扩容后得到的,所述第一分布式缓存系统和所述第二分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理;
迁移模块,用于根据获取到的缓存管理单元的部署信息,将所述第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到所述第二分布式缓存系统的缓存节点设备中;其中,每个缓存管理单元用于计算哈希值的配置信息保持不变。
优选地,所述第一分布式缓存系统中包括N组缓存管理单元,N大于等于所述第二分布式缓存系统中的缓存节点设备的数量;
一组缓存管理单元包括一个主缓存管理单元以及至少一个从缓存管理单元,一组缓存管理单元中的每个缓存管理单元配置有相同的虚拟标识,不同组缓存管理单元配置的虚拟标识互不相同,缓存管理单元配置的虚拟标识用于计算该缓存管理单元的哈希值。
优选地,所述迁移模块具体用于:将所述第一分布式缓存系统的缓存节点设备中的至少一组缓存处理单元以及所述至少一组缓存管理单元所管理的缓存数据,迁移到所述第二分布式缓存系统的缓存节点设备中。
本发明的上述实施例中,扩容前的分布式缓存系统(称为第一分布式缓存系统)和扩容后的分布式缓存系统(称为第二分布式缓存系统)均基于缓存管理单元的哈希值进行数据管理,在分布式缓存系统扩容时,可将第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到第二分布式缓存系统的缓存节点设备中。由于扩容前的分布式缓存系统和扩容后的分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理,且每个缓存管理单元用于计算哈希值的配置信息在扩容前和扩容后保持不变,因此,扩容前和扩容后的哈希策略以及缓存的数据保持一致性,因此无需与用于存储所有数据的存储系统进行交互,即可基于扩容后的分布式缓存系统实现数据访问操作,进而与现有技术相比,可以提高数据访问操作的处理效率,还可以避免数据丢失。
本发明实施例还提供了一种基于分布式缓存系统的数据访问方法及系统。
本发明实施例提供的基于分布式缓存系统的数据访问方法,应用于上述第一分布式缓存系统或第二分布式缓存系统,该方法包括:
接收数据访问请求;
根据所述数据访问请求中携带的信息确定第一哈希值;
根据所述第一哈希值以及数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略,确定所述第一哈希值对应的第二哈希值;
根据所述第二哈希值确定对应的缓存管理单元以及该缓存管理单元所在的缓存节点设备;
将所述数据访问请求发送给确定出的缓存节点设备中所述第二哈希值所对应的缓存管理单元进行处理。
优选地,将所述数据访问请求发送给确定出的缓存节点设备中的所述第二哈希值对应的缓存管理单元进行处理之后,还包括:
若所述数据访问请求为数据缓存请求,则所述第二哈希值对应的一组缓存管理单元中的主缓存管理单元,根据所述数据缓存请求进行数据缓存,并将缓存的数据同步给该组缓存管理单元中的从缓存管理单元;或者,
若所述数据访问请求为数据查询请求,则所述第二哈希值对应的一组缓存管理单元中的从缓存管理单元,根据所述数据查询请求进行缓存数据的查询。
本发明实施例提供的分布式缓存系统,包括:缓存代理模块、缓存节点设备,所述缓存节点设备中配置有缓存管理单元;
所述缓存代理模块用于:
接收数据访问请求;
根据所述数据访问请求中携带的信息确定第一哈希值;
根据所述第一哈希值以及数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略,确定所述第一哈希值对应的第二哈希值;
根据所述第二哈希值确定对应的缓存管理单元以及该缓存管理单元所在的缓存节点设备;
将所述数据访问请求发送给确定出的缓存节点设备中的所述第二哈希值对应的缓存管理单元进行处理。
优选地,若所述数据访问请求为数据缓存请求,则所述第二哈希值对应的一组缓存管理单元中的主缓存管理单元用于:根据所述数据缓存请求进行数据缓存,并将缓存的数据同步给该组缓存管理单元中的从缓存管理单元;或者,
若所述数据访问请求为数据查询请求,则所述第二哈希值对应的一组缓存管理单元中的从缓存管理单元用于:根据所述数据查询请求进行缓存数据的查询。
本发明的上述实施例中,分布式缓存系统接收数据访问请求后,根据该数据访问请求中携带的信息确定第一哈希值,根据第一哈希值以及数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略(即哈希策略),确定第一哈希值对应的第二哈希值,根据第二哈希值确定对应的缓存管理单元以及该缓存管理单元所在的缓存节点设备,并将该数据访问请求发送给确定出的缓存节点设备中的所述第二哈希值对应的缓存管理单元进行处理。由于分布式缓存系统基于缓存管理单元的哈希值进行数据管理,且每个缓存管理单元用于计算哈希值的配置信息在扩容前和扩容后保持不变,因此,扩容前和扩容后的哈希策略以及缓存的数据保持一致性,因此无需与用于存储所有数据的存储系统进行交互,即可基于扩容后的分布式缓存系统实现数据访问操作,进而与现有技术相比,可以提高数据访问操作的处理效率,还可以避免数据丢失。
附图说明
图1为本发明实施例提供的扩容前的分布式缓存系统示意图;
图2为本发明实施例提供的分布式缓存系统扩容流程示意图;
图3为图1所示的分布式缓存系统扩容后的示意图;
图4为本发明实施例提供的数据访问流程示意图;
图5为本发明实施例中的哈希值映射关系示意图;
图6为本发明实施例提供的分布式缓存系统扩容装置的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
业务发展对分布式缓存系统规模的要求通常是可以预见的,本发明实施例中,在分布式缓存系统的部署阶段,可以基于对未来一段时间内业务发展对分布式缓存系统规模的预判,进行系统部署,为未来的系统扩容留有余地。
具体地,在部署分布式缓存系统时,基于对未来一段时间内业务发展对分布式缓存系统规模的预判,确定缓存管理单元的数量。比如,根据业务发展对未来一段时间内分布式缓存系统规模的预判结果是需要N个(N为大于等于1的整数)缓存节点设备以用于对数据缓存、管理等进行分担,基于此,可确定需要配置至少N个缓存管理单元,为留有更大的扩容余地,可选地,缓存管理单元的数量可以大于N。
进一步地,为了提高可靠性,在本发明的一些实施例中,采用主从架构的分布式缓存机制。具体地,仍以对未来一段时间内分布式缓存系统规模的预判结果是需要N个缓存节点设备以用于对数据缓存、管理等进行分担为例,可确定需要配置至少N组缓存管理单元。一组缓存管理单元包括一个主缓存管理单元以及至少一个从缓存管理单元,一组缓存管理单元中的主缓存管理单元和从缓存管理单元之间可进行缓存数据同步。
上述缓存管理单元配置在缓存节点设备(或服务器)中,可用于实现缓存数据管理,包括:存储、读取或者其他缓存数据管理操作,比如,一个缓存管理单元可对该缓存管理单元所在的缓存节点设备中的一个数据缓存区域进行管理,包括向该缓存区域写入数据或者从该缓存区域读取数据等。一个缓存管理单元所管理的数据可以保存为数据文件形式。
上述缓存管理单元可以是逻辑实体,在具体实施时,一个缓存管理单元即为一个用于进行内存管理的进程或进程的实例。由此可以看出,上述缓存管理单元是轻量级的,因此不会对缓存节点设备造成过多负担,不会过多影响缓存节点设备的性能。
可选地,缓存节点设备通常使用多核CPU以提高并发处理能力,一个缓存节点设备中配置的缓存管理单元的数量通常不超过该缓存节点设备的CPU核数,这样,基本不会对该缓存节点设备造成负担,不会影响该缓存节点设备的性能。
可选地,上述缓存管理单元可采用Redis等分布式缓存机制。以采用Redis分布式缓存机制为例,缓存管理单元作为Redis节点,可通过Redis节点的key(比如缓存管理单元的标识)进行一致性哈希运算,实现key对应Redis节点的分布。
下面以采用主从架构的分布式缓存机制为例,对分布式缓存系统中各组成部分的配置情况进行说明。
本发明实施例提供的分布式缓存系统,主要包括缓存节点设备集群和缓存代理设备,缓存节点设备中配置有缓存管理单元。缓存代理设备可以是独立的硬件实体设备,也可以是部署在其他硬件实体设备中的逻辑实体。缓存代理设备主要负责客户端设备与分布式缓存系统之间的信息交互以及执行哈希策略等,比如,接收客户端设备发送的数据访问请求,基于哈希策略将该数据访问请求分发到相应的缓存节点设备中的缓存管理单元进行处理。
本发明实施例中,缓存管理单元的配置信息包括但不限于以下信息中的一种或多种:
-缓存管理单元的虚拟标识,一组缓存管理单元中的每个缓存管理单元配置有相同的虚拟标识,不同组缓存管理单元配置的虚拟标识互不相同,缓存管理单元配置的虚拟标识用于计算该缓存管理单元的哈希值,由于一组缓存管理单元的虚拟标识相同,因此一组缓存管理单元具有相同的哈希值。该虚拟标识为必选配置信息。
-用于标识缓存管理单元的唯一标识,可以唯一标识一个缓存管理单元;
-缓存管理单元的IP地址;
-缓存管理单元的端口号;
-缓存管理单元的其他系统配置信息,比如,可包括:缓存管理单元所管理的数据文件的存储目录,缓存管理单元进行缓存数据管理所采用的算法等。
需要说明的是,上述实施例是以将缓存管理单元的虚拟标识作为缓存管理单元的哈希值的计算依据为例描述的,在一些其他实施例中,也可以使用缓存管理单元的其他配置信息,比如虚拟IP地址(类似地,一组缓存管理单元中的每个缓存管理单元配置有相同的虚拟IP地址,不同组缓存管理单元配置的虚拟IP地址互不相同),作为计算该缓存管理单元的哈希值的依据,本发明实施例对此不做限制。在不特别声明的情况下,本发明实施例均以将缓存管理单元的虚拟标识作为缓存管理单元的哈希值的计算依据为例描述。
可选地,如果能够预先获知或预先规划出系统扩容后的配置,比如预先规划出系统扩容后每个缓存管理单元的IP地址、端口号等信息,则可以在系统部署阶段,基于预先规划对各缓存管理单元进行配置,比如设置各缓存管理单元的IP地址、端口号等,这样,在未来进行系统扩容时,不必在更改缓存管理单元的这些配置信息,以简化系统扩容处理的复杂度,提高系统扩容的效率,进而减少对数据处理的影响。
上述分布式缓存系统的缓存代理设备中,配置有各缓存节点设备的IP地址等信息,以及各缓存节点设备上配置的缓存管理单元的相关配置信息,比如缓存管理单元的虚拟标识、IP地址、端口号等。进一步地,缓存代理设备中,还配置有基于数据访问请求计算对应的哈希值的算法策略,基于缓存管理单元的虚拟标识计算哈希值的算法策略,数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略(或称哈希策略)等。其中,上述各种策略可参照现有技术实现,也可采用未来可能使用的策略,本发明实施例对此不做限制。
可选地,可预先基于缓存管理单元的虚拟标识计算出各缓存管理单元的哈希值,并将各缓存管理单元的哈希值存储在缓存代理设备中,以便在数据访问过程中查询使用。
图1示例性地示出了一种扩容前的分布式缓存系统的结构示意图。
如图1所示,该分布式缓存系统主要包括缓存节点设备集群和缓存代理设备。
当前阶段,缓存节点设备集群中部署2个缓存节点设备(如图中所示的缓存节点设备1和缓存节点设备2)即可满足业务需求。基于对未来一段时间内业务发展对分布式缓存系统规模的预判,预计未来需要扩容到4个缓存节点设备,因此在系统部署时,配置至少4组缓存管理单元。
图2以配置4组缓存管理单元为例,示出了这4组缓存管理单元在当前配置的2个缓存节点设备上的分布情况。其中,缓存节点设备1上配置有两组缓存管理单元,第一组缓存管理单元中包括:作为主缓存管理单元的Master 1以及作为从缓存管理单元的Slave 3;第二组缓存管理单元中包括:作为主缓存管理单元的Master 2以及作为从缓存管理单元的Slave 4。缓存节点设备2上配置有两组缓存管理单元,第一组缓存管理单元中包括:作为主缓存管理单元的Master 3以及作为从缓存管理单元的Slave 1;第二组缓存管理单元中包括:作为主缓存管理单元的Master 4以及作为从缓存管理单元的Slave 2。
优选地,如果2个缓存节点设备的配置(主要是内存容量)基本相同,则可以将这4组缓存管理单元均匀分布在这2个缓存节点设备上,比如如图1所示,每个缓存节点设备中各配置2组缓存管理单元,这样可以使得2个缓存节点设备的负载大致平衡。
当然,图1仅为一种示例,也可根据具体情况确定缓存管理单元在缓存节点设备上的分布方式。比如,如果缓存节点设备1的存储容量大于缓存节点设备2的存储容量,则可以在缓存节点设备1上配置较多组缓存管理单元。
图2示出了本发明实施例提供的分布式缓存系统扩容流程示意图,该流程可由分布式缓存系统扩容装置实现。如图所示,该流程可包括如下步骤:
步骤201:获取扩容后的分布式缓存系统的缓存节点设备中缓存管理单元的部署信息。
该步骤中,可根据扩容规划获得扩容后的分布式缓存系统中的每个缓存节点设备中配置的缓存管理单元的数量,还可以进一步获得每个缓存节点设备中的配置的缓存管理单元来源于扩容前的哪个缓存节点设备。
具体地,分布式缓存系统扩容装置可通过接收到的系统扩展配置信息获取扩容后的分布式缓存系统的缓存节点设备中缓存管理单元的部署情况。该系统扩展配置信息中可包含系统扩容后各缓存节点设备中的缓存管理单元的部署信息,还可以进一步包括系统扩容后的其他系统配置信息,比如可包括缓存节点设备的IP地址、缓存管理单元的IP地址和端口号等。
步骤202:根据获取到的缓存管理单元的部署信息,将待扩容的分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到扩容后的分布式缓存系统的缓存节点设备中。
该步骤中,在进行缓存管理单元迁移时,每个缓存管理单元用于计算哈希值的配置信息(比如缓存管理单元的虚拟标识)保持不变,因此扩容前和扩容后,缓存管理单元的哈希值保持不变。
以将一个缓存管理单元从缓存节点设备A迁移到缓存节点设备B为例,在对该缓存管理单元以及该缓存管理单元所管理的缓存数据进行迁移时,可包括如下操作:
-将该缓存管理单元的程序代码从缓存节点设备A迁移到缓存节点设备B;
-修改该缓存管理单元的配置信息。具体地,可根据扩容后的系统配置,修改该缓存管理单元的IP地址和端口号;可根据扩容后的数据存储结构,修改该缓存管理单元所管理的数据文件的存储目录;可根据扩容后的数据管理相关算法,修改该缓存管理单元使用的数据管理相关算法。上述修改操作可视具体情况执行其中的部分操作也可执行全部操作。
-将该缓存管理单元所管理的缓存数据从缓存节点设备A迁移至缓存节点设备B,比如,将该缓存管理单元所管理的数据文件从缓存节点设备A迁移至缓存节点设备B。
进一步地,还可根据情况对缓存代理设备的配置信息进行重新配置或修改。比如,重新配置扩容后的各缓存节点设备的IP地址,以及各缓存节点设备上配置的缓存管理单元的相关配置信息,比如缓存管理单元的IP地址、端口号等。
其中,缓存管理单元的虚拟标识保持不变,基于缓存管理单元的虚拟标识计算出的各缓存管理单元的哈希值也保持不变。
进一步地,基于数据访问请求计算对应的哈希值的算法策略,基于缓存管理单元的标识计算哈希值的算法策略,数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略等,也可以保持不变。
根据以上分布式缓存系统扩容流程,基于图1所示的分布式缓存系统,图3示出了扩容后的分布式缓存系统。如图3所示,扩容后的分布式缓存系统的缓存节点设备集群中包括4个缓存节点设备,每个节点设备上配置有一组缓存管理单元。图3所示的扩容后的分布式缓存系统是通过对图1所示的分布式缓存系统进行如下操作得到的:
保留缓存节点设备1中的第一组缓存管理单元(Master 1,Slave 3)以及该组缓存管理单元所管理的数据文件,将缓存节点设备1中的第二组缓存管理单元(Master 2,Slave4)以及该组缓存管理单元所管理的数据文件迁移到新增加的缓存节点设备3中;保留缓存节点设备2中的第一组缓存管理单元(Master 3,Slave 1)以及该组缓存管理单元所管理的数据文件,将第二组缓存管理单元(Master 4,Slave 2)以及该缓存管理单元所管理的数据文件迁移到新增加的缓存节点设备4中。
以上实施例是以采用主从架构的分布式缓存机制为例描述的,如果不采用主从架构的分布式缓存机制,则实现原理相同,比如将上述实施例中的一组主从架构的缓存管理单元替换为一个缓存管理单元,相应地,将“缓存管理单元的虚拟标识”替换为“缓存管理单元的标识”,其他处理操作和相关配置基本类似,在此不再详述。
本发明的上述实施例中,扩容前的分布式缓存系统(称为第一分布式缓存系统)和扩容后的分布式缓存系统(称为第二分布式缓存系统)均基于缓存管理单元的哈希值进行缓存数据管理,在分布式缓存系统扩容时,可将第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到第二分布式缓存系统的缓存节点设备中。由于扩容前的分布式缓存系统和扩容后的分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理,且每个缓存管理单元用于计算哈希值的配置信息在扩容前和扩容后保持不变,因此,扩容前和扩容后的哈希策略以及缓存的数据保持一致性,因此无需与用于存储所有数据的存储系统进行交互,即可基于扩容后的分布式缓存系统实现数据访问操作,进而与现有技术相比,可以提高数据访问操作的处理效率,还可以避免数据丢失。
参见图4,为本发明实施例提供的基于上述分布式缓存系统实现的数据访问流程。该流程既适用于扩容前的分布式缓存系统,也适用于扩容后的分布式缓存系统。
如图4所示,该流程可包括如下步骤:
步骤401:缓存代理设备接收客户端设备发送的数据访问请求。
步骤402:缓存代理设备根据该数据访问请求中携带的信息确定第一哈希值。
如前所述,缓存代理设备中可配置有基于数据访问请求计算对应的哈希值的算法策略,因此缓存代理设备可根据该算法策略,利用数据访问请求中携带的信息计算出该数据访问请求对应的哈希值。例如,根据上述算法策略,可利用数据访问请求中携带的五元组信息(源IP地址、目的IP地址、源端口、目的端口、传输层协议)计算得到第一哈希值。
步骤403:缓存代理设备根据第一哈希值以及数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略,确定第一哈希值对应的第二哈希值。
以图2或图3所示的分布式缓存系统为例,基于4组缓存管理单元的虚拟标识进行一致性哈希运算,可得到这4组缓存管理单元对应的哈希值,将这4个哈希值分布到具有0~232个节点的一个圆环上(顺时针分布),如图5所示,节点A的哈希值对应缓存管理单元(Master 1,Slave 3),节点B的哈希值对应缓存管理单元(Master 2,Slave 4),节点C的哈希值对应缓存管理单元(Master 3,Slave 1),节点D的哈希值对应缓存管理单元(Master4,Slave 2)。
步骤403中,缓存代理设备可根据第一哈希值查询图5所示的缓存管理单元的哈希值分布,如果第一哈希值与图5中的A、B、C、D中的任意一个节点所对应的哈希值相同,即第一哈希值可映射到上述4个节点中的任意一个节点,则第一哈希值所映射到的那个节点的哈希值即为与该第一哈希值对应的第二哈希值。如果第二哈希值没有映射到上述4个节点中的任意一个节点上,则可按照顺时针方向查找,直到第一次找到节点,该节点的哈希值即为与第一哈希值对应的第二哈希值。进一步地,如果超过了232仍然找不到节点,则命中第一个节点,将该节点的哈希值作为与第一哈希值对应的第二哈希值。比如,第一哈希值介于A~B之间,那么命中节点B,将节点B的哈希值作为第一哈希值对应的第二哈希值。
可以看出,图5所示的缓存管理单元的哈希值分布情况,在分布式缓存系统扩容前以及扩容后没有变化。这样,无论是在扩容前还是在扩容后,根据第一哈希值所映射到的第二哈希值不会发生变化,也就是说所映射到的缓存管理单元没有变化,进而保证了扩容前和扩容后的一致性。
步骤404:缓存代理设备根据第二哈希值确定对应的缓存管理单元以及该缓存管理单元所在的缓存节点设备。
该步骤中,缓存代理设备根据第二哈希值确定出对应的缓存管理单元后,由于缓存代理设备中存储有各缓存节点设备上配置的缓存管理单元的相关信息,因此可确定出第二哈希值对应的缓存管理单元所在的缓存节点设备。
步骤405:缓存代理设备将该数据访问请求发送给确定出的缓存节点设备中第二哈希值所对应的缓存管理单元进行处理。
在采用上述主从架构的分布式缓存机制的情况下,第二哈希值对应一组缓存管理单元,其中包括一个主缓存管理单元以及至少一个从缓存管理单元。进一步地,第二哈希值所对应的一组缓存管理单元可根据该数据访问请求进行相应处理。
在本发明的一些实施例中,可根据数据访问请求的具体类型(比如,是数据缓存请求,还是数据查询请求)由不同缓存管理单元进行处理,比如,如果是数据缓存请求(即写入缓存数据的请求),则由主缓存管理单元处理;如果是数据查询请求(即读取缓存数据的请求),则可以由从缓存管理单元处理。
具体地,若数据访问请求为数据缓存请求,则第二哈希值对应的一组缓存管理单元中的主缓存管理单元,根据该数据缓存请求进行数据缓存,并将缓存的数据同步给该组缓存管理单元中的从缓存管理单元。若数据访问请求为数据查询请求,则第二哈希值对应的一组缓存管理单元中的从缓存管理单元,根据该数据查询请求进行缓存数据的查询。
进一步地,当主缓存管理单元故障时,可由同组的从缓存管理单元接替该主缓存管理单元对数据访问请求进行处理。在具体实施时,当主缓存管理单元故障时,可将一个从缓存管理单元的状态配置为主状态,以接替发生故障的主缓存管理单元。
可以看出,由主缓存管理单元根据数据缓存请求进行缓存数据写操作,并与从缓存管理单元进行数据同步,由从缓存管理单元根据数据查询请求进行缓存数据读操作,一方面,可实现读写操作的负载分担,另一方面,由主缓存管理单元负载缓存数据写操作并进行数据同步,可保证主缓存管理单元和从缓存管理单元所管理的缓存数据的一致性,以便在主缓存管理单元故障时,可由从缓存管理单元接替主缓存管理单元。
通过以上描述可以看出,本发明的上述实施例中,由于分布式缓存系统基于缓存管理单元的哈希值进行数据管理,且每个缓存管理单元用于计算哈希值的配置信息在扩容前和扩容后保持不变,因此,扩容前和扩容后的哈希策略以及缓存的数据保持一致性,因此无需与用于存储所有数据的存储系统进行交互,即可基于扩容后的分布式缓存系统实现数据访问操作,进而与现有技术相比,可以提高数据访问操作的处理效率,还可以避免数据丢失。
基于相同的技术构思,本发明实施例还提供了一种分布式缓存系统扩容装置。
参见图6,为本发明实施例提供的分布式缓存系统扩容装置的结构示意图,该装置可以实现前述分布式缓存系统的扩容流程。
如图所示,该装置可包括:获取模块601和迁移模块602,其中:
获取模块601,用于获取第二分布式缓存系统的缓存节点设备中缓存管理单元的部署信息;其中,所述第二分布缓存系统是对第一分布式缓存系统扩容后得到的,所述第一分布式缓存系统和所述第二分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理;
迁移模块602,用于根据获取到的缓存管理单元的部署信息,将所述第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到所述第二分布式缓存系统的缓存节点设备中;其中,每个缓存管理单元用于计算哈希值的配置信息保持不变。
优选地,所述第一分布式缓存系统中包括N组缓存管理单元,N大于等于所述第二分布式缓存系统中的缓存节点设备的数量;一组缓存管理单元包括一个主缓存管理单元以及至少一个从缓存管理单元,一组缓存管理单元中的每个缓存管理单元配置有相同的虚拟标识,不同组缓存管理单元配置的虚拟标识互不相同,缓存管理单元配置的虚拟标识用于计算该缓存管理单元的哈希值。
优选地,迁移模块602具体用于:将所述第一分布式缓存系统的缓存节点设备中的至少一组缓存处理单元以及所述至少一组缓存管理单元所管理的缓存数据,迁移到所述第二分布式缓存系统的缓存节点设备中。
本发明实施例还提供了一种分布式缓存系统。该系统主要包括:缓存代理模块、缓存节点设备,所述缓存节点设备中配置有缓存管理单元。该系统的各组成部分的连接关系以及实现的功能,可参见前述实施例,在此不再详述。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种分布式缓存系统扩容方法,其特征在于,包括:
获取第二分布式缓存系统的缓存节点设备中缓存管理单元的部署信息;其中,所述第二分布缓存系统是对第一分布式缓存系统扩容后得到的,所述第一分布式缓存系统和所述第二分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理;
根据获取到的缓存管理单元的部署信息,将所述第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到所述第二分布式缓存系统的缓存节点设备中;其中,每个缓存管理单元用于计算哈希值的配置信息保持不变;
其中,所述缓存管理单元配置在所述缓存节点设备中,用于实现缓存数据管理,包括向该缓存区域写入数据或者从缓存区域读取数据,所述缓存管理单元的数量不少于预判得到的未来一段时间内分布式缓存系统规模所需的缓存节点设备的数量。
2.如权利要求1所述的方法,其特征在于,所述第一分布式缓存系统中包括N组缓存管理单元,N大于等于所述第二分布式缓存系统中的缓存节点设备的数量;
一组缓存管理单元包括一个主缓存管理单元以及至少一个从缓存管理单元,一组缓存管理单元中的每个缓存管理单元配置有相同的虚拟标识,不同组缓存管理单元配置的虚拟标识互不相同,缓存管理单元配置的虚拟标识用于计算该缓存管理单元的哈希值。
3.如权利要求2所述的方法,其特征在于,将所述第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到所述第二分布式缓存系统的缓存节点设备中,包括:
将所述第一分布式缓存系统的缓存节点设备中的至少一组缓存处理单元以及所述至少一组缓存管理单元所管理的缓存数据,迁移到所述第二分布式缓存系统的缓存节点设备中。
4.一种基于分布式缓存系统的数据访问方法,应用于权利要求1至3中任一项所述的第一分布式缓存系统或第二分布式缓存系统,其特征在于,所述方法包括:
接收数据访问请求;
根据所述数据访问请求中携带的信息确定第一哈希值;
根据所述第一哈希值以及数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略,确定所述第一哈希值对应的第二哈希值;
根据所述第二哈希值确定对应的缓存管理单元以及该缓存管理单元所在的缓存节点设备;
将所述数据访问请求发送给确定出的缓存节点设备中所述第二哈希值所对应的缓存管理单元进行处理。
5.如权利要求4所述的方法,其特征在于,将所述数据访问请求发送给确定出的缓存节点设备中的所述第二哈希值对应的缓存管理单元进行处理之后,还包括:
若所述数据访问请求为数据缓存请求,则所述第二哈希值对应的一组缓存管理单元中的主缓存管理单元,根据所述数据缓存请求进行数据缓存,并将缓存的数据同步给该组缓存管理单元中的从缓存管理单元;或者,
若所述数据访问请求为数据查询请求,则所述第二哈希值对应的一组缓存管理单元中的从缓存管理单元,根据所述数据查询请求进行缓存数据的查询。
6.一种分布式缓存系统扩容装置,其特征在于,包括:
获取模块,用于获取第二分布式缓存系统的缓存节点设备中缓存管理单元的部署信息;其中,所述第二分布缓存系统是对第一分布式缓存系统扩容后得到的,所述第一分布式缓存系统和所述第二分布式缓存系统均基于缓存管理单元的哈希值进行缓存数据管理;
迁移模块,用于根据获取到的缓存管理单元的部署信息,将所述第一分布式缓存系统的缓存节点设备中的缓存管理单元以及缓存管理单元所管理的缓存数据迁移到所述第二分布式缓存系统的缓存节点设备中;其中,每个缓存管理单元用于计算哈希值的配置信息保持不变;
其中,所述缓存管理单元配置在所述缓存节点设备中,用于实现缓存数据管理,包括向该缓存区域写入数据或者从缓存区域读取数据,所述缓存管理单元的数量不少于预判得到的未来一段时间内分布式缓存系统规模所需的缓存节点设备的数量。
7.如权利要求6所述的装置,其特征在于,所述第一分布式缓存系统中包括N组缓存管理单元,N大于等于所述第二分布式缓存系统中的缓存节点设备的数量;
一组缓存管理单元包括一个主缓存管理单元以及至少一个从缓存管理单元,一组缓存管理单元中的每个缓存管理单元配置有相同的虚拟标识,不同组缓存管理单元配置的虚拟标识互不相同,缓存管理单元配置的虚拟标识用于计算该缓存管理单元的哈希值。
8.如权利要求7所述的装置,其特征在于,所述迁移模块具体用于:
将所述第一分布式缓存系统的缓存节点设备中的至少一组缓存处理单元以及所述至少一组缓存管理单元所管理的缓存数据,迁移到所述第二分布式缓存系统的缓存节点设备中。
9.一种分布式缓存系统,其特征在于,包括:缓存代理模块、缓存节点设备,所述缓存节点设备中配置有缓存管理单元;
所述缓存代理模块用于:
接收数据访问请求;
根据所述数据访问请求中携带的信息确定第一哈希值;
根据所述第一哈希值以及数据访问请求对应的哈希值与缓存管理单元对应的哈希值之间的映射策略,确定所述第一哈希值对应的第二哈希值;
根据所述第二哈希值确定对应的缓存管理单元以及该缓存管理单元所在的缓存节点设备;
将所述数据访问请求发送给确定出的缓存节点设备中的所述第二哈希值对应的缓存管理单元进行处理;
其中,所述缓存管理单元配置在所述缓存节点设备中,用于实现缓存数据管理,包括向该缓存区域写入数据或者从缓存区域读取数据,所述缓存管理单元的数量不少于预判得到的未来一段时间内分布式缓存系统规模所需的缓存节点设备的数量。
10.如权利要求9所述的系统,其特征在于,若所述数据访问请求为数据缓存请求,则所述第二哈希值对应的一组缓存管理单元中的主缓存管理单元用于:根据所述数据缓存请求进行数据缓存,并将缓存的数据同步给该组缓存管理单元中的从缓存管理单元;或者,
若所述数据访问请求为数据查询请求,则所述第二哈希值对应的一组缓存管理单元中的从缓存管理单元用于:根据所述数据查询请求进行缓存数据的查询。
CN201610221781.6A 2016-04-11 2016-04-11 分布式缓存系统扩容方法、数据访问方法及装置和系统 Active CN105744001B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610221781.6A CN105744001B (zh) 2016-04-11 2016-04-11 分布式缓存系统扩容方法、数据访问方法及装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610221781.6A CN105744001B (zh) 2016-04-11 2016-04-11 分布式缓存系统扩容方法、数据访问方法及装置和系统

Publications (2)

Publication Number Publication Date
CN105744001A CN105744001A (zh) 2016-07-06
CN105744001B true CN105744001B (zh) 2019-03-12

Family

ID=56253142

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610221781.6A Active CN105744001B (zh) 2016-04-11 2016-04-11 分布式缓存系统扩容方法、数据访问方法及装置和系统

Country Status (1)

Country Link
CN (1) CN105744001B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107147708A (zh) * 2017-04-27 2017-09-08 北京众享比特科技有限公司 一种对等网络冗余数据平衡方法和系统
CN108156243B (zh) * 2017-12-26 2021-05-07 北京百度网讯科技有限公司 分布式缓存系统中虚拟节点迁移的方法及装置
CN108520025B (zh) * 2018-03-26 2020-12-18 腾讯科技(深圳)有限公司 一种服务节点确定方法、装置、设备及介质
CN111274310A (zh) * 2018-12-05 2020-06-12 中国移动通信集团山东有限公司 一种分布式数据缓存方法及系统
CN113806068B (zh) * 2021-07-30 2023-12-12 上海晶赞融宣科技有限公司 业务系统的扩容方法及装置、可读存储介质、终端
CN114500576A (zh) * 2021-12-27 2022-05-13 天翼云科技有限公司 分布式缓存扩缩容方法、系统、装置及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103078927A (zh) * 2012-12-28 2013-05-01 合一网络技术(北京)有限公司 一种key-value数据分布式缓存系统及其方法
CN103379138A (zh) * 2012-04-17 2013-10-30 深圳市腾讯计算机系统有限公司 实现负载均衡的方法及系统和灰度发布的方法及装置
CN103747073A (zh) * 2013-12-30 2014-04-23 乐视网信息技术(北京)股份有限公司 一种分布式缓存的方法和系统
CN103905503A (zh) * 2012-12-27 2014-07-02 中国移动通信集团公司 数据存取方法、调度方法、设备及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941401B2 (en) * 2005-05-09 2011-05-10 Gemstone Systems, Inc. Distributed data management system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103379138A (zh) * 2012-04-17 2013-10-30 深圳市腾讯计算机系统有限公司 实现负载均衡的方法及系统和灰度发布的方法及装置
CN103905503A (zh) * 2012-12-27 2014-07-02 中国移动通信集团公司 数据存取方法、调度方法、设备及系统
CN103078927A (zh) * 2012-12-28 2013-05-01 合一网络技术(北京)有限公司 一种key-value数据分布式缓存系统及其方法
CN103747073A (zh) * 2013-12-30 2014-04-23 乐视网信息技术(北京)股份有限公司 一种分布式缓存的方法和系统

Also Published As

Publication number Publication date
CN105744001A (zh) 2016-07-06

Similar Documents

Publication Publication Date Title
CN105744001B (zh) 分布式缓存系统扩容方法、数据访问方法及装置和系统
EP2784675B1 (en) Method, device and system for data reconstruction
EP2501108B1 (en) Massively scalable object storage system
EP2996308B1 (en) Massively scalable object storage system
CN103067433B (zh) 一种分布式存储系统的数据迁移方法、设备和系统
CN102882973B (zh) 基于p2p技术的分布式负载均衡系统和方法
CN110447021A (zh) 用于在数据中心之间维持元数据和数据的一致性的方法、装置和系统
CN106843745A (zh) 容量扩展方法及装置
JP2017515212A (ja) 拡張縮小可能なファイル格納サービス
AU2017254926B2 (en) Management of multiple clusters of distributed file systems
CN105340241A (zh) 用于均衡在sdn网络中的负载的方法和系统
CN106326239A (zh) 分布式文件系统及其文件元信息管理方法
CN104254839B (zh) 用于分割单链表以供分配存储器元素的系统和方法
US11263270B1 (en) Heat balancing in a distributed time-series database
CN108319596A (zh) 一种数据库的扩容方法和装置
US10452304B2 (en) Efficient repository migration and storage
CN104391913A (zh) 一种数据库管理方法及装置
CN110764918A (zh) 一种容器集群中主节点管理方法
CN109271376A (zh) 数据库升级方法、装置、设备及存储介质
CN108833610A (zh) 一种信息更新方法、装置及系统
CN104536988A (zh) MonetDB分布式计算存储方法
US11409771B1 (en) Splitting partitions across clusters in a time-series database
CN114500523A (zh) 一种基于容器云平台的固定ip应用发布方法
CN109739684A (zh) 基于向量时钟的分布式键值数据库的副本修复方法与装置
US11366598B1 (en) Dynamic lease assignments in a time-series database

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20170109

Address after: 266000 Shandong Province, Qingdao city Laoshan District Songling Road No. 399

Applicant after: Poly Polytron Technologies Inc

Address before: 266061 Laoshan, Qingdao province Hongkong District No. East Road, room 248, room 131

Applicant before: Hisense Media Networks Co., Ltd.

GR01 Patent grant
GR01 Patent grant