一种zedis分布式缓存方法与流程

文档序号:12751746阅读:来源:国知局

技术特征:

1.一种zedis分布式缓存方法,其特征在于:提供zookeeper核心处理器、服务器集群监控模块、节点数据处理模块、数据恢复模块、客户端、服务端及数据存储服务器,所述zookeeper核心处理器包括服务器判断模块及服务器显示模块,所述zedis分布式缓存方法包括以下步骤:

S1:所述服务器判断模块读取所述服务器集群监控模块的redis服务器集群所需的完整信息;

S2:所述服务器判断模块将读取到的信息发送给所述客户端,所述客户端将读取redis服务器集群所需的完整信息,从每一个物理节点的完整信息抽取相对于其他物理节点唯一的信息,其中,所述信息包括ip地址与端口号;

S3:所述客户端通过接收到的信息生成固定的多个key,通过负载均衡核心类ConsistentHash算法生成对应多个hash码,同一个信息生成的哈希码全都映射到同一个物理节点,用哈希码到物理节点的映射填充ConsistentHash的核心变量映射表形成哈希环;

S4:所述哈希环与所述数据存储服务器连接完成数据备份与故障规避的读写过程;

S5:所述故障转移处理模块、服务器集群监控模块及zookeeper核心处理器通过数据备份、规避故障节点和数据恢复实现故障转移;

所述步骤“数据备份与故障规避的读过程”的实现步骤包括:

S401:所述读写代理模块根据key参数,通过哈希环找出主节点,并以此找到备节点;

S402:判断主节点是否可用,如果主节点可用,则执行步骤S403,如果主节点不可用但备节点可用,执行步骤S404,如果主节点及备节点均不可用;

S403:往主节点主数据库写并往备节点的主数据库写入;

S404:往备节点的备用数据库和临时数据库写入;

S405:写入其他可用节点的数据库;

所述步骤“数据备份与故障规避的写过程”的实现步骤包括:

S406:所述读写代理模块根据key参数获取主节点及备份节点;

S407:判断主节点是否可用,如果主节点可用,执行步骤S408,如果主节点不可用但备节点可用,执行步骤S409,如果主节点及备节点均不可用,执行步骤S410;

S408:从主节点读取;

S409:从备节点读取;

S410:从其他节点读取;

其中,所述数据存储服务器的数据存储方式如下表所示:

其中,所述主节点为通过负载均衡核心类ConsistentHash算法找到的最近的物理节点,备节点是主节点的下一个节点。

2.根据权利要求1所述的zedis分布式缓存方法,其特征在于:所述客户端包括负载均衡处理模块,所述步骤S3中的“负载均衡核心类ConsistentHash算法”包括:

所述负载均衡处理模块通过MurMurHash2算法接收参数key,生成并返回哈希码;

所述负载均衡处理模块通过void_addNode算法接收节点S和一个原始参数key,用参数key生成多个哈希码,并将所有的哈希码全部映射到所述节点S,将映射存入TreeMap;

所述负载均衡处理模块通过S_getClosestNode算法接收参数key,根据key生成hashCode,用TreeMap的tailMap算法,找到最近的节点并返回。

3.根据权利要求1所述的zedis分布式缓存方法,其特征在于:所述服务器集群监控模块包括连接redis服务器所需的信息、表明节点可用性状态的表量及检测redis服务器是否可用的策略。

4.根据权利要求3所述的zedis分布式缓存方法,其特征在于:所述检测redis服务器是否可用的策略包括:初始化所述服务器集群监控模块并根据信息与redis服务器建立连接;

通过客户端的ping方法检测节点是否存活,再通过客户端的set方法,检查是否能正常存入数据,如果检查均通过则返回服务器可用,否则返回服务器不可用;

连续N次调用pingOnce(),记录调用成功或失败比率并返回;

所述服务器集群监控模块先调用一次pingOnce(),若返回结果与所述服务器集群监控模块一致,则redis服务器可用性状态无变化,并返回检测结果,若首次检测结果与所述服务器集群监控模块不一致,则调用checkStateRatio进行判断,以checkStateRatio返回结果为准,返回检测结果。

5.根据权利要求3所述的zedis分布式缓存方法,其特征在于:所述哈希环包括Redis节点,Redis节点标号到Redis节点本身的映射表、集群的最大标号和最小标号。

6.根据权利要求3所述的zedis分布式缓存方法,其特征在于:还包括步骤:所述服务器集群监控模块对集群服务器进行监控,并将监控得出的结果发送给zookeeper核心处理器,该步骤的实现步骤包括:

读取zedis集群配置,建立物理节点对应的检测任务,把检测出的可用性变化情况通过发送给客户端;

初始化集群,构造服务器集群监控模块传入客户端的集群信息,所述服务器集群监控模块根据固定的配置规范读取所述集群信息并初始化;

所述服务器集群监控模块对每个读取到的不同的物理节点构造一个线程内部类RedisPing任务,调用所述“检测redis服务器是否可用”的策略的ping方法,检测物理节点的可用性;

根据监控结果,判断物理节点是否出现可用性变化,若物理节点出现可用性变化,从可用变为不可用,修改所述zookeeper核心处理器配置并通知客户端;若物理节点出现不可用性变化,从不可用变为可用,先数据恢复,然后再修改zookeeper核心处理器配置并通知所述客户端。

7.根据权利要求1所述的zedis分布式缓存方法,其特征在于:所述步骤S5的实现步骤包括:

所述故障转移处理模块根据key参数生成哈希码并找到主节点,然后找到主节点的备节点,对主备节点进行相同的写操作,主节点=n,则备节点=n+1,写操作在主节点主数据库空间和备节点的备数据库空间一起进行。

8.根据权利要求1所述的zedis分布式缓存方法,其特征在于:所述步骤S5的“规避故障节点步骤”的实现步骤包括:

所述故障转移处理模块根据java代理拦截接口调用的数据,并通过key参数找到主节点,判断主节点是否可用,如果可用则在主节点上与数据存储服务器进行数据交换的工作;如果主节点不可用,则在备节点与数据存储服务器进行数据交换的工作;如果主节点和备节点均不可用,则在剩余的物理节点中,寻找可用的节点与数据存储服务器进行数据交换的工作。

9.根据权利要求1所述的zedis分布式缓存方法,其特征在于:所述步骤S5的“数据恢复”的实现步骤包括:

判断故障节点规避是否已经完成,如果已经完成,则进行数据恢复,否则续费进行故障节点规避;

找出恢复正常的节点相对的主节点和备节点,假设主数据库=n,恢复节点=n+2,恢复节点为目标节点,主节点=n+1,备节点=n+3;从备节点临时数据库空间恢复数据到目标节点主数据库空间,然后清空备节点临时数据库空间,从主节点主数据库空间恢复数据到目标节点备用数据库空间。

当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1