一种key-value数据分布式缓存系统及其方法

文档序号:6385963阅读:188来源:国知局
专利名称:一种key-value数据分布式缓存系统及其方法
技术领域
本发明涉及数据存储领域,尤其是涉及海量key-value数据分布存储在多个节点内存中的系统和方法。
背景技术
由于大多数的互联网服务需要从数据库中获取数据,以提供访问服务用户数据,而数据库服务一般由于受制于硬盘io瓶颈,无法提供对大数据高并发访问服务。现有的数据分布式缓存系统中,由于数据分片技术采用固定hash算法,当系统扩容,加入新存储节点,会导致大量已经存储的数据失效,产生巨大数据迁移成本。此外,分片数据没有采用复制集群技术,系统存在单点故障,一旦分片节点宕机后,直接导致数据丢失。没有采用连接池及长连接技术,数据在网络传输中损失大量性能,以及没有数据分组配置管理功能,无法实现在同一个集群上储存多个业务数据。此外,key-value数据,value数据只支持字符格式,无法满足业务对key关联数据更加精细控制。最后,由于现有的数据存储中没有使用插件技术,从而无法实现系统的灵活集成。

发明内容
为了克服老旧方案的这些局限性,本发明创新提出的技术方案依据数据的key,采用一致性hash算法,实现key-value数据自动分片存储,保证系统数据存储容量的水平扩充。分片数据采用自动复制集群储存,从而保证了数据的高可靠性,及高可用性。为提高对key-value数据访问的高效性,高可靠性,该发明采用长连接及连接池技术提高数据网络交互性能,通过监控集群每个节点的状态,及自动故障迁移技术消除集群中单点故障,保证数据访问的高可靠性。具体而言,本发明提出了一种Key-value数据分布式缓存系统,包括key-value访问代理集群和key-value数据存储集群,其中key-value访问代理集群由多个数据访问代理节点组成,key-value数据存储集群由多个数据分片存储复制集群组成,其中所述数据访问代理节点用于发送节点业务存储请求,并将数据读写请求路由到目标数据存储节点,存储或者读取业务数据;所述数据分片存储复制集群中采用主从数据复制机制,用于确定数据不存在单点故障,读数据从多个从节点读取,并且确定读数据负载均衡。根据本发明另一方面,其中,所述数据访问代理节点进一步包括:Key_value数据存取模块、存储分组配置模块、Key-value存储分组模块、存储节点健康检测模块,其中所述Key-value数据存取模块,用于通过建立与存储集群各节点的通讯链路,实现数据请求网络协议解析与存储数据传送及读取;所述存储分组配置模块,用于解析存储集群中物理节点信息,并实时监测存储集群物理配置变化,自动加载存储节点;所述Key-value存储分组模块,用于复制数据路由,通过一致性hash算法,自动计算数据实际存储的物理节点,实现数据访问目标物理节点的路由;所述存储节点健康检测模块,用于通过建立与数据存储集群中存储节点的心跳链路,实时监控存储集群各节点的工作状态,并切换主存储节点;根据本发明另一方面,其中,数据分片存储复制集群进一步包括:主存储节点和从存储节点,其中所述主存储节点用于数据读写请求,以及增量数据同步服务,维持与分片中其他节点的通讯链路,实现节点切换;所述从存储节点用于数据读请求,并实时从所述主存储节点上同步数据,维护数据的一致性,在所述主存储节点失效后,从存储节点切换成为主存储节点。此外,本发明还提出了一种采用key-value数据分布式缓存系统的数据缓存方法,其中该方法包括:S101、业务写key-value数据,并将数据发送给数据访问代理节点;S102、所述数据访问代理节点定位业务分组,通过对所述数据中的key值的一致性hash计算,获取数据分片复制集群的节点信息,并将所述数据发送至主存储节点存储;S103、从存储节点通过oplog系统异步同步主节点数据,保证数据同时存储在复制集群的每个存储节点上。根据本发明另一方面,其中在步骤S103后,该方法进一步包括:S104、业务读key-value数据,先将数据发送给数据访问代理节点;S105、代理节点定位业务分组,通过对key的一致性hash计算,获取数据分片复制集群的节点信息,选取集群负载最低一个节点,将请求发送给该节点,获取数据。根据本发明另一方面,该方法进一步包括:S105、数据访问节点与数据服务节点间通过连接池及长连接技术进行网络数据交互;S106、访问节点实时监控数据服务节点状态,一旦某个主存储节点失效后,选用从节点中数据复制最多的一个从节点充当主存储节点,实现数据写入故障动态迁移。本发明在通过采用一致性哈希算法对数据分片,实现在系统扩容时,只有少量数据失效,减少数据从数据库到缓存的迁移成本。数据分组管理,实现了多个业务公用一组缓存服务。使用复制集群技术,及分布式配置技术,系统无单点故障,提高了系统数据的可靠性,及可用性。连接池,长连接技术提高业务系统访问缓存系统数据网络传输速度。Key关联丰富的数据结构,复杂的业务数据计算直接可以在缓存中完成,不需要在硬盘上交互数据,大幅挺高业务数据计算速度。


下面结合附图及具体实施例对本发明再作进一步详细的说明:附图1所示为本发明所提出的一种key-value数据分布式缓存系统结构示意图;附图2所示为本发明所提出的一种key-value数据分布式缓存方法的流程图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。为了解决现有的数据分布缓存系统的缺陷,本发明的技术方案从以下几个方面对key-value数据分布式缓存系统的优化:1、一致性哈希算法的数据自动分片技术,当系统扩容时,加入新存储节点,只会导致少量数据失效,数据迁移成本小。2、分片数据采用复制集群存储技术,分片上的数据实时自动复制到集群中slave节点上,排除单点故障数据丢失。3、长连接,连接池网络存储数据技术,减少了数据在网络传输过程中的性能损耗,提高数据访问效率。4、故障自动迁移技术,当节点发生岩机时,自动检测节点状态,将数据访问请求自动转移到健康节点上,排除单点故障数据访问故障。5、支持key-value, value数据可以是链表,数组,跳跃表,哈希表等丰富数据结构,满足业务对数据精细控制需求。6、插件技术,可以灵活集成到各种开发语言,及平台。7、数据的分组管理,在同一数据集群中可以管理多组业务数据,分布式配置,配置自动生效技术也防止单点故障,提高系统运维的灵活性。图2描述了本发明提出的系统结构。如图所示,本发明提出的Key-value数据分布式缓存系统由key-value访问代理集群和key-value数据存储集群组成,集群分别支持水平扩充,其中key-value访问代理集群由多个访问代理节点组成,key-value数据存储集群由多个数据分片存储复制集群组成,其中数据访问代理节点用于发送节点业务存储请求,并将数据读写请求路由到目标数据存储节点,存储或者读取业务数据。数据分片存储复制集群中采用主从数据复制机制,用于确定数据不存在单点故障,读数据从多个从节点读取,并且确定读数据负载均衡。其中,数据访问代理节点进一步包括:Key value数据存取模块、存储分组配置模块、Key value存储分组模块、存储节点健康检测模块Key value数据存取组件,用于通过建立与存储集群各节点的通讯链路,实现数据请求网络协议解析与存储数据传送及读取;存储分组配置模块,用于解析存储集群中物理节点信息,并实时监测存储集群物理配置变化,自动加载存储节点;Key value存储分组模块,用于复制数据路由,通过一致性hash算法,自动计算数据实际存储的物理节点,实现数据访问目标物理节点的路由;存储节点健康检测模块,用于通过建立与数据存储集群中存储节点的心跳链路,实时监控存储集群各节点的工作状态,并切换主存储节点;其中,数据分片存储复制集群进一步包括:主存储节点和从存储节点,其中主存储节点用于数据读写请求,以及增量数据同步服务,维持与分片中其他节点的通讯链路,实现节点切换;从存储节点用于数据读请求,并实时从所述主存储节点上同步数据,维护数据的一致性,在所述主存储节点失效后,从存储节点切换成为主存储节点。此外,本发明还公开了一种采用key-value数据分布式缓存系统的数据缓存方法,其中该方法包括以下步骤,如图2所示:S101、业务写key-value数据,并将数据发送给数据访问代理节点;S102、所述数据访问代理节点定位业务分组,通过对key值的一致性hash计算,获取数据分片复制集群的节点信息,将数据发送至主存储节点存储,S103、从存储节点通过oplog系统异步同步主节点数据,保证数据同时存储在复制集群的每个存储节点上。其中,在步骤S103后,该方法进一步包括:S104、业务读key-value数据,先将数据发送给数据访问代理节点;S105、代理节点定位业务分组,通过对key值的一致性hash计算,获取数据分片复制集群的节点信息,选取所述复制集群中负载最低一个节点,将请求发送给该节点,获取数据。其中,该方法进一步包括:S105、数据访问节点与数据服务节点间通过连接池及长连接技术进行网络数据交互;S106、访问节点实时监控数据服务节点状态,一旦某个主存储节点失效后,选用从节点中数据复制最多的一个从节点充当主存储节点,实现数据写入故障动态迁移。由于数据存储节点之间,数据访问代理节点之间,无任何耦合关联,从而实现系统的水平扩容由于key-value数据访问,使用组件技术,使得数据访问节点可以灵活使用多种开发语言,多种平台,多种协议,提供服务。下面根据一具体实施方式
来说明本发明的实施过程。在视频评论系统中1、新发表视频评论时,通过key-value访问代理,以视频id为key,视频评论为value的key-value数据,由访问代理根据视频id计算出存储数据目标数据存储分片复制集群,由key-value访问代理将数据写入到目标数据存储分片复制集群的主存储节点,同时目标数据存储分片复制集群中的从节点采用oplog方式从主存储节点中同步视频评论数据,保持数据存储分片复制集群中的数据一致性。2、获取视频评论时,通过key-value访问代理,根据视频id,由访问代理计算出存储数据目标数据存储分片复制集群,由key-value访问代理从目标数据存储分片复制集群中从存储节点上获取视频评论数据,key-value访问代理会依据目标数据存储分片复制集群中从存储节点当前的负载状况,选择负载低的从存储节点上获取数据。3、当访问的视频评论数据不存在于key-value数据分布式缓存系统时,从数据库获取视频数据,按照步骤一将数据更新到key-value数据分布式缓存系统中,下次获取视频评论数据时,就可以按步骤二获取视频评论数据,通过以上步骤可极大的降低对视频评论数据库的访问压力,由于key-value数据分布式缓存系统数据存储在内存中,数据读写性能高,极大的提高了视频评论数据的访问效率。4、视频评论数据,以视频id为key,通过一致性哈希算法自动分布存储,实现对海量视频评论数据的缓存存储。在用户消息通知系统中1、有新消息发送给用户时,通过key-value访问代理,以用户id为key,用户消息为value的key-value,由访问代理根据用户id计算出存储数据目标数据存储分片复制集群,由key-value访问代理将数据写入到目标数据存储分片复制集群的主存储节点,同时目标数据存储分片复制集群中的从节点采用oplog方式从主存储节点中同步用户新消息数据,保持数据存储分片复制集群中的数据一致性。2、用户获取新消息时,通过key-value访问代理,根据用户id,由访问代理计算出存储数据目标数据存储分片复制集群,由key-value访问代理从目标数据存储分片复制集群中从存储节点上获取用户新消息数据,key-value访问代理会依据目标数据存储分片复制集群中从存储节点当前的负载状况,选择负载低的从存储节点上获取数据。本发明通过采用一致性哈希算法对数据分片,实现在系统扩容时,只有少量数据失效,减少数据从数据库到缓存的迁移成本。数据分组管理,实现了多个业务公用一组缓存服务。使用复制集群技术,及分布式配置技术,系统无单点故障,提高了系统数据的可靠性,及可用性。连接池,长连接技术提高业务系统访问缓存系统数据网络传输速度。Key关联丰富的数据结构,复杂的业务数据计算直接可以在缓存中完成,不需要在硬盘上交互数据,大幅挺高业务数据计算速度。综上所述,虽然本发明已以优选实施例披露如上,然而其并非用以限定本发明。本发明所属技术领域的普通技术人员,在不脱离本发明的精神和范围内,可作各种变动与修饰。因此,本发明的保护范围当视所附的权利要求所界定的范围为准。
权利要求
1.一种Key-value数据分布式缓存系统,包括key-value访问代理集群和key-value数据存储集群,其中key-value访问代理集群由多个数据访问代理节点组成,key-value数据存储集群由多个数据分片存储复制集群组成,其中 所述数据访问代理节点用于发送节点业务存储请求,并将数据读写请求路由到目标数据存储节点,存储或者读取业务数据; 所述数据分片存储复制集群中采用主从数据复制机制,用于确定数据不存在单点故障,并且从多个从节点读取,以确定读数据负载均衡。
2.如权利要求1所述的系统,其中,所述数据访问代理节点进一步包括:Key_value数据存取模块、存储分组配置模块、Key-value存储分组模块、存储节点健康检测模块,其中 所述Key-value数据存取模块,用于通过建立与存储集群各节点的通讯链路,实现数据请求网络协议解析与存储数据传送及读取; 所述存储分组配置模块,用于解析存储集群中物理节点信息,并实时监测存储集群物理配置变化,自动加载存储节点; 所述Key-value存储分组模块,用于复制数据路由,通过一致性hash算法,自动计算数据实际存储的物理节点,实现数据访问目标物理节点的路由; 所述存储节点健康检测模块,用于通过建立与数据存储集群中存储节点的心跳链路,实时监控存储集群各节点的工作状态,并切换主存储节点。
3.如权利要求1所述的系统,其中,数据分片存储复制集群进一步包括:主存储节点和从存储节点,其中 所述主存储节点用于数据读写请求,以及增量数据同步服务,维持与分片中其他节点的通讯链路,实现节点切换; 所述从存储节点用于数据读请求,并实时从所述主存储节点上同步数据,维护数据的一致性,在所述主存储节点失效后,从存储节点切换成为主存储节点。
4.一种采用权利要求1的key-value数据分布式缓存系统的数据缓存方法,其中该方法包括: .5101、业务写key-value数据,并将所述数据发送给数据访问代理节点; .5102、所述数据访问代理节点定位业务分组,通过对所述数据中的key值的一致性hash计算,获取数据分片复制集群的节点信息,并将所述数据发送至主存储节点存储; .5103、从存储节点通过oplog系统异步同步主节点数据,保证数据同时存储在复制集群的每个存储节点上。
5.如权利要求4所述的方法,该方法进一步包括: .5104、业务读key-value数据,先将数据发送给数据访问代理节点; .5105、代理节点定位业务分组,通过对key值的一致性hash计算,获取数据分片复制集群的节点信息,选取所述数据分片复制集群中负载最低一个节点,将请求发送给该节点,并获取数据。
6.如权利要求4所述的方法,该方法进一步包括: . 5105、数据访问节点与数据服务节点间通过连接池及长连接技术进行网络数据交互; .5106、访问节点实时监控数据服务节点状态,一旦某个主存储节点失效后,选用从节点中数据复制最多的一个从节点充当主存储节点,实现数据写入故障动态迁移。
全文摘要
本发明公开了一种Key-value数据分布式缓存系统及其方法,其中该系统包括key-value访问代理集群和key-value数据存储集群,其中key-value访问代理集群由多个数据访问代理节点组成,key-value数据存储集群由多个数据分片存储复制集群组成,其中所述数据访问代理节点用于发送节点业务存储请求,并将数据读写请求路由到目标数据存储节点,存储或者读取业务数据;所述数据分片存储复制集群中采用主从数据复制机制,用于确定数据不存在单点故障,读数据从多个从节点读取,并且确定读数据负载均衡。采用本发明所提出的技术方案,通过一致性hash算法,实现key-value数据自动分片存储,保证系统数据存储容量的水平扩充。
文档编号G06F17/30GK103078927SQ20121058650
公开日2013年5月1日 申请日期2012年12月28日 优先权日2012年12月28日
发明者张宇峰, 彭锦臻, 姚健, 潘柏宇, 卢述奇 申请人:合一网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1