CN110990432A - 一种跨机房同步分布式缓存集群的装置和方法 - Google Patents

一种跨机房同步分布式缓存集群的装置和方法 Download PDF

Info

Publication number
CN110990432A
CN110990432A CN201911125859.4A CN201911125859A CN110990432A CN 110990432 A CN110990432 A CN 110990432A CN 201911125859 A CN201911125859 A CN 201911125859A CN 110990432 A CN110990432 A CN 110990432A
Authority
CN
China
Prior art keywords
synchronization
redis
node
machine room
data
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.)
Granted
Application number
CN201911125859.4A
Other languages
English (en)
Other versions
CN110990432B (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.)
Lin Shangyu
Original Assignee
Beijing Xiyun Information Technology Co Ltd
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 Beijing Xiyun Information Technology Co Ltd filed Critical Beijing Xiyun Information Technology Co Ltd
Priority to CN201911125859.4A priority Critical patent/CN110990432B/zh
Publication of CN110990432A publication Critical patent/CN110990432A/zh
Application granted granted Critical
Publication of CN110990432B publication Critical patent/CN110990432B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Hardware Redundancy (AREA)

Abstract

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

Description

一种跨机房同步分布式缓存集群的装置和方法
技术领域
本发明涉及分布式数据库技术领域,特别是涉及一种跨机房同步分布式缓存集群的装置和方法。
背景技术
在大数据背景下,分布式数据库成为解决大数据瓶颈的重要手段,而如何实现分布式数据库的高可用性对于分布式数据库的应用性至关重要。随着“互联网+”时代的到来,互联网行业所需处理的数据量与日俱增,用户并发访问量也在快速增长,服务提供商为了保障线上服务,会优先考虑在异地机房部署同一套系统,当大量用户并发访问时起到分流作用。传统的跨机房分布式数据库系统是在不同的区域建立机房,设置独立的数据库服务器集群,只对对应区域内的用户数据进行存储和访问管理。当某一机房内的数据库服务器集群出现故障时需要断电维修,在排除故障后才能继续提供数据存储和访问服务,传统的跨机房分布式数据库系统存在数据读写操作可靠性低的缺点。近年来,随着信息化的飞速发展,服务质量也是大家要求越来越高。单机房的可靠性总是无法得到保证的,机房光缆被挖断的事情、机房停电事情常有发生,应用服务和数据往往需要部署到同城双机房或同城+异地三机房等多机房里,预防某一机房出现故障后依然可以对外提供可靠的服务。
众所周知,在一个分布式环境下,分布式缓存是不可或缺的,其中redis则是绝大部分公司的首选。面对全新的多机房挑战,redis跨机房同步的业界案例非常少,如何实现跨机房分布式缓存集群是本发明核心技术所在。
跨机房的分布式缓存集群的需求非常强烈,业界基本方案有如下几种:
方案一、只处理了内网同步,无考虑多机房的方案,目前现有技术方案,例如codis、redis cluster属于内网同步,都不支持跨机房同步场景,所以就将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为append only file,为追加写入的日志文件。
在本发明的一个实施例中,所述同步模块:设置用于根据同步策略进行同步处理;
在本发明的一个实施例中,所述协调模块,设置用于选举和协调工作节点进行工作。
在本发明的一个实施例中,所述管理模块,管理同步源及目标和同步策略、进行角色的总分配,将任务分给工作节点、收集同步状态及监控。
在本发明的一个实施例中,所述一种跨机房同步分布式缓存集群的装置设置在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,若是,则进一步选择同步策略,所述进一步选择同步策略具体为按业务特性选择部分重要的dump同步策略,全量dum同步等策略;然后执行后续步骤;若否,直接执行后续步骤;
S12:进行过滤,所述过滤是通过系列过滤器组成的过滤器链执行;
S13:过滤完成,执行同步,源普通节点的数据同步至目标普通节点
在本发明的一个实施例中,所述步骤S12中过滤器链具有两种形式:FilterChain以及DumpFilterChain;所述FilterChain所包括的系列过滤器包括:ParseEventFilter、DBFilter、KeyFilter、CircleSyncFilter、MultiThreadFilter、OvertimeFilter、DeleteKeyFilter、RateLimitFilter、SendTargetFilter、MonitorFilter、ComputeRateFilter;所述DumpFilterChain所包括的系列过滤器包括:ParseEventFilter、DumpFilter、DBFilter、KeyFilter、RateLimitFilter、SendTargetFilter、ComputeRateFilter。
所述ParseEventFilter:转换Redis replicator事件。
所述redis DB过滤器,用于选择redis数据库,可以方便灵活支持多个DB
所述key Filter过滤器,方便精细化管理,触达到redis的每个key,包括忽略某些key,指定某些key两个维度的策略
所述CircleSyncFilter:引入回环key的Filter的目的,是为了防止同步时死循环的出现,在进行数据同步时,会为每个指令增加一个copy_key,该key会一同被同步到目标Redis,当目标Redis做反向同步时,会先校验需要同步的key是否存在copy_key,如果存在,即该key不做同步,并删除copy_key
所述key_copy_filter过滤器,为了避免重复同步,对同步过的数据进行过滤,有效保证了数据一致性。
所述OvertimeFilter:发送给target之前需要判断是否还在有效期内
所述DeleteKeyFilter:delete key保护时间:1、A机房redis执行del key操作;2、rotter将del key同步到B机房,同时在B机房redis写一条记录,将del key记下来,过期时间两分钟;3、B机房从数据库读到otter尚未同步的数据并写到redis;4、rotter判断B机房的redis key是刚被删除的,不会同步A机房。5、A机房从数据库读到新的数据写到redis,rotter将redis key同步到B机房。经过上述操作,A机房redis、A机房数据库、B机房redis都是新的正确的数据
所述RateLimitFilter:处理同步数据时的速率和带宽。
所述MonitorFilter:监控正在同步哪些key,目前只是打印日志,以后可能会上报管理端
所述DumpFilter:全量dump策略:0-不dump;1-部分key dump;2-全量dump
所述MultiThreadFilter:同步的时候,可以指定线程。
本发明的第三个目的是提供一种跨机房同步分布式缓存集群的装置和方法,以解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。
本发明跨机房同步分布式缓存集群的装置和方法的数据可靠性是通过内存和磁盘混合队列策略来实现。
1、内存队列(memoryQueue)
1)默认内存队列长度:100;
2)使用ArrayBlockingQueue作为内存队列的容器。
2、其中磁盘方面设计两种文件:数据文件和索引文件
数据文件:包括多项数据;索引文件:包括redisOffset、dataOffset、dataLength。所述redisOffset为普通节点redis主同步给工作节点的偏移值,所述dataOffset为同步指令存储在磁盘文件的偏移值,所述dataLength为指令的长度。
3、属性diskMode:首先判断是否为磁盘模式,只有在磁盘模式下,同步指令才会入磁盘队列。
本发明的第四个目的是提供一种跨机房同步分布式缓存集群的装置和方法,以解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。
本发明的有益效果在于:第一,不仅解决了两个机房的双向同步,更是实现了多个机房之间相互同步;
第二,降低了网络环境的要求,不再局限内网模式,同样适应公网环境、专线模式;
第三,独善其身,无需依附数据库之类跨机房的同步,更无须使用定时任务将数据库的数据刷到redis里等等,减少了累赘的环节。
第四,几乎无需业务系统改造,接入方式和普通redis的一样,接入成本大大降低。
第五,兼容性好,实现了redis所有的事件,一切遵循了原生redis的事件,包括redis缓存自动过期等事件。
第六:保证了不掉单,架构实现了失败重传,不会影响业务系统的运行效率和性能损耗;
第七:解决了数据一致性问题,同一条记录操作可能发生在多个机房,当出现冲突数据时,提供了根据业务场景选择不同的策略去解决冲突。
附图说明
图1是根据本发明一个实施例的一种跨机房同步分布式缓存集群的装置的示意图;
图2是根据本发明一个实施例的一种跨机房同步分布式缓存集群的方法流程图;
图3是根据本发明一个实施例的一种跨机房同步分布式缓存集群的方法中给工作节点分配任务的流程图;
图4是根据本发明一个实施例的一种跨机房同步分布式缓存集群的方法中监控的流程图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。
下面参考附图描述根据本发明实施例的用于跨机房同步分布式缓存集群的装置和方法。
图1是根据本发明一个实施例的一种跨机房同步分布式缓存集群的装置的示意图。如图1所示,该系统包括:本发明旨在至少在一定程度上解决相关技术中的技术问题。为此,本发明的一个目的是提供一种跨机房同步分布式缓存集群的装置和方法,以解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。
为了实现上述目的,本发明第一方面实施例的一种跨机房同步分布式缓存集群的装置,包括:普通节点;工作节点,所述工作节点还包括解析模块以及同步模块;协调模块;管理模块。
进一步地:在本发明的一个实施例中,所述普通节点,设置为redis节点,选择redis的master节点当做同步源和同步目标。
在本发明的一个实施例中,所述工作节点(Rotter-Node),负责将源redis数据同步给目标redis、上报监控数据及同步状态。
所述解析模块,设置用于解析redis节点的RDB以及AOF;RDB为关系型数据库,AOF为append only file,为追加写入的日志文件。
在本发明的一个实施例中,所述同步模块:设置用于根据同步策略进行同步处理;
在本发明的一个实施例中,所述协调模块,设置用于选举和协调工作节点进行工作。
在本发明的一个实施例中,所述管理模块,管理同步源及目标和同步策略、进行角色的总分配,将任务分给工作节点、收集同步状态及监控。
在本发明的一个实施例中,所述一种跨机房同步分布式缓存集群的装置设置在n个机房中。当n=1,则可以进行单向同步;当n=2,则组成双向同步;当n>2,根据n动态扩容m个工作节点,m=n。
当n≥2时,第一个机房的普通节点和第二个机房的同步模块相连接,第二个机房的普通节点和第三个机房的同步模块相连接,依次连接,直至最后第n个机房的普通节点和第一个机房的同步模块连接。
图2是根据本发明一个实施例的一种跨机房同步分布式缓存集群的方法流程图。如图2所示,本发明的第二个目的是提供一种跨机房同步分布式缓存集群的方法,以解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。
为了实现上述目的,本发明第二方面实施例的一种跨机房同步分布式缓存集群的方法,包括以下步骤:
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:过滤完成,执行同步,源普通节点的数据同步至目标普通节点
在本发明的一个实施例中,所述步骤S12中过滤器链具有两种形式:FilterChain以及DumpFilterChain;所述FilterChain所包括的系列过滤器包括:ParseEventFilter、DBFilter、KeyFilter、CircleSyncFilter、MultiThreadFilter、OvertimeFilter、DeleteKeyFilter、RateLimitFilter、SendTargetFilter、MonitorFilter、ComputeRateFilter;所述DumpFilterChain所包括的系列过滤器包括:ParseEventFilter、DumpFilter、DBFilter、KeyFilter、RateLimitFilter、SendTargetFilter、ComputeRateFilter。
所述ParseEventFilter:转换Redis replicator事件。
所述redis DB过滤器,用于选择redis数据库,可以方便灵活支持多个DB。
所述key Filter过滤器,方便精细化管理,触达到redis的每个key,包括忽略某些key,指定某些key两个维度的策略。
所述CircleSyncFilter:引入回环key的Filter的目的,是为了防止同步时死循环的出现,在进行数据同步时,会为每个指令增加一个copy_key,该key会一同被同步到目标Redis,当目标Redis做反向同步时,会先校验需要同步的key是否存在copy_key,如果存在,即该key不做同步,并删除copy_key。
所述key_copy_filter过滤器,为了避免重复同步,对同步过的数据进行过滤,有效保证了数据一致性。
所述OvertimeFilter:发送给target之前需要判断是否还在有效期内。
所述DeleteKeyFilter:delete key保护时间:1、A机房redis执行del key操作;2、rotter将del key同步到B机房,同时在B机房redis写一条记录,将del key记下来,过期时间两分钟;3、B机房从数据库读到otter尚未同步的数据并写到redis;4、rotter判断B机房的redis key是刚被删除的,不会同步A机房。5、A机房从数据库读到新的数据写到redis,rotter将redis key同步到B机房。经过上述操作,A机房redis、A机房数据库、B机房redis都是新的正确的数据
所述RateLimitFilter:处理同步数据时的速率和带宽。
所述MonitorFilter:监控正在同步哪些key,目前只是打印日志,以后可能会上报管理端。
所述DumpFilter:全量dump策略:0-不dump;1-部分key dump;2-全量dump
所述MultiThreadFilter:同步的时候,可以指定线程。
本发明的第三个目的是提供一种跨机房同步分布式缓存集群的装置和方法,以解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性。
本发明跨机房同步分布式缓存集群的装置和方法的数据可靠性是通过内存和磁盘混合队列策略来实现。
1、内存队列(memoryQueue)
1)默认内存队列长度:100;
2)使用ArrayBlockingQueue作为内存队列的容器。
2、其中磁盘方面设计两种文件:数据文件和索引文件
数据文件:包括多项数据;索引文件:包括redisOffset、dataOffset、dataLength。所述redisOffset为普通节点redis主同步给工作节点的偏移值,所述dataOffset为同步指令存储在磁盘文件的偏移值,所述dataLength为指令的长度。
3、属性diskMode:首先判断是否为磁盘模式,只有在磁盘模式下,同步指令才会入磁盘队列。
图3是根据本发明一个实施例的一种跨机房同步分布式缓存集群的方法中给工作节点分配任务的流程图
分配rotter-node的规则:
1、查找空闲rotter-node
第一优先级使用当前的rotter-node–比如对运行中的rotter-node节点,修改部分策略,再次启动后会优先选择当前的rotter-node继续工作,这样大大减少了数据的交换成本,提高实时性,可以说是秒级生效。
第二优先级使用上一次的node--当前同步任务已停止,再次启动,就会选中第三优先级,从当前机房查找空闲node
2、再查找队列积压小的rotter-node,充分利用服务器资源
3、最后查找同步不超过3个pipeline任务的rotter-node,尽量确保每个rotter-node可以平稳运行。
4、如果没有选出待执行的rotter-node,就会报警出来需要扩展rotter-node数量。
图4是根据本发明一个实施例的一种跨机房同步分布式缓存集群的方法中监控的流程图
01:rotter-node任何状态都会同步给zookeeper,因为zookeeper有非常好的数据一致保证和快速让rotter-manager监听到。
02:rotter-manager会感知到rotter-node在zookeeper中状态,一旦监听到rotter-node有异常,会进行二次健康检查,确认rotter-node是否真的出现故障。
03:如果rotter-node真的出现故障,则将其踢掉,重新分配rotter-node。
04:rotter-node上报同步时间、同步位置、同步速率、队列积压情况等信息。
05:rotter-manager接收步时间、同步位置、同步速率、队列积压情况等信息。
06:当网络中断或数据处理失败时,rotter-node除了重试同步外,还会立马上报失败信息,rotter-manager接收失败信息就会立马报警。
本发明解决跨机房分布式缓存数据同步,降低面对多机房的情况下使用分布式缓存人力和时间成本,利用现有redis接入流程就可以实现多机房同步,几乎对业务系统无任何入侵性,就如单机房内使用redis分布式缓存一样。
本发明的有益效果在于:第一,不仅解决了两个机房的双向同步,更是实现了多个机房之间相互同步;
第二,降低了网络环境的要求,不再局限内网模式,同样适应公网环境、专线模式;
第三,独善其身,无需依附数据库之类跨机房的同步,更无须使用定时任务将数据库的数据刷到redis里等等,减少了累赘的环节。
第四,几乎无需业务系统改造,接入方式和普通redis的一样,接入成本大大降低。
第五,兼容性好,实现了redis所有的事件,一切遵循了原生redis的事件,包括redis缓存自动过期等事件。
第六:保证了不掉单,架构实现了失败重传,不会影响业务系统的运行效率和性能损耗;
第七:解决了数据一致性问题,同一条记录操作可能发生在多个机房,当出现冲突数据时,提供了根据业务场景选择不同的策略去解决冲突。
虽然已经参考优选实施例对本发明进行了描述,但在不脱离本发明的范围的情况下,可以对其进行各种改进并且可以用等效物替换其中的部件。尤其是,只要不存在结构冲突,各个实施例中所提到的各项技术特征均可以任意方式组合起来。以上仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。

Claims (9)

1.一种跨机房同步分布式缓存集群的装置,其特征在于,包括:普通节点;工作节点,所述工作节点还包括解析模块以及同步模块;协调模块;管理模块。
2.如权利要求1所述的一种跨机房同步分布式缓存集群的装置,其特征在于,所述普通节点,设置为redis节点,选择redis的master节点当做同步源和同步目标;所述工作节点(Rotter-Node),负责将源redis数据同步给目标redis、上报监控数据及同步状态;所述解析模块,设置用于解析redis节点的RDB以及AOF;RDB为关系型数据库,AOF为append onlyfile,为追加写入的日志文件;所述同步模块:设置用于根据同步策略进行同步处理;所述协调模块,设置用于选举和协调工作节点进行工作;所述管理模块,管理同步源及目标和同步策略、进行角色的总分配,将任务分给工作节点、收集同步状态及监控。
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所述的一种跨机房同步分布式缓存集群的方法,其特征在于,所述步骤S12中过滤器链形式为:FilterChain;所述FilterChain所包括的系列过滤器包括:ParseEventFilter、DBFilter、KeyFilter、CircleSyncFilter、MultiThreadFilter、OvertimeFilter、DeleteKeyFilter、RateLimitFilter、SendTargetFilter、MonitorFilter、ComputeRateFilter。
7.如权利要求5所述的一种跨机房同步分布式缓存集群的方法,其特征在于,所述步骤S12中过滤器链形式为:DumpFilterChain;所述DumpFilterChain所包括的系列过滤器包括:ParseEventFilter、DumpFilter、DBFilter、KeyFilter、RateLimitFilter、SendTargetFilter、ComputeRateFilter。
8.如权利要求6-7中任一项所述的一种跨机房同步分布式缓存集群的方法,其特征在于,所述ParseEventFilter:转换Redis replicator事件;
所述redis DB过滤器,用于选择redis数据库,可以方便灵活支持多个DB;
所述key Filter过滤器,方便精细化管理,触达到redis的每个key,包括忽略某些key,指定某些key两个维度的策略;
所述CircleSyncFilter:引入回环key的Filter的目的,是为了防止同步时死循环的出现,在进行数据同步时,会为每个指令增加一个copy_key,该key会一同被同步到目标Redis,当目标Redis做反向同步时,会先校验需要同步的key是否存在copy_key,如果存在,即该key不做同步,并删除copy_key;
所述key_copy_filter过滤器,为了避免重复同步,对同步过的数据进行过滤,有效保证了数据一致性;
所述OvertimeFilter:发送给target之前需要判断是否还在有效期内;
所述DeleteKeyFilter:delete key保护时间;
所述RateLimitFilter:处理同步数据时的速率和带宽;
所述MonitorFilter:监控正在同步哪些key,目前只是打印日志,以后可能会上报管理端;
所述DumpFilter:全量dump策略:0-不dump;1-部分key dump;2-全量dump;
所述MultiThreadFilter:同步的时候,可以指定线程。
9.如权利要求8所述的一种跨机房同步分布式缓存集群的方法,其特征在于,所述DeleteKeyFilter,具体工作步骤为:1)、A机房redis执行del key操作;2)、rotter将delkey同步到B机房,同时在B机房redis写一条记录,将del key记下来,过期时间两分钟;3)、B机房从数据库读到otter尚未同步的数据并写到redis;4)、rotter判断B机房的redis key是刚被删除的,不会同步A机房;5)、A机房从数据库读到新的数据写到redis,rotter将redis key同步到B机房;经过上述操作,A机房redis、A机房数据库、B机房redis都是新的正确的数据。
CN201911125859.4A 2019-11-18 2019-11-18 一种跨机房同步分布式缓存集群的装置和方法 Active CN110990432B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911125859.4A CN110990432B (zh) 2019-11-18 2019-11-18 一种跨机房同步分布式缓存集群的装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911125859.4A CN110990432B (zh) 2019-11-18 2019-11-18 一种跨机房同步分布式缓存集群的装置和方法

Publications (2)

Publication Number Publication Date
CN110990432A true CN110990432A (zh) 2020-04-10
CN110990432B CN110990432B (zh) 2024-05-03

Family

ID=70084725

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911125859.4A Active CN110990432B (zh) 2019-11-18 2019-11-18 一种跨机房同步分布式缓存集群的装置和方法

Country Status (1)

Country Link
CN (1) CN110990432B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930570A (zh) * 2020-08-17 2020-11-13 湖南快乐阳光互动娱乐传媒有限公司 一种多机房数据库高可用的处理系统及处理方法
CN112052230A (zh) * 2020-09-02 2020-12-08 掌阅科技股份有限公司 多机房数据同步方法、计算设备及存储介质
CN112328685A (zh) * 2020-11-05 2021-02-05 浪潮云信息技术股份公司 一种全对等分布式数据库数据同步方法
CN112422628A (zh) * 2020-10-19 2021-02-26 天翼电子商务有限公司 Redis-canal跨机房缓存同步系统
CN112925848A (zh) * 2021-02-23 2021-06-08 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN113064766A (zh) * 2021-05-07 2021-07-02 数字广东网络建设有限公司 数据备份方法、装置、设备及存储介质
CN113157813A (zh) * 2021-05-27 2021-07-23 山东新一代信息产业技术研究院有限公司 用于实现数据库双向同步的同步节点装置
CN113392132A (zh) * 2021-05-07 2021-09-14 杭州数知梦科技有限公司 Iot场景的分布式缓存方法及系统
CN114003180A (zh) * 2021-11-11 2022-02-01 中国建设银行股份有限公司 一种基于跨机房Hadoop集群的数据处理方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150248350A1 (en) * 2014-03-03 2015-09-03 Tmaxsoft. Co., Ltd. Apparatus and method for managing cache in cache distributed environment
CN106341454A (zh) * 2016-08-23 2017-01-18 世纪龙信息网络有限责任公司 跨机房多活分布式数据库管理系统和方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150248350A1 (en) * 2014-03-03 2015-09-03 Tmaxsoft. Co., Ltd. Apparatus and method for managing cache in cache distributed environment
CN106341454A (zh) * 2016-08-23 2017-01-18 世纪龙信息网络有限责任公司 跨机房多活分布式数据库管理系统和方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111930570A (zh) * 2020-08-17 2020-11-13 湖南快乐阳光互动娱乐传媒有限公司 一种多机房数据库高可用的处理系统及处理方法
CN112052230A (zh) * 2020-09-02 2020-12-08 掌阅科技股份有限公司 多机房数据同步方法、计算设备及存储介质
CN112052230B (zh) * 2020-09-02 2024-03-15 掌阅科技股份有限公司 多机房数据同步方法、计算设备及存储介质
CN112422628A (zh) * 2020-10-19 2021-02-26 天翼电子商务有限公司 Redis-canal跨机房缓存同步系统
CN112328685A (zh) * 2020-11-05 2021-02-05 浪潮云信息技术股份公司 一种全对等分布式数据库数据同步方法
CN112925848A (zh) * 2021-02-23 2021-06-08 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN112925848B (zh) * 2021-02-23 2024-02-06 马上消费金融股份有限公司 一种数据同步方法、装置、设备及可读存储介质
CN113064766A (zh) * 2021-05-07 2021-07-02 数字广东网络建设有限公司 数据备份方法、装置、设备及存储介质
CN113392132A (zh) * 2021-05-07 2021-09-14 杭州数知梦科技有限公司 Iot场景的分布式缓存方法及系统
CN113392132B (zh) * 2021-05-07 2023-04-11 杭州数知梦科技有限公司 Iot场景的分布式缓存方法及系统
CN113157813A (zh) * 2021-05-27 2021-07-23 山东新一代信息产业技术研究院有限公司 用于实现数据库双向同步的同步节点装置
CN114003180A (zh) * 2021-11-11 2022-02-01 中国建设银行股份有限公司 一种基于跨机房Hadoop集群的数据处理方法及装置

Also Published As

Publication number Publication date
CN110990432B (zh) 2024-05-03

Similar Documents

Publication Publication Date Title
CN110990432A (zh) 一种跨机房同步分布式缓存集群的装置和方法
CN111723160B (zh) 一种多源异构增量数据同步方法及系统
CN107391628B (zh) 数据同步方法及装置
WO2019154394A1 (zh) 分布式数据库集群系统、数据同步方法及存储介质
US10831741B2 (en) Log-shipping data replication with early log record fetching
US8756196B2 (en) Propagating tables while preserving cyclic foreign key relationships
US8103840B2 (en) Snapshot mechanism and method thereof
CN103207867B (zh) 处理数据块的方法、发起恢复操作的方法和节点
CN108509462B (zh) 一种同步活动事务表的方法及装置
CN108345617B (zh) 一种数据同步方法、装置以及电子设备
JP2007241486A (ja) 記憶装置システム
CN109325016B (zh) 数据迁移方法、装置、介质及电子设备
CN109933632B (zh) 一种数据库的数据迁移方法、装置及设备
US20130086418A1 (en) Data processing failure recovery method, system and program
CN109522364B (zh) 一种异地数据双向同步方法及系统
CN108140035B (zh) 分布式系统的数据库复制方法及装置
CN112612850A (zh) 数据同步方法及装置
CN109697112B (zh) 分布式集约化一站式作业系统和实现方法
CN110196788B (zh) 一种数据读取方法、装置、系统及存储介质
CN102597995B (zh) 同步数据库和非数据库资源
CN111404737B (zh) 一种容灾处理方法以及相关装置
US11042454B1 (en) Restoration of a data source
CN110309224A (zh) 一种数据复制方法及装置
CN111581013A (zh) 基于元数据和影子文件的系统信息备份与重构方法
JP5465401B2 (ja) ファイル管理方法、装置及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20240401

Address after: Unit 304, Building 1-4, Qishanyuan, Shangjie Town, Minhou County, Fuzhou City, Fujian Province, 350000

Applicant after: Lin Shangyu

Country or region after: China

Address before: Room 4-016, 4th floor, building 1, yard 88, Nongda South Road, Haidian District, Beijing 100094

Applicant before: Beijing Xiyun Information Technology Co.,Ltd.

Country or region before: China

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant