一种zedis分布式缓存及服务器集群监控方法技术

技术编号:14116520 阅读:144 留言:0更新日期:2016-12-07 22:34
本发明专利技术提供了一种zedis分布式缓存及服务器集群监控方法,包括以下步骤:所述服务器判断模块读取所述服务器集群监控模块的redis服务器集群所需的完整信息;所述服务器判断模块将读取到的信息发送给所述客户端,所述客户端将读取redis服务器集群所需的完整信息,从每一个物理节点的完整信息抽取相对于其他物理节点唯一的信息,其中,所述信息包括ip地址与端口号;所述客户端通过接收到的信息生成固定的多个key,通过负载均衡核心类ConsistentHash算法生成对应多个hash码,用哈希码到物理节点的映射填充ConsistentHash的核心变量映射表形成哈希环;该zedis分布式缓存及服务器集群监控方法通过最少的配置、实现了集群的高可用、自动化治理,并能实现数据迁移、负载均衡,动态和稳定。

【技术实现步骤摘要】

本专利技术涉及数据缓存
,尤其涉及一种zedis分布式缓存及服务器集群监控方法
技术介绍
目前的数据缓存方案有redis集群方案及twitter方案。redis集群方案,由于推出时间比较新,在我们的方案提出时还未成熟和大规模使用,它提供了一种预分配桶的哈希算法,灵活性上不如一致性哈希算法,故障转移需要手动去分配。twitter方案,它直接在redis协议层做了代理,它能灵活配置并支持例如一致性哈希这样的自动算法,但是它是静态的分布式集群,没有支持redis节点自动故障转移的功能,而且这个代理本身的故障转移也需要开发自己去做。将redis集群及twitter结合起业,它除了提供缓存服务之外,还提供了一套管理工具去做数据迁移、负载均衡等事情。目前还提供了一整套完善的平台化工具,支持大规模的集群化部署,但是它的部署比较重,需要部署数据库、WEB系统,对于我们集群规模比较小的应用场景来说,应该起来不够灵活。以上方案或多或少都提供了分布式缓存的特性,但是他们都不是非常适合我们的应用场景,我们希望分布式缓存满足以下要求:a)节点的哈希是动态和稳定的,因此我们倾向于一致性哈希或者类似的哈希算法;b)同时,我们希望故障转移能自动化完成,包括数据迁移等,不需要运维手动介入;方案1、2、3都或多或少不能完全满足自动故障转移的要求。c)另外,我们希望这套集群方案跟我们现有的支撑运营平台能比较好地兼容。方案4就比较重,集成我们内部的平台难度比较大。因此,我亟需开发出一种通过最少的配置、实现了集群的高可用、自动化治理,并能实现数据迁移、负载均衡,动态和稳定的zedis分布式缓存及服务器集群监控方法。
技术实现思路
本专利技术要解决的技术问题是提供一种zedis分布式缓存及服务器集群监控方法,该zedis分布式缓存及服务器集群监控方法通过最少的配置、实现了集群的高可用、自动化治理,并能实现数据迁移、负载均衡,动态和稳定。为解决上述技术问题,本专利技术提供了一种zedis分布式缓存及服务器集群监控方法,提供zookeeper核心处理器、服务器集群监控模块、节点数据处理模块、数据恢复模块、客户端、服务端及数据存储服务器,所述zookeeper核心处理器包括服务器判断模块及服务器显示模块,所述zedis分布式缓存及服务器集群监控方法包括以下步骤:S1:所述服务器判断模块读取所述服务器集群监控模块的redis服务器集群所需的完整信息;S2:所述服务器判断模块将读取到的信息发送给所述客户端,所述客户端将读取redis服务器集群所需的完整信息,从每一个物理节点的完整信息抽取相对于其他物理节点唯一的信息,其中,所述信息包括ip地址与端口号;S3:所述客户端通过接收到的信息生成固定的多个key,通过负载均衡核心类ConsistentHash算法生成对应多个hash码,同一个信息生成的哈希码全都映射到同一个物理节点,用哈希码到物理节点的映射填充ConsistentHash的核心变量映射表形成哈希环;S4:所述哈希环与所述数据存储服务器连接完成数据备份与故障规避的读写过程;S5:所述故障转移处理模块、服务器集群监控模块及zookeeper核心处理器通过数据备份、规避故障节点和数据恢复实现故障转移;S6:所述服务器集群监控模块对集群服务器进行监控,并将监控得出的结果发送给zookeeper核心处理器,所述步骤S6的实现步骤包括:S601:读取zedis集群配置,建立物理节点对应的检测任务,把检测出的可用性变化情况发送给客户端;S602:初始化集群,构造服务器集群监控模块传入客户端的集群信息,所述服务器集群监控模块根据固定的配置规范读取所述集群信息并初始化;S603:所述服务器集群监控模块对每个读取到的不同的物理节点构造一个线程内部类RedisPing任务,调用所述“检测redis服务器是否可用”的策略的ping方法,检测物理节点的可用性;S604:根据监控结果,判断物理节点是否出现可用性变化,若物理节点出现可用性变化,从可用变为不可用,修改所述zookeeper核心处理器配置并通知客户端;若物理节点出现不可用性变化,从不可用变为可用,先数据恢复,然后再修改zookeeper核心处理器配置并通知所述客户端;其中,所述数据存储服务器的数据存储方式如下表所示:其中,所述主节点为通过负载均衡核心类ConsistentHash算法找到的最近的物理节点,备节点是主节点的下一个节点。优选地,所述步骤“数据备份与故障规避的读过程”的实现步骤包括:S401:所述读写代理模块根据key参数,通过哈希环找出主节点,并以此找到备节点;S402:判断主节点是否可用,如果主节点可用,则执行步骤S403,如果主节点不可用但备节点可用,执行步骤S404,如果主节点及备节点均不可用;S403:往主节点主数据库写并往备节点的主数据库写入;S404:往备节点的备用数据库和临时数据库写入;S405:写入其他可用节点的数据库;所述步骤“数据备份与故障规避的写过程”的实现步骤包括:S406:所述读写代理模块根据key参数获取主节点及备份节点;S407:判断主节点是否可用,如果主节点可用,执行步骤S408,如果主节点不可用但备节点可用,执行步骤S409,如果主节点及备节点均不可用,执行步骤S410;S408:从主节点读取;S409:从备节点读取;S410:从其他节点读取。优选地,所述客户端包括负载均衡处理模块,所述步骤S3中的“负载均衡核心类ConsistentHash算法”包括:所述负载均衡处理模块通过MurMurHash2算法接收参数key,生成并返回哈希码;所述负载均衡处理模块通过void_addNode算法接收节点S和一个原始参数key,用参数key生成多个哈希码,并将所有的哈希码全部映射到所述节点S,将映射存入TreeMap;所述负载均衡处理模块通过S_getClosestNode算法接收参数key,根据key生成hashCode,用TreeMap的tailMap算法,找到最近的节点并返回。优选地,所述服务器集群监控模块包括连接redis服务器所需的信息、表明节点可用性状态的表量及检测redis服务器是否可用的策略。优选地,所述检测redis服务器是否可用的策略包括:初始化所述服务器集群监控模块并根据信息与redis服务器建立连接;通过客户端的ping方法检测节点是否存活,再通过客户端的set方法,检查是否能正常存入数据,如果检查均通过则返回服务器可用,否则返回服务器不可用;连续N次调用pingOnce(),记录调用成功或失败比率并返回;所述服务器集群监控模块先调用一次pingOnce(),若返回结果与所述服务器集群监控模块一致,则redis服务器可用性状态无变化,并返回检测结果,若首次检测结果与所述服务器集群监控模块不一致,则调用checkStateRatio进行判断,以checkStateRatio返回结果为准,返回检测结果。优选地,所述哈希环包括Redis节点,Redis节点标号到Redis节点本身的映射表、集群的最大标号和最小标号。优选地,还包括步骤:所述服务器集群监控模块对集群服务器进行监控,并将监控得出的结果发送给zookeeper核心处理器,该步骤的实现步骤包括:本文档来自技高网
...
一种zedis分布式缓存及服务器集群监控方法

【技术保护点】
一种zedis分布式缓存及服务器集群监控方法,其特征在于:提供zookeeper核心处理器、服务器集群监控模块、节点数据处理模块、数据恢复模块、客户端、服务端及数据存储服务器,所述zookeeper核心处理器包括服务器判断模块及服务器显示模块,所述zedis分布式缓存及服务器集群监控方法包括以下步骤:S1:所述服务器判断模块读取所述服务器集群监控模块的redis服务器集群所需的完整信息;S2:所述服务器判断模块将读取到的信息发送给所述客户端,所述客户端将读取redis服务器集群所需的完整信息,从每一个物理节点的完整信息抽取相对于其他物理节点唯一的信息,其中,所述信息包括ip地址与端口号;S3:所述客户端通过接收到的信息生成固定的多个key,通过负载均衡核心类ConsistentHash算法生成对应多个hash码,同一个信息生成的哈希码全都映射到同一个物理节点,用哈希码到物理节点的映射填充ConsistentHash的核心变量映射表形成哈希环;S4:所述哈希环与所述数据存储服务器连接完成数据备份与故障规避的读写过程;S5:所述故障转移处理模块、服务器集群监控模块及zookeeper核心处理器通过数据备份、规避故障节点和数据恢复实现故障转移;S6:所述服务器集群监控模块对集群服务器进行监控,并将监控得出的结果发送给zookeeper核心处理器;所述步骤S6的实现步骤包括:S601:读取zedis集群配置,建立物理节点对应的检测任务,把检测出的可用性变化情况通过发送给客户端;S602:初始化集群,构造服务器集群监控模块传入客户端的集群信息,所述服务器集群监控模块根据固定的配置规范读取所述集群信息并初始化;S603:所述服务器集群监控模块对每个读取到的不同的物理节点构造一个线程内部类RedisPing任务,调用所述“检测redis服务器是否可用”的策略的ping方法,检测物理节点的可用性;S604:根据监控结果,判断物理节点是否出现可用性变化,若物理节点出现可用性变化,从可用变为不可用,修改所述zookeeper核心处理器配置并通知客户端;若物理节点出现不可用性变化,从不可用变为可用,先数据恢复,然后再修改zookeeper核心处理器配置并通知所述客户端;其中,所述数据存储服务器的数据存储方式如下表所示:其中,所述主节点为通过负载均衡核心类ConsistentHash算法找到的最近的物理节点,备节点是主节点的下一个节点。...

【技术特征摘要】
1.一种zedis分布式缓存及服务器集群监控方法,其特征在于:提供zookeeper核心处理器、服务器集群监控模块、节点数据处理模块、数据恢复模块、客户端、服务端及数据存储服务器,所述zookeeper核心处理器包括服务器判断模块及服务器显示模块,所述zedis分布式缓存及服务器集群监控方法包括以下步骤:S1:所述服务器判断模块读取所述服务器集群监控模块的redis服务器集群所需的完整信息;S2:所述服务器判断模块将读取到的信息发送给所述客户端,所述客户端将读取redis服务器集群所需的完整信息,从每一个物理节点的完整信息抽取相对于其他物理节点唯一的信息,其中,所述信息包括ip地址与端口号;S3:所述客户端通过接收到的信息生成固定的多个key,通过负载均衡核心类ConsistentHash算法生成对应多个hash码,同一个信息生成的哈希码全都映射到同一个物理节点,用哈希码到物理节点的映射填充ConsistentHash的核心变量映射表形成哈希环;S4:所述哈希环与所述数据存储服务器连接完成数据备份与故障规避的读写过程;S5:所述故障转移处理模块、服务器集群监控模块及zookeeper核心处理器通过数据备份、规避故障节点和数据恢复实现故障转移;S6:所述服务器集群监控模块对集群服务器进行监控,并将监控得出的结果发送给zookeeper核心处理器;所述步骤S6的实现步骤包括:S601:读取zedis集群配置,建立物理节点对应的检测任务,把检测出的可用性变化情况通过发送给客户端;S602:初始化集群,构造服务器集群监控模块传入客户端的集群信息,所述服务器集群监控模块根据固定的配置规范读取所述集群信息并初始化;S603:所述服务器集群监控模块对每个读取到的不同的物理节点构造一个线程内部类RedisPing任务,调用所述“检测redis服务器是否可用”的策略的ping方法,检测物理节点的可用性;S604:根据监控结果,判断物理节点是否出现可用性变化,若物理节点出现可用性变化,从可用变为不可用,修改所述zookeeper核心处理器配置并通知客户端;若物理节点出现不可用性变化,从不可用变为可用,先数据恢复,然后再修改zookeeper核心处理器配置并通知所述客户端;其中,所述数据存储服务器的数据存储方式如下表所示:其中,所述主节点为通过负载均衡核心类ConsistentHash算法找到的最近的物理节点,备节点是主节点的下一个节点。2.根据权利要求1所述的zedis分布式缓存及服务器集群监控方法,其特征在于:所述步骤“数据备份与故障规避的读过程”的实现步骤包括:S401:所述读写代理模块根据key参数,通过哈希环找出主节点,并以此找到备节点;S402:判断主节点是否可用,如果主节点可用,则执行步骤S403,如果主节点不可用但备节点可用,执行步骤S404,如果主节点及备节点均不可用;S403:往主节点主数据库写并往备节点的主数据库写入;S404:往备节点的备用数据库和临时数据库写入;S405:写入其他可用节点的数据库;所述步骤“数据备份与故障规避的写过程”的实现步骤包括:S406:所述读写代理模块根据key参数获取主节点及备份节点;S407:判断主节点是否可用,如果主节点可用,执行步骤S408,如果主节点不可用但备节点可用,执行步骤S409,如果主节点及备节点均不可用,执行步骤S410;S408:从主节点读取;S409:从备节点读取;S410:从其他节点读取。3.根据权利...

【专利技术属性】
技术研发人员:黄灿圳张华杰王国彬
申请(专利权)人:深圳市彬讯科技有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1