CN107479829A - 一种基于消息队列的Redis集群海量数据快速清理系统及方法 - Google Patents
一种基于消息队列的Redis集群海量数据快速清理系统及方法 Download PDFInfo
- Publication number
- CN107479829A CN107479829A CN201710656352.6A CN201710656352A CN107479829A CN 107479829 A CN107479829 A CN 107479829A CN 201710656352 A CN201710656352 A CN 201710656352A CN 107479829 A CN107479829 A CN 107479829A
- Authority
- CN
- China
- Prior art keywords
- redis
- key assignments
- cluster
- message queue
- topic
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于消息队列的Redis集群海量数据快速清理系统及方法,该系统包括管理节点、Redis集群节点、消息队列节点和临时缓存节点;Redis集群节点:在不同的服务器上部署Redis cluster服务,至少部署三个Redis主库,每个Redis主库至少对应1个Redis从库;消息队列节点:在不同的服务器上部署消息队列分布式集群作为对Redis键值进行处理的中间载体;临时缓存节点:在两台服务器上分别部署Pika主库和Pika从库,用于存储Redis集群清理的数据;管理节点:存储所有元信息,同时部署Web应用服务,访问Redis集群、消息队列集群和Pika主库,对Redis键值进行删除处理。本发明的处理速度接近内存级速度,可以实现快速清理海量数据,使用简单可靠,对Redis集群服务影响小,可以实现数据一键回滚。
Description
技术领域
本发明属于计算机技术领域,主要应用于Redis数据库的应用场景,用于快速清理Redis集群的海量数据。
背景技术
对于互联网公司而言,Redis数据库作为缓存和高性能存储方案,应用越来越广泛,尤其是Redis集群,由于支持分布式高可用和横向扩展,得到了普及应用。但是,Redis集群的特点决定了清理海量数据的复杂度,现有Redis集群数据清理的方案存在如下缺点:
1)清理速度慢,无法满足短时间内清理海量数据的需求,从而影响生产环境服务的正常运转。
2)对Redis集群服务影响大,对于高并发Redis集群而言,清理海量数据,会影响生产环境业务正常运行。
3)易用性差,对操作人员能力要求很高,操作便捷性差。
发明内容
本发明针对现有技术的不足,提供一种基于消息队列的Redis集群海量数据快速清理系统及方法,基于消息队列可以避免数据写入磁盘,在内存中对数据进行分析后,调用Redis接口即可进行快速清理。
本发明的目的是通过以下技术方案来实现的:一种基于消息队列的Redis集群海量数据快速清理系统,该系统包括管理节点、Redis集群节点、消息队列节点和临时缓存节点。
Redis集群节点:在不同的服务器上部署Redis cluster服务,至少部署三个Redis主库,每个Redis主库至少对应1个Redis从库,避免某个主库宕机后,Redis cluster无法正常运行;不同的Redis主库端口不同,Redis主库和对应的Redis从库端口一致;
消息队列节点:在不同的服务器上部署消息队列分布式集群,服务器为IO型服务器,为了支持海量数据,采用支持分布式和横向扩展的消息队列存储方案,设置两副本,部署三个分片,消息队列分布式集群作为对Redis键值进行处理的中间载体;
临时缓存节点:在两台服务器上分别部署Pika主库和Pika从库,端口号一致,用于存储Redis集群清理的数据,便于进行回滚操作,为了提高处理速度和节省内存空间,采用Pika作为存储方案。
管理节点:存储所有元信息,包括Redis集群元信息、消息队列元信息、临时缓存元信息和缓存数据统计信息,所述Redis集群元信息包括:Redis集群中所有Redis主库的IP和端口,以及每个Redis集群的集群标识符,集群标识符采用Redis集群对应的业务名称英文字符,不同的Redis集群,集群标识符不同;消息队列元信息包括:消息队列集群中所有分片的IP、端口;临时缓存元信息包括:Pika主库的IP、端口和密码;缓存数据统计信息包括:键值前缀、键值数量和执行时间;所述键值前缀是Redis集群中某一类Key的前缀,一个键值前缀可以匹配到一个或者多个Key,Key是Redis集群中的键;所述执行时间包括删除某个键值前缀匹配到的所有键值的开始时间点和完成时间点;同时,在管理节点上部署Web应用服务,访问Redis集群、消息队列集群和Pika主库,对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名称和临时缓存元信息;键值匹配模块执行结束后,返回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名称,否则返回错误。
所述键值清理模块,需要传入的参数:消息队列元信息和Topic名称;调用键值映射模块结束后,返回Topic名称,在管理节点上,根据所述Topic名称,解析的到集群标识符合端口号,进而可以建立和Redis集群所有分片的连接,然后,根据传入的消息队列元信息,访问所述消息队列集群的Topic,调用所述消息队列集群的自身接口,分别读取所述Topic中的数组,每次扫描一个数组中1000个元素,然后访问所述Redis集群对应的分片,调用删除键值API,清理键值;为了提升清理速度,所述Redis集群中所有的分片,可以同时执行清理操作。
一种基于消息队列的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集群中。键值内容是指键值(Key)的值(value);过期时间是键值(key)的过期时间,可以通过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的数组,每次扫描一个数组,每次扫描1000个元素,然后调用Redis接口,执行删除键值操作。Redis集群中所有的分片,可以同时执行键值清理模块。本模块执行成功返回“del done”字符;否则返回“del error”字符。
(6)调用平台化管理模块,在管理节点上,采用Web界面形式,传入所需参数,调用键值清理模块,实现一键操作,简单可靠。
本发明的有益效果是:
(1)接近内存级速度,可以实现快速清理海量数据
(2)一键操作,使用简单可靠。
(3)对Redis集群服务影响小。
(4)可以实现数据一键回滚。
附图说明
图1是本发明Redis集群海量数据快速清理系统总体架构图;
图2是本发明Redis集群海量数据快速清理系统的管理节点各个模块流程图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步详细说明。
如图1所示,本发明提供的一种基于消息队列的Redis集群海量数据快速清理系统,该系统包括Redis集群节点、消息队列节点、临时缓存节点和管理节点四个单元。
(1)Redis集群节点
在不同的服务器上部署Redis cluster服务,至少三个Redis主库,每个Redis主库至少一个从库,不同的Redis主库之间,端口不同,Redis主库和对应的从库端口一致,分别部署在不同的服务器上,以便提高Redis集群可用性。
然后记录所述Redis集群所有分片的Redis主库的IP和端口到Redis集群元信息,并且为所述Redis集群设置集群标识符作为唯一标识。
(2)消息队列节点
在多台服务器上部署消息队列分布式集群,采用三个分片,设置为两副本,所述分布式集群中所有分片端口唯一,要求服务器为IO型服务器,以便提供较高的读写速度。然后,记录所述消息队列集群的所有分片的IP和端口到管理及诶单的消息队列元信息中。
(3)临时缓存节点
在两台服务器上分别部署Pika主库和从库,端口号一致,为了提升写数据的速度,可以使用SSD类型的硬盘,磁盘空间100G左右。
然后记录所述Pika主库的IP、端口和密码到临时缓存元信息中。
(4)管理节点
在管理节点记录Redis集群元信息、消息队列元信息、临时缓存元信息和缓存数据统计信息。同时在管理节点上运行一个Web应用服务,所述Web应用服务提供一个界面,可以输入集群标识符和键值前缀,点击“删除”,可以自动实现快速删除Redis集群中指定的键值;点击“回滚”,可以把删除的键值写入到Redis集群中。
如图2所示,管理节点各个模块的实现流程如下:
(1)平台化管理模块
需要传入的参数:集群标识符和键值前缀
平台化管理模块提供一个Web界面,需要使用者填写所述集群标识符和所述键值前缀,然后,点击“删除”按钮,该模块蒋调用元信息管理模块,根据集群标识符,得到所述集群标识符对应的Redis集群中所有分片的IP和端口;同时,获得消息队列集群的所有分片的IP和端口,最后,获取PIka主库的IP、端口和密码。然后调用键值匹配模块,匹配到所述键值前缀对应的键值,并且写入到所述消息队列集群对应的Topic中;接下来,同时调用缓存数据管理模块和键值映射模块,分别备份所述键值前缀对应的键值到Pika主从集群,所有键值根据指定的hash算法进行运算,得到对应的hash值,然后根据所述hash值创建对应的数组,hash值相同的所有键值记录在对应的数组中,为Redis主从集群每个分片创建一个对应的Topic,所述Topic包含了本分片中所有键值对应的数组;最后,调用键值清理模块,清理所述键值前缀对应的所有键值,执行结束后,记录缓存数据统计信息,并且在Web界面中展示给用户;
(2)元信息管理模块
需要传入的参数: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从库为新主库,然后更新所述临时缓存元信息。
(3)键值匹配模块
需要传入的参数:Redis集群元信息、键值前缀和消息队列元信息
在管理节点上,根据传入的所述Redis集群元信息,访问所述Redis cluster的所有分片,调用Redis接口,匹配所述键值前缀对应的所有键值,然后调用消息队列自身接口写入到所述消息队列集群中对应的Topic中。
匹配所述键值前缀的方法如下:
scan($it,$prekey.'*')
说明:
it是定义的迭代器;
prekey是键值前缀,比如abc123_
该接口可以匹配到所有以$prekey打头的key
Redis集群中不同的分片的key,写入到消息队列中不同的Topic中,这样可以提升处理速度。
所述Topic命名方式:match_集群标识符_端口号
所述端口号是Redis集群中不同的分片的端口号,不同的分片,对应不同的Topic
本模块结束后,返回Topic名称。
(4)缓存数据管理模块
需要传入的参数:消息队列元信息、Topic名称和临时缓存元信息
键值匹配模块执行结束后,返回Topic名称,在管理节点上,根据所述消息队列元信息,解析的到消息队列集群所有分片的IP和端口,访问所述消息队列集群,根据Topic名称,解析的到Redis集群所有分片的主库IP和端口,读取所述Topic的消息(键值),然后,分别访问Redis集群中不同的分片,读取键值对应的Key、value以及过期时间,然后写入到Pika主库。根据所述临时缓存元信息,可以解析的到Pika的主库IP端口和密码。
在键值清理模块成功结束后,访问所述Pika主库,清理所述键值前缀对应的数据;如果键值清理模块执行异常,需要回滚数据,那么访问所述Pika主库,读取所述键值写入到Redis集群中。
(5)键值映射模块
需要传入的参数:消息队列元信息和Topic名称
键值匹配模块执行结束后,返回Topic名称,在管理节点上,访问所述消息队列集群,根据所述Topic名称,获取所有的键值,然后对所述键值进行hash运算,得到每个键值的hash值,针对每个所述hash值建立对应的数组,针对每个分片,hash值相同的键值分布在同一个数组中。所述数组命名方式为:集群标识符_端口号_hash值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号,hash值,是键值经过hash运算的值,每个数组存放hash值相同的键值,每个数组的元素数量可以是1或者多个。
hash运算方法如下:
Hash值=crc16(key,keylen)
其中,key是键值,keylen是key的长度,可以调用系统函数获取key的长度。此时,为Redis集群中每个分片,创建一个对应的Topic,所述Topic存放对应分片的所有的数组,所述Topic分片命名方式为:map_集群标识符_端口号,map标识所述Topic的功能是用于映射键值,集群标识符是Redis集群的唯一标识,端口号是Redis集群的分片的端口号,
如果Redis集群存在3个分片,那么返回3个Topic名称。
(6)键值清理模块
需要传入参数:消息队列元信息和Topic名称
调用键值映射模块结束后,返回Topic名称,在管理节点上,根据所述Topic名称,解析的到集群标识符和端口号,进而可以建立和Redis集群所有分片的连接,然后,根据传入的消息队列元信息,访问所述消息队列集群的Topic,调用所述消息队列集群的自身接口,分别读取所述Topic中的数组,每次扫描一个数组中1000个元素,然后访问所述Redis集群对应的分片,调用删除键值API,清理键值。为了提升清理速度,所述Redis集群中所有的分片,可以同时执行清理操作。如果清理成功完成,返回“del done“字符串;否则,返回“delerror”字符串。
Claims (3)
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键值进行删除处理。
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名称,否则返回错误。
所述键值清理模块,需要传入的参数:消息队列元信息和Topic名称;根据所述Topic名称,解析的到集群标识符合端口号,进而可以建立和Redis集群所有分片的连接,然后,根据传入的消息队列元信息,访问所述消息队列集群的Topic,调用所述消息队列集群的自身接口,分别读取所述Topic中的数组,然后访问所述Redis集群对应的分片,调用删除键值API,清理键值;所述Redis集群中所有的分片,可以同时执行清理操作。
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界面形式,传入所需参数,调用键值清理模块,实现一键操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710656352.6A CN107479829B (zh) | 2017-08-03 | 2017-08-03 | 一种基于消息队列的Redis集群海量数据快速清理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710656352.6A CN107479829B (zh) | 2017-08-03 | 2017-08-03 | 一种基于消息队列的Redis集群海量数据快速清理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107479829A true CN107479829A (zh) | 2017-12-15 |
CN107479829B CN107479829B (zh) | 2020-04-17 |
Family
ID=60598586
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710656352.6A Active CN107479829B (zh) | 2017-08-03 | 2017-08-03 | 一种基于消息队列的Redis集群海量数据快速清理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107479829B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182213A (zh) * | 2017-12-20 | 2018-06-19 | 福建新大陆软件工程有限公司 | 一种基于分布式系统的数据处理优化装置及方法 |
CN108280031A (zh) * | 2017-12-22 | 2018-07-13 | 努比亚技术有限公司 | redis缓存清理方法、服务器及计算机可读存储介质 |
CN109151074A (zh) * | 2018-10-29 | 2019-01-04 | 南京感度信息技术有限责任公司 | 基于Redis的集中式缓存队列服务架构方法及网络结构 |
CN109165101A (zh) * | 2018-09-11 | 2019-01-08 | 南京朝焱智能科技有限公司 | 基于Redis的内存服务器设计方法 |
CN109614411A (zh) * | 2018-11-19 | 2019-04-12 | 杭州复杂美科技有限公司 | 数据存储方法、设备和存储介质 |
CN109660598A (zh) * | 2018-11-17 | 2019-04-19 | 华中科技大学 | 一种物联网暂态数据的缓存替换方法及系统 |
CN109871380A (zh) * | 2019-01-14 | 2019-06-11 | 深圳市东信时代信息技术有限公司 | 一种基于Redis的人群包应用方法及系统 |
CN110874288A (zh) * | 2018-09-04 | 2020-03-10 | 北京奇虎科技有限公司 | 一种Redis集群缓存数据的管理方法及装置 |
CN111209271A (zh) * | 2019-12-25 | 2020-05-29 | 深圳供电局有限公司 | 电力数据补采方法、装置、计算机设备和存储介质 |
CN111522805A (zh) * | 2020-04-23 | 2020-08-11 | 中国银行股份有限公司 | 分布式批量数据清理方法及系统 |
CN111538789A (zh) * | 2020-04-27 | 2020-08-14 | 咪咕文化科技有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN111597149A (zh) * | 2020-04-27 | 2020-08-28 | 五八有限公司 | 一种数据库的数据清理方法及装置 |
CN112069438A (zh) * | 2020-09-10 | 2020-12-11 | 北京五八信息技术有限公司 | 消息合并方法、消息处理方法和装置、设备和介质 |
CN112269955A (zh) * | 2020-11-02 | 2021-01-26 | 浪潮云信息技术股份公司 | 一种基于Redis的网页响应和数据缓存提速处理方法及系统 |
CN112328685A (zh) * | 2020-11-05 | 2021-02-05 | 浪潮云信息技术股份公司 | 一种全对等分布式数据库数据同步方法 |
CN112506610A (zh) * | 2020-12-02 | 2021-03-16 | 北京大米科技有限公司 | 信息更新方法、装置、存储介质和电子设备 |
CN112783669A (zh) * | 2021-01-06 | 2021-05-11 | 北京同有飞骥科技股份有限公司 | 分布式存储管理方法及系统 |
CN113505012A (zh) * | 2021-09-13 | 2021-10-15 | 北京宇信科技集团股份有限公司 | 一种消息队列的处理方法、介质、设备和系统 |
CN117193674A (zh) * | 2023-11-08 | 2023-12-08 | 浪潮软件科技有限公司 | 一种提升物联网设备海量数据存取效能的方法及装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013064815A1 (en) * | 2011-11-04 | 2013-05-10 | Performance Horizon Group | Method and database system for manipulating data |
CN103631924A (zh) * | 2013-12-03 | 2014-03-12 | Tcl集团股份有限公司 | 一种分布式数据库平台的应用方法和系统 |
CN103793273A (zh) * | 2014-01-24 | 2014-05-14 | 北京京东尚科信息技术有限公司 | 一种基于Redis的分布式队列调度方法及装置 |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和系统 |
CN105426451A (zh) * | 2015-11-11 | 2016-03-23 | 深圳市华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及系统 |
CN105677736A (zh) * | 2015-12-29 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 一种增加、删除服务器节点的方法及装置 |
CN106656624A (zh) * | 2017-01-04 | 2017-05-10 | 合肥康捷信息科技有限公司 | 基于Gossip通信协议和Raft选举算法的优化方法 |
CN106682004A (zh) * | 2015-11-06 | 2017-05-17 | 网宿科技股份有限公司 | 一种Redis Key管理方法及系统 |
CN106878473A (zh) * | 2017-04-20 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、服务器集群及系统 |
CN106997378A (zh) * | 2017-03-13 | 2017-08-01 | 摩贝(上海)生物科技有限公司 | 基于Redis的数据库数据聚合同步的方法 |
-
2017
- 2017-08-03 CN CN201710656352.6A patent/CN107479829B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013064815A1 (en) * | 2011-11-04 | 2013-05-10 | Performance Horizon Group | Method and database system for manipulating data |
CN103631924A (zh) * | 2013-12-03 | 2014-03-12 | Tcl集团股份有限公司 | 一种分布式数据库平台的应用方法和系统 |
CN103793273A (zh) * | 2014-01-24 | 2014-05-14 | 北京京东尚科信息技术有限公司 | 一种基于Redis的分布式队列调度方法及装置 |
CN103886079A (zh) * | 2014-03-26 | 2014-06-25 | 北京京东尚科信息技术有限公司 | 一种数据处理方法和系统 |
CN106682004A (zh) * | 2015-11-06 | 2017-05-17 | 网宿科技股份有限公司 | 一种Redis Key管理方法及系统 |
CN105426451A (zh) * | 2015-11-11 | 2016-03-23 | 深圳市华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及系统 |
CN105677736A (zh) * | 2015-12-29 | 2016-06-15 | 曙光信息产业(北京)有限公司 | 一种增加、删除服务器节点的方法及装置 |
CN106656624A (zh) * | 2017-01-04 | 2017-05-10 | 合肥康捷信息科技有限公司 | 基于Gossip通信协议和Raft选举算法的优化方法 |
CN106997378A (zh) * | 2017-03-13 | 2017-08-01 | 摩贝(上海)生物科技有限公司 | 基于Redis的数据库数据聚合同步的方法 |
CN106878473A (zh) * | 2017-04-20 | 2017-06-20 | 腾讯科技(深圳)有限公司 | 一种消息处理方法、服务器集群及系统 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108182213A (zh) * | 2017-12-20 | 2018-06-19 | 福建新大陆软件工程有限公司 | 一种基于分布式系统的数据处理优化装置及方法 |
CN108280031A (zh) * | 2017-12-22 | 2018-07-13 | 努比亚技术有限公司 | redis缓存清理方法、服务器及计算机可读存储介质 |
CN110874288A (zh) * | 2018-09-04 | 2020-03-10 | 北京奇虎科技有限公司 | 一种Redis集群缓存数据的管理方法及装置 |
CN109165101A (zh) * | 2018-09-11 | 2019-01-08 | 南京朝焱智能科技有限公司 | 基于Redis的内存服务器设计方法 |
CN109165101B (zh) * | 2018-09-11 | 2021-03-19 | 南京朝焱智能科技有限公司 | 基于Redis的内存服务器设计方法 |
CN109151074B (zh) * | 2018-10-29 | 2023-05-23 | 南京感度信息技术有限责任公司 | 基于Redis的集中式缓存队列服务架构方法及网络结构 |
CN109151074A (zh) * | 2018-10-29 | 2019-01-04 | 南京感度信息技术有限责任公司 | 基于Redis的集中式缓存队列服务架构方法及网络结构 |
CN109660598A (zh) * | 2018-11-17 | 2019-04-19 | 华中科技大学 | 一种物联网暂态数据的缓存替换方法及系统 |
CN109660598B (zh) * | 2018-11-17 | 2020-05-19 | 华中科技大学 | 一种物联网暂态数据的缓存替换方法及系统 |
CN109614411A (zh) * | 2018-11-19 | 2019-04-12 | 杭州复杂美科技有限公司 | 数据存储方法、设备和存储介质 |
CN109871380A (zh) * | 2019-01-14 | 2019-06-11 | 深圳市东信时代信息技术有限公司 | 一种基于Redis的人群包应用方法及系统 |
CN109871380B (zh) * | 2019-01-14 | 2022-11-11 | 深圳市东信时代信息技术有限公司 | 一种基于Redis的人群包应用方法及系统 |
CN111209271A (zh) * | 2019-12-25 | 2020-05-29 | 深圳供电局有限公司 | 电力数据补采方法、装置、计算机设备和存储介质 |
CN111522805A (zh) * | 2020-04-23 | 2020-08-11 | 中国银行股份有限公司 | 分布式批量数据清理方法及系统 |
CN111522805B (zh) * | 2020-04-23 | 2023-05-02 | 中国银行股份有限公司 | 分布式批量数据清理方法及系统 |
CN111597149A (zh) * | 2020-04-27 | 2020-08-28 | 五八有限公司 | 一种数据库的数据清理方法及装置 |
CN111597149B (zh) * | 2020-04-27 | 2023-03-31 | 五八有限公司 | 一种数据库的数据清理方法及装置 |
CN111538789A (zh) * | 2020-04-27 | 2020-08-14 | 咪咕文化科技有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN111538789B (zh) * | 2020-04-27 | 2023-08-15 | 咪咕文化科技有限公司 | 数据同步方法、装置、电子设备及存储介质 |
CN112069438A (zh) * | 2020-09-10 | 2020-12-11 | 北京五八信息技术有限公司 | 消息合并方法、消息处理方法和装置、设备和介质 |
CN112269955A (zh) * | 2020-11-02 | 2021-01-26 | 浪潮云信息技术股份公司 | 一种基于Redis的网页响应和数据缓存提速处理方法及系统 |
CN112328685A (zh) * | 2020-11-05 | 2021-02-05 | 浪潮云信息技术股份公司 | 一种全对等分布式数据库数据同步方法 |
CN112506610A (zh) * | 2020-12-02 | 2021-03-16 | 北京大米科技有限公司 | 信息更新方法、装置、存储介质和电子设备 |
CN112783669A (zh) * | 2021-01-06 | 2021-05-11 | 北京同有飞骥科技股份有限公司 | 分布式存储管理方法及系统 |
CN113505012A (zh) * | 2021-09-13 | 2021-10-15 | 北京宇信科技集团股份有限公司 | 一种消息队列的处理方法、介质、设备和系统 |
CN117193674A (zh) * | 2023-11-08 | 2023-12-08 | 浪潮软件科技有限公司 | 一种提升物联网设备海量数据存取效能的方法及装置 |
CN117193674B (zh) * | 2023-11-08 | 2024-03-29 | 浪潮软件科技有限公司 | 一种提升物联网设备海量数据存取效能的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107479829B (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107479829A (zh) | 一种基于消息队列的Redis集群海量数据快速清理系统及方法 | |
US11182404B2 (en) | Data replication technique in database management system | |
CN105989129B (zh) | 实时数据统计方法和装置 | |
CN103390041B (zh) | 一种基于中间件提供数据服务的方法和系统 | |
CN108647361A (zh) | 一种基于区块链的数据存储方法、装置及系统 | |
CN112534396A (zh) | 数据库系统中的日记表 | |
CN101789976B (zh) | 嵌入式网络存储系统及其方法 | |
CN105138592A (zh) | 一种基于分布式架构的日志数据存储和检索方法 | |
CN101364217B (zh) | 数据库中数据维护方法、设备及其系统 | |
CN104408111A (zh) | 一种删除重复数据的方法及装置 | |
KR102195836B1 (ko) | 인덱스 관리 방법 | |
CN105701219B (zh) | 一种分布式缓存的实现方法 | |
CN1932812A (zh) | 一种日志保存方法及装置 | |
CN103473239A (zh) | 一种非关系型数据库数据更新方法和装置 | |
KR101922044B1 (ko) | 데이터베이스 이중화 무중단 정합성 복구 기법 | |
CN103150395B (zh) | 基于ssd的文件系统目录路径解析方法 | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
CN107800808A (zh) | 一种基于Hadoop架构的数据存储系统 | |
CN104834700A (zh) | 一种基于轨迹变更的移动数据增量捕获方法 | |
CN107688611A (zh) | 一种基于saltstack的Redis键值管理系统及方法 | |
KR20200056357A (ko) | 데이터베이스 관리 시스템에서의 변경 데이터 캡쳐 구현 기법 | |
CN111159176A (zh) | 一种海量流数据的存储和读取的方法和系统 | |
CN111752804B (zh) | 一种基于数据库日志扫描的数据库缓存系统 | |
US20220342888A1 (en) | Object tagging | |
KR20190022600A (ko) | 데이터베이스 관리 시스템에서의 데이터 복제 기법 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220714 Address after: 310000 room 801, 8th floor, building 1, No. 108 Xiangyuan Road, Gongshu District, Hangzhou City, Zhejiang Province Patentee after: Hangzhou mingshitang Digital Technology Co.,Ltd. Address before: 310019 room 507, floor 5, building A15, No. 9, Jiusheng Road, Jianggan District, Hangzhou, Zhejiang Province Patentee before: HANGZHOU MISTONG EDUCATION SCIENCE & TECHNOLOGY DEVELOPMENT CO.,LTD. |
|
TR01 | Transfer of patent right |