一种跨机房同步分布式缓存集群的装置和方法制造方法及图纸

技术编号:23764398 阅读:18 留言:0更新日期:2020-04-11 19:04
一种跨机房同步分布式缓存集群的装置和方法,所述装置包括:普通节点;工作节点,所述工作节点还包括解析模块以及同步模块;协调模块;管理模块。所述装置和方法解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。

A device and method of synchronous distributed cache cluster across computer rooms

【技术实现步骤摘要】
一种跨机房同步分布式缓存集群的装置和方法
本专利技术涉及分布式数据库
,特别是涉及一种跨机房同步分布式缓存集群的装置和方法。
技术介绍
在大数据背景下,分布式数据库成为解决大数据瓶颈的重要手段,而如何实现分布式数据库的高可用性对于分布式数据库的应用性至关重要。随着“互联网+”时代的到来,互联网行业所需处理的数据量与日俱增,用户并发访问量也在快速增长,服务提供商为了保障线上服务,会优先考虑在异地机房部署同一套系统,当大量用户并发访问时起到分流作用。传统的跨机房分布式数据库系统是在不同的区域建立机房,设置独立的数据库服务器集群,只对对应区域内的用户数据进行存储和访问管理。当某一机房内的数据库服务器集群出现故障时需要断电维修,在排除故障后才能继续提供数据存储和访问服务,传统的跨机房分布式数据库系统存在数据读写操作可靠性低的缺点。近年来,随着信息化的飞速发展,服务质量也是大家要求越来越高。单机房的可靠性总是无法得到保证的,机房光缆被挖断的事情、机房停电事情常有发生,应用服务和数据往往需要部署到同城双机房或同城+异地三机房等多机房里,预防某一机房出现故障后依然可以对外提供可靠的服务。众所周知,在一个分布式环境下,分布式缓存是不可或缺的,其中redis则是绝大部分公司的首选。面对全新的多机房挑战,redis跨机房同步的业界案例非常少,如何实现跨机房分布式缓存集群是本专利技术核心技术所在。跨机房的分布式缓存集群的需求非常强烈,业界基本方案有如下几种:方案一、只处理了内网同步,无考虑多机房的方案,目前现有技术方案,例如codis、rediscluster属于内网同步,都不支持跨机房同步场景,所以就将2个机房环境通过网络互通互联的手动构建一个内网环境,然后使用内网环境进行同步数据。方案二、依托mysql数据库层做跨机房同步,规避redis同步方案,业务层再将数据库的数据转移到redis缓存里,应用系统需要为此做很大的改造方案三、通过应用系统接口的方式,对于redis数据的更新、删除、修改时,需要调用多个机房的数据同步接口,跟业务系统的严重耦合。第一个问题,方案一应用场景比较局限,master/slave模式,只能满足单向同步场景,比如A机房的数据同步给B机房,无法达到双向同步,更无法达到多个机房之间相互同步;第二个问题,方案一、对网络环境有很高的要求,必须是通过VPN或VPC等方式构建出内网环境;第三个问题,方案二依赖mysql数据同步,时效性没法满足,例如数据从A机房的数据库同步到B机房的数据后,什么时候刷到redis缓存里面?依赖一个异步任务外,而且也无法做到实时效果,导致数据一致性很难保证;第四个问题,方案三严重依赖业务系统,改造成本很高,没有Redis同步,就需要业务方去做很多的改造,去达到多机房部署,推动多机房部署难度大。第五个问题,时效性差,例如方案二、方案三无法满足redis缓存自动过期后通知其他机房之类的场景,所以对时效性要求高的场景是无法接受的。第六个问题:无法保证不掉单,毕竟是跨机房调用接口,一定失败率也会增加,当调用失败时需要重试之类的机制,严重影响业务系统运行效率;第七个问题:数据一致性问题,同一条记录操作可能发生在多个机房,当出现冲突数据时无法解决冲突。
技术实现思路
本专利技术旨在至少在一定程度上解决相关技术中的技术问题。为此,本专利技术的一个目的是提供一种跨机房同步分布式缓存集群的装置和方法,以解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。为了实现上述目的,本专利技术第一方面实施例的一种跨机房同步分布式缓存集群的装置,包括:普通节点;工作节点,所述工作节点还包括解析模块以及同步模块;协调模块;管理模块。另外,根据本专利技术上述应用于一种跨机房同步分布式缓存集群的装置还可以具有如下附加的技术特征:在本专利技术的一个实施例中,所述普通节点,设置为redis节点,选择redis的master节点当做同步源和同步目标。在本专利技术的一个实施例中,所述工作节点(Rotter-Node),负责将源redis数据同步给目标redis、上报监控数据及同步状态。所述解析模块,设置用于解析redis节点的RDB以及AOF;RDB为关系型数据库,AOF为appendonlyfile,为追加写入的日志文件。在本专利技术的一个实施例中,所述同步模块:设置用于根据同步策略进行同步处理;在本专利技术的一个实施例中,所述协调模块,设置用于选举和协调工作节点进行工作。在本专利技术的一个实施例中,所述管理模块,管理同步源及目标和同步策略、进行角色的总分配,将任务分给工作节点、收集同步状态及监控。在本专利技术的一个实施例中,所述一种跨机房同步分布式缓存集群的装置设置在n个机房中。当n=1,则可以进行单向同步;当n=2,则组成双向同步;当n>2,根据n动态扩容m个工作节点,m=n。当n≥2时,第一个机房的普通节点和第二个机房的同步模块相连接,第二个机房的普通节点和第三个机房的同步模块相连接,依次连接,直至最后第n个机房的普通节点和第一个机房的同步模块连接。本专利技术的第二个目的是提供一种跨机房同步分布式缓存集群的方法,以解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。为了实现上述目的,本专利技术第二方面实施例的一种跨机房同步分布式缓存集群的方法,包括以下步骤:S1:启动服务,工作节点启动后,上报节点的自身状态;S2:协调模块接收工作节点的节点信息,进行信息注册;S3:管理模块监听工作节点的状态变化;并根据状态变化确定工作节点已经启动;S4:管理模块检查是否有空闲的pipeline同步任务;S5:确定存在空闲的pipeline同步任务后,存储管理模块推送的配置信息;S6:如果有空闲的pipeline任务,则为工作节点分配一个pipeline任务,将pipeline任务和工作节点绑定后写入协调模块里;S7:工作节点监听到管理模块分配给自身的pipeline任务;S8:初始化配置,初始化普通节点的源、目标等配置信息,通过普通节点源的同步id(master_replid),偏移量(master_repl_offset)找到上次同步成功的位置—用于防止丢数据,通过普通节点目标的偏移量(target_offset)防止重复同步;S9:连接普通节点的源和目标,开始连接redis源和redis目标,如果连接失败则会重试,连接成功就会执行同步;S10:选择同步策略,所述同步策略包括:a、执行redis的dump数据同步;或b、执行增量同步;S11:确定是否选择同步策略a,若是,则进一步选择同步策略,所述进一步选择同步策略具体为按业务特性选择部分本文档来自技高网
...

【技术保护点】
1.一种跨机房同步分布式缓存集群的装置,其特征在于,包括:普通节点;工作节点,所述工作节点还包括解析模块以及同步模块;协调模块;管理模块。/n

【技术特征摘要】
1.一种跨机房同步分布式缓存集群的装置,其特征在于,包括:普通节点;工作节点,所述工作节点还包括解析模块以及同步模块;协调模块;管理模块。


2.如权利要求1所述的一种跨机房同步分布式缓存集群的装置,其特征在于,所述普通节点,设置为redis节点,选择redis的master节点当做同步源和同步目标;所述工作节点(Rotter-Node),负责将源redis数据同步给目标redis、上报监控数据及同步状态;所述解析模块,设置用于解析redis节点的RDB以及AOF;RDB为关系型数据库,AOF为appendonlyfile,为追加写入的日志文件;所述同步模块:设置用于根据同步策略进行同步处理;所述协调模块,设置用于选举和协调工作节点进行工作;所述管理模块,管理同步源及目标和同步策略、进行角色的总分配,将任务分给工作节点、收集同步状态及监控。


3.如权利要求1所述的一种跨机房同步分布式缓存集群的装置,其特征在于,所述一种跨机房同步分布式缓存集群的装置设置在n个机房中;当n=1,则可以进行单向同步;当n=2,则组成双向同步;当n>2,根据n动态扩容m个工作节点,m=n。


4.如权利要求1所述的一种跨机房同步分布式缓存集群的装置,其特征在于,当n≥2时,第一个机房的普通节点和第二个机房的同步模块相连接,第二个机房的普通节点和第三个机房的同步模块相连接,依次连接,直至最后第n个机房的普通节点和第一个机房的同步模块连接。


5.一种跨机房同步分布式缓存集群的方法,其特征在于,包括以下步骤:
S1:启动服务,工作节点启动后,上报节点的自身状态;
S2:协调模块接收工作节点的节点信息,进行信息注册;
S3:管理模块监听工作节点的状态变化;并根据状态变化确定工作节点已经启动;
S4:管理模块检查是否有空闲的pipeline同步任务;
S5:确定存在空闲的pipeline同步任务后,存储管理模块推送的配置信息;
S6:如果有空闲的pipeline任务,则为工作节点分配一个pipeline任务,将pipeline任务和工作节点绑定后写入协调模块里;
S7:工作节点监听到管理模块分配给自身的pipeline任务;
S8:初始化配置,初始化普通节点的源、目标等配置信息,通过普通节点源的同步id(master_replid),偏移量(master_repl_offset)找到上次同步成功的位置—用于防止丢数据,通过普通节点目标的偏移量(target_offset)防止重复同步;
S9:连接普通节点的源和目标,开始连接redis源和redis目标,如果连接失败则会重试,连接成功就会执行同步;
S10:选择同步策略,所述同步策略包括:a、执行redis的dump数据同步;或b、执行增量同步;
S11:确定是否选择同步策略a,若是,则进一步选择同步策略,所述进一步选择同步策略具体为按业务特性选择部分重要的dump同步策略,全量dum同步等策略;然后执行后续步骤;若否,直接执行后续步骤;
S12:进行过滤,所述过滤是通过系列过滤器组成的过滤器链执行;
S13:过滤完成,执行同步,源普通节点的数据同步至目标普通节点。


6.如权利要求5所述的一种跨机房同步分布式缓存集群的...

【专利技术属性】
技术研发人员:刘勤红
申请(专利权)人:北京禧云信息科技有限公司
类型:发明
国别省市:北京;11

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

1