首页 / 专利库 / 电脑零配件 / 接口 / 用户界面 / web界面 / 一种基于消息队列的Redis集群海量数据快速清理系统及方法

一种基于消息队列的Redis集群海量数据快速清理系统及方法

阅读:869发布:2020-05-11

专利汇可以提供一种基于消息队列的Redis集群海量数据快速清理系统及方法专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种基于消息队列的Redis集群海量数据快速清理系统及方法,该系统包括管理 节点 、Redis集群节点、消息队列节点和临时缓存节点;Redis集群节点:在不同的 服务器 上部署Redis cluster服务,至少部署三个Redis主库,每个Redis主库至少对应1个Redis从库;消息队列节点:在不同的服务器上部署消息队列分布式集群作为对Redis键值进行处理的中间载体;临时缓存节点:在两台服务器上分别部署Pika主库和Pika从库,用于存储Redis集群清理的数据;管理节点:存储所有元信息,同时部署Web应用服务, 访问 Redis集群、消息队列集群和Pika主库,对Redis键值进行删除处理。本发明的处理速度接近内存级速度,可以实现快速清理海量数据,使用简单可靠,对Redis集群服务影响小,可以实现数据一键回滚。,下面是一种基于消息队列的Redis集群海量数据快速清理系统及方法专利的具体信息内容。

1.一种基于消息队列的Redis集群海量数据快速清理系统,其特征在于,该系统包括管理节点、Redis集群节点、消息队列节点和临时缓存节点;
Redis集群节点:在不同的服务器上部署Redis cluster服务,至少部署三个Redis主库,每个Redis主库至少对应1个Redis从库;不同的Redis主库端口不同,Redis主库和对应的Redis从库端口一致;
消息队列节点:在不同的服务器上部署消息队列分布式集群,服务器为IO型服务器,采用支持分布式和横向扩展的消息队列存储方案,设置两副本,部署三个分片,消息队列分布式集群作为对Redis键值进行处理的中间载体;
临时缓存节点:在两台服务器上分别部署Pika主库和Pika从库,端口号一致,用于存储Redis集群清理的数据,采用Pika作为存储方案;
管理节点:存储所有元信息,包括Redis集群元信息、消息队列元信息、临时缓存元信息和缓存数据统计信息,所述Redis集群元信息包括:Redis集群中所有Redis主库的IP和端口,以及每个Redis集群的集群标识符,集群标识符采用Redis集群对应的业务名称,不同的Redis集群,集群标识符不同;消息队列元信息包括:消息队列集群中所有分片的IP、端口;
临时缓存元信息包括:Pika主库的IP、端口和密码;缓存数据统计信息包括:键值前缀、键值数量和执行时间;所述键值前缀是Redis集群中某一类Key的前缀,一个键值前缀可以匹配到一个或者多个Key;所述执行时间包括删除某个键值前缀匹配到的所有键值的开始时间点和完成时间点;同时,在管理节点上部署Web应用服务,访问Redis集群、消息队列集群和Pika主库,对Redis键值进行删除处理;
管理节点包含键值清理模,所述键值清理模块,需要传入的参数:消息队列元信息和Topic名称;根据所述Topic名称,解析的到集群标识符合端口号,进而可以建立和Redis集群所有分片的连接,然后,根据传入的消息队列元信息,访问所述消息队列集群的Topic,调用所述消息队列集群的自身接口,分别读取所述Topic中的数组,然后访问所述Redis集群对应的分片,调用删除键值API,清理键值;所述Redis集群中所有的分片,可以同时执行清理操作。
2.根据权利要求1所述的基于消息队列的Redis集群海量数据快速清理系统,其特征在于,所述管理节点包括平台化管理模块、元信息管理模块、键值匹配模块、缓存数据管理模块、键值映射模块;
平台化管理模块需要传入参数为:集群标识符和键值前缀;平台化管理模块提供一个Web界面,用户进行删除操作时,填写集群标识符和键值前缀,然后调用元信息管理模块,得到集群标识符对应的Redis集群中所有分片的IP和端口;同时,获得消息队列集群的所有分片的IP和端口,最后,获取Pika主库的IP、端口和密码;然后调用键值匹配模块,匹配到所述键值前缀对应的键值,并且写入到所述消息队列集群对应的Topic中;接下来,同时调用缓存数据管理模块和键值映射模块,分别备份所述键值前缀对应的键值到Pika主从集群,所有键值根据指定的hash算法进行运算,得到对应的hash值,然后根据所述hash值创建对应的数组,hash值相同的所有键值记录在对应的数组中,为Redis主从集群每个分片创建一个对应的Topic,所述Topic包含了本分片中所有键值对应的数组;最后,调用键值清理模块,清理所述键值前缀对应的所有键值,执行结束后,记录缓存数据统计信息,并且在Web界面中展示给用户;
元信息管理模块,需要传入的参数:Redis集群元信息、消息队列元信息和临时缓存元信息;首先,在Redis集群节点部署Redis cluster服务,包含3个分片,每个分片包括一主一从,所述Redis cluster的所有分片的主库的IP和端口记录到Redis集群元信息,同时,为每个Redis cluster定义一个集群标识符作为所述Redis cluster的唯一标识,将所述集群标识符一同记录到Redis集群元信息中,如果所述Redis cluster中某个分片的主库宕机,Redis cluster自动触发主库故障切换,然后使用新主库的IP和端口替换旧的主库的IP和端口;然后,在消息队列节点部署一套消息队列分布式集群,包括三个分片,并且设置为两副本,然后记录所述消息队列集群所有分片的IP和端口到消息队列元信息中,如果所述消息队列分布式集群的分片发生变化,需要相应修改所述消息队列元信息;最后,在临时缓存节点部署一套Pika主从集群,并且记录Pika主库的IP、端口和密码到临时缓存元信息,如果所述Pika主库宕机,人工提升Pika从库为新主库,然后更新所述临时缓存元信息;
所述键值匹配模块,需要传入的参数:Redis集群元信息、键值前缀和消息队列元信息;
根据传入的所述Redis集群元信息,访问Redis cluster的所有分片,调用Redis接口,匹配所述键值前缀对应的所有键值,然后调用消息队列自身接口写入到所述消息队列集群中对应的Topic中;Redis集群中不同的分片的key,写入到消息队列中不同的Topic中;所述Topic命名方式:match_集群标识符_端口号;match表示所述Topic用于匹配键值,所述端口号是Redis集群中不同的分片的端口号,不同的分片对应不同的Topic;本模块结束后,返回Topic名称;
所述缓存数据管理模块,需要传入的参数:消息队列元信息、Topic名称和临时缓存元信息;根据所述消息队列元信息,解析得到消息队列集群所有分片的IP和端口,访问所述消息队列集群,根据Topic名称解析得到Redis集群所有分片的主库IP和端口,读取所述Topic的键值,分别访问Redis集群中不同的分片,读取键值对应的Key、value以及过期时间,然后写入到Pika主库;根据所述临时缓存元信息解析得到Pika的主库IP端口和密码;在键值清理模块成功结束后,访问所述Pika主库,清理所述键值前缀对应的数据;如果键值清理模块执行异常,需要回滚数据,那么访问所述Pika主库,读取所述键值写入到Redis集群中;
所述键值映射模块,需要传入的参数:消息队列元信息和Topic名称;访问所述消息队列集群,根据所述Topic名称,获取所有的键值,然后对所述键值进行hash运算,得到对应的hash值,针对每个所述hash值建立对应的数组,相同hash值的所有键值分布在同一个数组中;同时,为每个分片创建对应的Topic,所述Topic命名方式为:map_集群标识符_端口号,map表示所述Topic用于映射键值,端口号表示Redis集群的分片的端口号,集群标识符是Redis集群的唯一标识;所述Topic记录Redis集群中对应分片的数组,所述数组命名方式为:集群标识符_端口号_hash值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号,hash值是键值经过hash运算的值,每个数组存放hash值相同的键值,数量是1个或者多个;本模块成功结束后,返回所有分片对应的Topic名称,否则返回错误。
3.一种基于消息队列的Redis集群海量数据快速清理方法,其特征在于,该方法包括以下步骤:
(1)调用元信息管理模块,在Redis集群节点部署Redis cluster服务,至少三个Redis主库,每个Redis主库至少一个Redis从库,每个Redis主库的端口号唯一,每个Redis主库和对应的从库端口号一致;在消息队列节点上部署消息队列分布式集群,至少三个分片,设置为两副本;在临时缓存节点部署Pika主从集群,Pika主库和从库端口号一致;同时,在管理节点上记录Redis集群元信息、消息队列元信息和临时缓存元信息;当键值清理模块调用结束后,在管理节点记录缓存数据统计信息,包括:键值前缀、键值数量和执行时间;所述执行时间包括删除某个键值前缀匹配到的所有键值的开始时间和完成时间;
(2)调用键值匹配模块,在管理节点上访问Redis集群所有分片,根据传入的参数,调用Redis自身接口,获取到所有匹配的键值,然后写入到消息队列集群中的Topic中,不同的Redis集群分片的键值,写入到不同的Topic中,Topic名称命名方式:match_集群标识符_端口号;match表示所述Topic的功能是用于匹配键值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号;本模块执行结束后,返回Topic名称;
(3)调用缓存数据管理模块,读取消息队列集群中Topic的键值,从Redis集群中读取所述键值的内容和过期时间,然后写入到临时缓存节点,这些数据作为缓存存储,在键值清理模块调用成功结束之后,清理临时缓存节点的数据;如果键值清理模块执行出现异常,读取这些数据到Redis集群中;
(4)调用键值映射模块,读取消息队列集群中Topic的键值,采用hash算法crc16,对每个键值进行hash运算,得到每个键值对应的hash值,根据所述hash值,创建对应的数组;所述数组存放hash值相同的键值,每个数组命名方式为:集群标识符_端口号_hash值,端口号是Redis集群中分片的端口号,hash值是Redis键值经过hash运算之后得到的一个值,该数组保存所有hash值相同的键值;针对每个分片,创建对应的Topic,命名方式为:map_集群标识符_端口号,map表示所述Topic功能是用于映射键值的,端口号是Redis集群中分片的端口号,集群标识符是Redis集群的唯一标识;每个所述Topic存放对应分片的所有所述数组;
本模块结束后,返回Topic名称;
(5)调用键值清理模块,读取消息队列集群中Topic的数组,每次扫描一个数组,然后调用Redis接口,执行删除键值操作;Redis集群中所有的分片,可以同时执行键值清理模块;
(6)调用平台化管理模块,在管理节点上,采用Web界面形式,传入所需参数,调用键值清理模块,实现一键操作。

说明书全文

一种基于消息队列的Redis集群海量数据快速清理系统及

方法

技术领域

[0001] 本发明属于计算机技术领域,主要应用于Redis数据库的应用场景,用于快速清理Redis集群的海量数据。

背景技术

[0002] 对于互联网公司而言,Redis数据库作为缓存和高性能存储方案,应用越来越广泛,尤其是Redis集群,由于支持分布式高可用和横向扩展,得到了普及应用。但是,Redis集群的特点决定了清理海量数据的复杂度,现有Redis集群数据清理的方案存在如下缺点:
[0003] 1)清理速度慢,无法满足短时间内清理海量数据的需求,从而影响生产环境服务的正常运转。
[0004] 2)对Redis集群服务影响大,对于高并发Redis集群而言,清理海量数据,会影响生产环境业务正常运行。
[0005] 3)易用性差,对操作人员能要求很高,操作便捷性差。

发明内容

[0006] 本发明针对现有技术的不足,提供一种基于消息队列的Redis集群海量数据快速清理系统及方法,基于消息队列可以避免数据写入磁盘,在内存中对数据进行分析后,调用Redis接口即可进行快速清理。
[0007] 本发明的目的是通过以下技术方案来实现的:一种基于消息队列的Redis集群海量数据快速清理系统,该系统包括管理节点、Redis集群节点、消息队列节点和临时缓存节点。
[0008] Redis集群节点:在不同的服务器上部署Redis cluster服务,至少部署三个Redis主库,每个Redis主库至少对应1个Redis从库,避免某个主库宕机后,Redis cluster无法正常运行;不同的Redis主库端口不同,Redis主库和对应的Redis从库端口一致;
[0009] 消息队列节点:在不同的服务器上部署消息队列分布式集群,服务器为IO型服务器,为了支持海量数据,采用支持分布式和横向扩展的消息队列存储方案,设置两副本,部署三个分片,消息队列分布式集群作为对Redis键值进行处理的中间载体;
[0010] 临时缓存节点:在两台服务器上分别部署Pika主库和Pika从库,端口号一致,用于存储Redis集群清理的数据,便于进行回滚操作,为了提高处理速度和节省内存空间,采用Pika作为存储方案。
[0011] 管理节点:存储所有元信息,包括Redis集群元信息、消息队列元信息、临时缓存元信息和缓存数据统计信息,所述Redis集群元信息包括:Redis集群中所有Redis主库的IP和端口,以及每个Redis集群的集群标识符,集群标识符采用Redis集群对应的业务名称英文字符,不同的Redis集群,集群标识符不同;消息队列元信息包括:消息队列集群中所有分片的IP、端口;临时缓存元信息包括:Pika主库的IP、端口和密码;缓存数据统计信息包括:键值前缀、键值数量和执行时间;所述键值前缀是Redis集群中某一类Key的前缀,一个键值前缀可以匹配到一个或者多个Key,Key是Redis集群中的键;所述执行时间包括删除某个键值前缀匹配到的所有键值的开始时间点和完成时间点;同时,在管理节点上部署Web应用服务,访问Redis集群、消息队列集群和Pika主库,对Redis键值进行删除处理。
[0012] 进一步地,所述管理节点包括平台化管理模、元信息管理模块、键值匹配模块、缓存数据管理模块、键值映射模块和键值清理模块;
[0013] 平台化管理模块需要传入参数为:集群标识符和键值前缀;平台化管理模块提供一个Web界面,用户进行删除操作时,需要用户填写所述集群标识符和键值前缀,然后调用元信息管理模块,得到集群标识符对应的Redis集群中所有分片的IP和端口;同时,获得消息队列集群的所有分片的IP和端口,最后,获取PIka主库的IP、端口和密码;然后调用键值匹配模块,匹配到所述键值前缀对应的键值,并且写入到所述消息队列集群对应的Topic中;接下来,同时调用缓存数据管理模块和键值映射模块,分别备份所述键值前缀对应的键值到Pika主从集群,所有键值根据指定的hash算法进行运算,得到对应的hash值,然后根据所述hash值创建对应的数组,hash值相同的所有键值记录在对应的数组中,为Redis主从集群每个分片创建一个对应的Topic,所述Topic包含了本分片中所有键值对应的数组;最后,调用键值清理模块,清理所述键值前缀对应的所有键值,执行结束后,记录缓存数据统计信息,并且在Web界面中展示给用户;
[0014] 元信息管理模块,需要传入的参数:Redis集群元信息、消息队列元信息和临时缓存元信息;首先,在Redis集群节点部署Redis cluster服务,包含3个分片,每个分片包括一主一从,所述Redis cluster的所有分片的主库的IP和端口记录到Redis集群元信息,同时,为每个Redis cluster定义一个集群标识符作为所述Redis cluster的唯一标识,将所述集群标识符一同记录到Redis集群元信息中,如果所述Redis cluster中某个分片的主库宕机,Redis cluster自动触发主库故障切换,然后使用新主库的IP和端口替换旧的主库的IP和端口;然后,在消息队列节点部署一套消息队列分布式集群,包括三个分片,并且设置为两副本,然后记录所述消息队列集群所有分片的IP和端口到消息队列元信息中,如果所述消息队列分布式集群的分片发生变化,需要相应修改所述消息队列元信息;最后,在临时缓存节点部署一套Pika主从集群,并且记录Pika主库的IP、端口和密码到临时缓存元信息,如果所述Pika主库宕机,需要人工提升Pika从库为新主库,然后更新所述临时缓存元信息;
[0015] 所述键值匹配模块,需要传入的参数:Redis集群元信息、键值前缀和消息队列元信息;在管理节点上,根据传入的所述Redis集群元信息,访问Redis cluster的所有分片,调用Redis接口,匹配所述键值前缀对应的所有键值,然后调用消息队列自身接口写入到所述消息队列集群中对应的Topic中;Redis集群中不同的分片的key,写入到消息队列中不同的Topic中,这样可以提升处理速度;所述Topic命名方式:match_集群标识符_端口号;match表示所述Topic用于匹配键值;所述端口号是Redis集群中不同的分片的端口号,不同的分片,对应不同的Topic;本模块结束后,返回Topic名称;
[0016] 所述缓存数据管理模块,需要传入的参数:消息队列元信息、Topic名称和临时缓存元信息;键值匹配模块执行结束后,返回Topic名称,在管理节点上,根据所述消息队列元信息,解析得到消息队列集群所有分片的IP和端口,访问所述消息队列集群,根据Topic名称解析得到Redis集群所有分片的主库IP和端口,读取所述Topic的消息(键值),分别访问Redis集群中不同的分片,读取键值对应的Key、value以及过期时间,然后写入到Pika主库;根据所述临时缓存元信息解析得到Pika的主库IP端口和密码;在键值清理模块成功结束后,访问所述Pika主库,清理所述键值前缀对应的数据;如果键值清理模块执行异常,需要回滚数据,那么访问所述Pika主库,读取所述键值写入到Redis集群中;
[0017] 所述键值映射模块,需要传入的参数:消息队列元信息和Topic名称;访问所述消息队列集群,根据所述Topic名称,获取所有的键值,然后对所述键值进行hash运算,得到对应的hash值,针对每个所述hash值建立对应的数组,相同hash值的所有键值分布在同一个数组中;同时,为每个分片创建对应的Topic,所述Topic命名方式为:map_集群标识符_端口号,map表示所述Topic用于映射键值,端口号表示Redis集群的分片的端口号,集群标识符是Redis集群的唯一标识;所述Topic记录Redis集群中对应分片的数组,所述数组命名方式为:集群标识符_端口号_hash值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号,hash值是键值经过hash运算的值,每个数组存放hash值相同的键值,数量可以是1个或者多个;本模块成功结束后,返回所有分片对应的Topic名称,否则返回错误。
[0018] 所述键值清理模块,需要传入的参数:消息队列元信息和Topic名称;调用键值映射模块结束后,返回Topic名称,在管理节点上,根据所述Topic名称,解析的到集群标识符合端口号,进而可以建立和Redis集群所有分片的连接,然后,根据传入的消息队列元信息,访问所述消息队列集群的Topic,调用所述消息队列集群的自身接口,分别读取所述Topic中的数组,每次扫描一个数组中1000个元素,然后访问所述Redis集群对应的分片,调用删除键值API,清理键值;为了提升清理速度,所述Redis集群中所有的分片,可以同时执行清理操作。
[0019] 一种基于消息队列的Redis集群海量数据快速清理方法,该方法包括以下步骤:
[0020] (1)调用元信息管理模块,在Redis集群节点部署Redis cluster服务,至少三个Redis主库,每个Redis主库至少一个Redis从库,每个Redis主库的端口号唯一,每个Redis主库和对应的从库端口号一致;在消息队列节点上部署消息队列分布式集群,至少三个分片,设置为两副本,磁盘空间要求大一些;在临时缓存节点部署Pika主从集群,Pika主库和从库端口号一致。同时,在管理节点上记录Redis集群元信息、消息队列元信息和临时缓存元信息。当键值清理模块调用结束后,在管理节点记录缓存数据统计信息,包括:键值前缀、键值数量和执行时间;所述执行时间包括删除某个键值前缀匹配到的所有键值的开始时间和完成时间。
[0021] (2)调用键值匹配模块,在管理节点上访问Redis集群所有分片,根据传入的参数,调用Redis自身接口,获取到所有匹配的键值,然后写入到消息队列集群中的Topic中,不同的Redis集群分片的键值,写入到不同的Topic中,Topic名称命名方式:match_集群标识符_端口号;match表示所述Topic的功能是用于匹配键值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号;本模块执行结束后,返回Topic名称;
[0022] (3)调用缓存数据管理模块,读取消息队列集群中Topic的键值,从Redis集群中读取所述键值的内容和过期时间,然后写入到临时缓存节点,这些数据作为缓存存储,在键值清理模块调用成功结束之后,清理临时缓存节点的数据;如果键值清理模块执行出现异常,需要读取这些数据到Redis集群中。键值内容是指键值(Key)的值(value);过期时间是键值(key)的过期时间,可以通过Redis自身接口获取到。
[0023] (4)调用键值映射模块,读取消息队列集群中Topic的键值,采用hash算法crc16,对每个键值进行hash运算,得到每个键值对应的hash值,根据所述hash值,创建对应的数组。所述数组存放hash值相同的键值,每个数组命名方式为:集群标识符_端口号_hash值,端口号是Redis集群中分片的端口号,hash值是Redis键值经过hash运算之后得到的一个值,该数组保存所有hash值相同的键值。针对每个分片,创建对应的Topic,命名方式为:map_集群标识符_端口号,map表示所述Topic功能是用于映射键值的,端口号是Redis集群中分片的端口号,集群标识符是Redis集群的唯一标识。每个所述Topic存放对应分片的所有所述数组。本模块结束后,返回Topic名称。
[0024] (5)调用键值清理模块,读取消息队列集群中Topic的数组,每次扫描一个数组,每次扫描1000个元素,然后调用Redis接口,执行删除键值操作。Redis集群中所有的分片,可以同时执行键值清理模块。本模块执行成功返回“del done”字符;否则返回“del error”字符。
[0025] (6)调用平台化管理模块,在管理节点上,采用Web界面形式,传入所需参数,调用键值清理模块,实现一键操作,简单可靠。
[0026] 本发明的有益效果是:
[0027] (1)接近内存级速度,可以实现快速清理海量数据
[0028] (2)一键操作,使用简单可靠。
[0029] (3)对Redis集群服务影响小。
[0030] (4)可以实现数据一键回滚。附图说明
[0031] 图1是本发明Redis集群海量数据快速清理系统总体架构图;
[0032] 图2是本发明Redis集群海量数据快速清理系统的管理节点各个模块流程图

具体实施方式

[0033] 下面结合附图和具体实施例对本发明作进一步详细说明。
[0034] 如图1所示,本发明提供的一种基于消息队列的Redis集群海量数据快速清理系统,该系统包括Redis集群节点、消息队列节点、临时缓存节点和管理节点四个单元。
[0035] (1)Redis集群节点
[0036] 在不同的服务器上部署Redis cluster服务,至少三个Redis主库,每个Redis主库至少一个从库,不同的Redis主库之间,端口不同,Redis主库和对应的从库端口一致,分别部署在不同的服务器上,以便提高Redis集群可用性。
[0037] 然后记录所述Redis集群所有分片的Redis主库的IP和端口到Redis集群元信息,并且为所述Redis集群设置集群标识符作为唯一标识。
[0038] (2)消息队列节点
[0039] 在多台服务器上部署消息队列分布式集群,采用三个分片,设置为两副本,所述分布式集群中所有分片端口唯一,要求服务器为IO型服务器,以便提供较高的读写速度。然后,记录所述消息队列集群的所有分片的IP和端口到管理及诶单的消息队列元信息中。
[0040] (3)临时缓存节点
[0041] 在两台服务器上分别部署Pika主库和从库,端口号一致,为了提升写数据的速度,可以使用SSD类型的硬盘,磁盘空间100G左右。
[0042] 然后记录所述Pika主库的IP、端口和密码到临时缓存元信息中。
[0043] (4)管理节点
[0044] 在管理节点记录Redis集群元信息、消息队列元信息、临时缓存元信息和缓存数据统计信息。同时在管理节点上运行一个Web应用服务,所述Web应用服务提供一个界面,可以输入集群标识符和键值前缀,点击“删除”,可以自动实现快速删除Redis集群中指定的键值;点击“回滚”,可以把删除的键值写入到Redis集群中。
[0045] 如图2所示,管理节点各个模块的实现流程如下:
[0046] (1)平台化管理模块
[0047] 需要传入的参数:集群标识符和键值前缀
[0048] 平台化管理模块提供一个Web界面,需要使用者填写所述集群标识符和所述键值前缀,然后,点击“删除”按钮,该模块蒋调用元信息管理模块,根据集群标识符,得到所述集群标识符对应的Redis集群中所有分片的IP和端口;同时,获得消息队列集群的所有分片的IP和端口,最后,获取PIka主库的IP、端口和密码。然后调用键值匹配模块,匹配到所述键值前缀对应的键值,并且写入到所述消息队列集群对应的Topic中;接下来,同时调用缓存数据管理模块和键值映射模块,分别备份所述键值前缀对应的键值到Pika主从集群,所有键值根据指定的hash算法进行运算,得到对应的hash值,然后根据所述hash值创建对应的数组,hash值相同的所有键值记录在对应的数组中,为Redis主从集群每个分片创建一个对应的Topic,所述Topic包含了本分片中所有键值对应的数组;最后,调用键值清理模块,清理所述键值前缀对应的所有键值,执行结束后,记录缓存数据统计信息,并且在Web界面中展示给用户;
[0049] (2)元信息管理模块
[0050] 需要传入的参数:Redis集群元信息、消息队列元信息和临时缓存元信息[0051] 首先,在Redis集群节点部署Redis cluster服务,包含3个分片,每个分片包括一主一从,所述Redis cluster的所有分片的主库的IP和端口记录到Redis集群元信息,同时,为每个Redis cluster定义一个集群标识符作为所述Redis cluster的唯一标识,将所述集群标识符一同记录到Redis集群元信息中,如果所述Redis cluster中某个分片的主库宕机,Redis cluster自动触发主库故障切换,然后使用新主库的IP和端口替换旧的主库的IP和端口。然后,在消息队列节点部署一套消息队列分布式集群,包括三个分片,并且设置为两副本,然后记录所述消息队列集群所有分片的IP和端口到消息队列元信息中,如果所述消息队列分布式集群的分片发生变化,需要相应修改所述消息队列元信息。最后,在临时缓存节点部署一套Pika主从集群,并且记录Pika主库的IP、端口和密码记录到临时缓存元信息,如果所述Pika主库宕机,需要人工提升Pika从库为新主库,然后更新所述临时缓存元信息。
[0052] (3)键值匹配模块
[0053] 需要传入的参数:Redis集群元信息、键值前缀和消息队列元信息
[0054] 在管理节点上,根据传入的所述Redis集群元信息,访问所述Redis cluster的所有分片,调用Redis接口,匹配所述键值前缀对应的所有键值,然后调用消息队列自身接口写入到所述消息队列集群中对应的Topic中。
[0055] 匹配所述键值前缀的方法如下:
[0056] scan($it,$prekey.'*')
[0057] 说明:
[0058] it是定义的迭代器;
[0059] prekey是键值前缀,比如abc123_
[0060] 该接口可以匹配到所有以$prekey打头的key
[0061] Redis集群中不同的分片的key,写入到消息队列中不同的Topic中,这样可以提升处理速度。
[0062] 所述Topic命名方式:match_集群标识符_端口号
[0063] 所述端口号是Redis集群中不同的分片的端口号,不同的分片,对应不同的Topic[0064] 本模块结束后,返回Topic名称。
[0065] (4)缓存数据管理模块
[0066] 需要传入的参数:消息队列元信息、Topic名称和临时缓存元信息
[0067] 键值匹配模块执行结束后,返回Topic名称,在管理节点上,根据所述消息队列元信息,解析的到消息队列集群所有分片的IP和端口,访问所述消息队列集群,根据Topic名称,解析的到Redis集群所有分片的主库IP和端口,读取所述Topic的消息(键值),然后,分别访问Redis集群中不同的分片,读取键值对应的Key、value以及过期时间,然后写入到Pika主库。根据所述临时缓存元信息,可以解析的到Pika的主库IP端口和密码。
[0068] 在键值清理模块成功结束后,访问所述Pika主库,清理所述键值前缀对应的数据;如果键值清理模块执行异常,需要回滚数据,那么访问所述Pika主库,读取所述键值写入到Redis集群中。
[0069] (5)键值映射模块
[0070] 需要传入的参数:消息队列元信息和Topic名称
[0071] 键值匹配模块执行结束后,返回Topic名称,在管理节点上,访问所述消息队列集群,根据所述Topic名称,获取所有的键值,然后对所述键值进行hash运算,得到每个键值的hash值,针对每个所述hash值建立对应的数组,针对每个分片,hash值相同的键值分布在同一个数组中。所述数组命名方式为:集群标识符_端口号_hash值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号,hash值,是键值经过hash运算的值,每个数组存放hash值相同的键值,每个数组的元素数量可以是1或者多个。
[0072] hash运算方法如下:
[0073] Hash值=crc16(key,keylen)
[0074] 其中,key是键值,keylen是key的长度,可以调用系统函数获取key的长度。此时,为Redis集群中每个分片,创建一个对应的Topic,所述Topic存放对应分片的所有的数组,所述Topic分片命名方式为:map_集群标识符_端口号,map标识所述Topic的功能是用于映射键值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号,[0075] 如果Redis集群存在3个分片,那么返回3个Topic名称。
[0076] (6)键值清理模块
[0077] 需要传入参数:消息队列元信息和Topic名称
[0078] 调用键值映射模块结束后,返回Topic名称,在管理节点上,根据所述Topic名称,解析的到集群标识符和端口号,进而可以建立和Redis集群所有分片的连接,然后,根据传入的消息队列元信息,访问所述消息队列集群的Topic,调用所述消息队列集群的自身接口,分别读取所述Topic中的数组,每次扫描一个数组中1000个元素,然后访问所述Redis集群对应的分片,调用删除键值API,清理键值。为了提升清理速度,所述Redis集群中所有的分片,可以同时执行清理操作。如果清理成功完成,返回“del done“字符串;否则,返回“del error”字符串。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈