CN110445828B - 一种基于Redis的数据分布式处理方法及其相关设备 - Google Patents
一种基于Redis的数据分布式处理方法及其相关设备 Download PDFInfo
- Publication number
- CN110445828B CN110445828B CN201910516420.8A CN201910516420A CN110445828B CN 110445828 B CN110445828 B CN 110445828B CN 201910516420 A CN201910516420 A CN 201910516420A CN 110445828 B CN110445828 B CN 110445828B
- Authority
- CN
- China
- Prior art keywords
- data
- redis
- node
- service cluster
- key
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 145
- 238000000034 method Methods 0.000 claims abstract description 26
- 238000012958 reprocessing Methods 0.000 claims 1
- 238000013500 data storage Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/08—Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
- H04L43/0876—Network utilisation, e.g. volume of load or congestion level
- H04L43/0888—Throughput
-
- 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
-
- 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/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- 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/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- 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/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Environmental & Geological Engineering (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明属于大数据技术领域,涉及一种基于Redis的数据分布式处理方法及其相关设备,所述方法包括:根据Redis服务集群的工作状态确定节点数量;通过所述Redis服务集群的任一节点接收输入数据,存储输入数据并更新数据队列开始标志key的赋值为第一状态值,当存储所述输入数据完毕时,更新数据队列结束标志key的赋值为第二状态值,并记录待处理数据队列key的数据条数;从所述待处理数据队列key读取需要处理的所述输入数据进行业务处理,将各所述应用服务进行业务处理的处理结果保存至处理结果key;从所述处理结果key获取所有所述应用服务的处理结果。本发明提供的方案能够大大提升数据处理效率,且能够动态调整所述Redis服务集群的数据处理能力。
Description
技术领域
本发明实施例属于大数据技术领域,尤其涉及一种基于Redis的数据分布式处理方法、装置及计算机设备、存储介质。
背景技术
目前,面对日益庞大的数据,对于数据的处理时效性要求越来越高,单服务器处理数据的局限性越发凸显,现有技术中尝试通过多线程的处理方式来提高处理速度,然后这类多线程的处理方式并不是并行处理,处理速度很难横向提升,对服务器的负荷依然很大。
发明内容
有鉴于此,本发明实施例提供一种基于Redis的数据分布式处理方法、装置及计算机设备、存储介质,以解决现有技术中采用多线程方式进行大量数据处理存在的处理速度低、处理能力无法横向扩展的问题。
第一方面,本发明实施例提供一种基于Redis的数据分布式处理方法,包括:
判断Redis服务集群当前的工作状态是否需要改变节点数量,并在所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,否则维持节点数量不变;
通过所述Redis服务集群的任一节点接收请求接入的服务提供的输入数据;
控制所述Redis服务集群存储所述输入数据至待处理数据队列key,并更新数据队列开始标志key的赋值为第一状态值,当所述Redis服务集群完成所述输入数据的存储时,更新数据队列结束标志key的赋值为第二状态值,并记录所述待处理数据队列key的数据条数;
当所述Redis服务集群的各所述节点读取到所述数据队列开始标志key的赋值为第一状态值时,控制各所述节点的应用服务从所述待处理数据队列key读取需要处理的所述输入数据进行业务处理,使所述Redis服务集群更新各所述应用服务的处理器标识key为第三状态值,并将各所述应用服务进行业务处理的处理结果保存至处理结果key;
当任一所述应用服务从所述待处理数据队列key中读取数据为空,且读取到所述数据队列结束标志key的赋值为第二状态值时,控制所述Redis服务集群更新对应的所述应用服务的处理器标识key的赋值为第四状态值;
在所有参与业务处理的所述应用服务处理完毕后,控制接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果。
作为本发明可实施的方式,所述判断所述Redis服务集群当前的工作状态是否需要改变节点数量包括:
统计所述Redis服务集群当前的所述节点数量的数据容量和数据冗余量;根据所述Redis服务集群当前的所述节点数量的数据容量是否满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,以及所述数据冗余量是否达到冗余量阈值来判断是否需要改变节点的数量。
作为本发明可实施的方式,所述改变所述Redis服务集群的节点数量包括:
当所述Redis服务集群当前的所述节点数量的数据容量满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,获取所述数据冗余量达到冗余量阈值时,为所述Redis服务集群删除至少一个节点;
当所述Redis服务集群当前的所述节点数量的数据容量不满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,且获取所述数据冗余量小于冗余量阈值时,为所述Redis服务集群增加至少一个节点。
作为本发明可实施的方式,所述改变所述Redis服务集群的节点数量包括:增加或者删除所述Redis服务集群的至少一个从节点和/或至少一个主节点。
作为本发明可实施的方式,删除所述Redis服务集群的至少一个从节点包括:
确定待删除从节点的ID、数据端口以及IP地址,将所述待删除从节点的slot插槽转移至任一所述Redis服务集群的主节点,根据所述待删除从节点的ID、数据端口以及IP地址删除所述待删除从节点,将接收所述slot插槽的主节点的ID作为所述待删除从节点的slot插槽的数据源ID;
或者,增加所述Redis服务集群的至少一个从节点包括:
启动用作所述从节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述从节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述从节点分配slot插槽,将新的所述从节点设定为所述Redis服务集群的任一主节点的从节点。
作为本发明可实施的方式,删除所述Redis服务集群的至少一个主节点包括:
确定待删除主节点的ID、数据端口以及IP地址,将所述待删除主节点的slot插槽转移至剩余的任一主节点,根据所述待删除主节点的ID、数据端口以及IP地址删除所述待删除主节点,将接收所述slot插槽的主节点的ID作为所述待删除主节点的slot插槽的数据源ID;
或者,增加所述Redis服务集群的至少一个主节点包括:
启动用作所述主节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述主节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述主节点分配slot插槽。
作为本发明可实施的方式,所述方法还包括:
当从所述处理结果key获取所有所述应用服务的所述处理结果的时间超时时,记录相应的超时日志,并对相同的所述输入数据重新进行处理;或
当所有所述应用服务的处理器标识key的赋值均为所述第四状态值时,统计已处理的数据条数,当所述已处理的数据条数与所述待处理数据队列key的数据条数不相等时,记录相应的数量不等日志,并对相同的所述输入数据重新进行处理。
第二方面,本发明实施例提供一种基于Redis的数据分布式处理装置,包括:
节点调整模块,用于判断Redis服务集群当前的工作状态是否需要改变节点数量,并在所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,否则维持节点数量不变;
接收控制模块,用于通过所述Redis服务集群的任一节点接收请求接入的服务提供的输入数据;
存储控制模块,用于控制所述Redis服务集群存储所述输入数据至待处理数据队列key,并更新数据队列开始标志key的赋值为第一状态值,当所述Redis服务集群完成所述输入数据的存储时,更新数据队列结束标志key的赋值为第二状态值,并记录所述待处理数据队列key的数据条数;
业务处理控制模块,用于当所述Redis服务集群的各所述节点读取到所述数据队列开始标志key的赋值为第一状态值时,控制各所述节点的应用服务从所述待处理数据队列key读取需要处理的所述输入数据进行业务处理,使所述Redis服务集群更新各所述应用服务的处理器标识key为第三状态值,并将各所述应用服务进行业务处理的处理结果保存至处理结果key;以及当任一所述应用服务从所述待处理数据队列key中读取数据为空,且读取到所述数据队列结束标志key的赋值为第二状态值时,控制所述Redis服务集群更新对应的所述应用服务的处理器标识key的赋值为第四状态值;
输出控制模块,用于在所有参与业务处理的所述应用服务处理完毕后,控制接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果。
第三方面,本发明实施例提供一种计算机设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使得所述至少一个处理器能够执行如上所述的基于Redis的数据分布式处理方法的步骤。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被至少一个处理器执行时实现如上所述的基于Redis的数据分布式处理方法的步骤。
根据本发明实施例提供的基于Redis的数据分布式处理方法、装置及计算机设备、存储介质,通过判断所述Redis服务集群当前的工作状态是否需要改变节点数量,并当所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,因此实现了动态增加或者删除所述Redis服务集群的节点数,动态调整所述Redis服务集群的数据处理能力。
其次,所述基于Redis的数据分布式处理方法根据数据队列开始标志key、数据队列结束标志key、待处理数据队列key、处理器标识key、待处理数据队列key等指令对所述输入数据进行分布式处理,使得所述基于Redis的数据分布式处理方法能够大大提升数据处理效率,充分利用所述Redis服务集群的数据处理能力,实现了多节点无干扰数据并行处理。
附图说明
为了更清楚地说明本发明的方案,下面将对实施例描述中所需要使用的附图作一个简单介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于Redis的数据分布式处理方法的流程图;
图2为本发明实施例提供的数据处理的架构图;
图3为本发明实施例提供的基于Redis的数据分布式处理装置的结构框图;
图4为本发明实施例提供的基于Redis的数据分布式处理装置的另一结构框图;
图5为本发明实施例提供的计算机设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
在说明书中的各个位置出现的“实施例”该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明实施例提供一种基于Redis的数据分布式处理方法,其中Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的存储系统。下文中将提到的各类Key指的是Redis的命令,也称为键,不同的Key代表了不同的命令,Key可以被定义、执行和取消,此外Key的赋值可以更新。
具体的,如图1所示,所述基于Redis的数据分布式处理方法包括:
S10、判断Redis服务集群当前的工作状态是否需要改变节点数量,并在所述Redis服务集群当前的工作状态需要改变节点数量时执行S20,否者执行S30;
S20、改变所述Redis服务集群的节点数量;
S30、维持节点数量不变;
S40、通过所述Redis服务集群的任一节点接收请求接入的服务提供的输入数据;
S50、控制所述Redis服务集群存储所述输入数据至待处理数据队列key,并更新数据队列开始标志key的赋值为第一状态值,当所述Redis服务集群完成所述输入数据的存储时,更新数据队列结束标志key的赋值为第二状态值,并记录所述待处理数据队列key的数据条数;
S60、当所述Redis服务集群的各所述节点读取到所述数据队列开始标志key的赋值为第一状态值时,控制各所述节点的应用服务从所述待处理数据队列key读取需要处理的所述输入数据进行业务处理,使所述Redis服务集群更新各所述应用服务的处理器标识key为第三状态值,并将各所述应用服务进行业务处理的处理结果保存至处理结果key;
S70、当任一所述应用服务从所述待处理数据队列key中读取数据为空,且读取到所述数据队列结束标志key的赋值为第二状态值时,控制所述Redis服务集群更新对应的所述应用服务的处理器标识key的赋值为第四状态值;
S80、在所有参与业务处理的所述应用服务处理完毕后,控制接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果。
对于步骤S10,在本发明一些实施例中,所述判断所述Redis服务集群当前的工作状态是否需要改变节点数量包括:统计所述Redis服务集群当前的所述节点数量的数据容量和数据冗余量;根据所述Redis服务集群当前的所述节点数量的数据容量是否满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,以及所述数据冗余量是否达到冗余量阈值来判断是否需要改变节点的数量。
相应的,对于步骤S2O,所述改变所述Redis服务集群的节点数量包括:当所述Redis服务集群当前的所述节点数量的数据容量满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,获取所述数据冗余量达到冗余量阈值时,为所述Redis服务集群删除至少一个节点;当所述Redis服务集群当前的所述节点数量的数据容量不满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,且获取所述数据冗余量小于冗余量阈值时,为所述Redis服务集群增加至少一个节点。
进一步地,在本发明实施例中,所述Redis服务集群的节点可包括主节点和从街道,相应的,所述改变所述Redis服务集群的节点数量包括:增加或者删除所述Redis服务集群的至少一个从节点和/或至少一个主节点。
下面对增加或者删除从节点或者主节点的过程进行说明。
(1)从节点
首先对于删除所述Redis服务集群的至少一个从节点的过程可包括:确定待删除从节点的ID、数据端口以及IP地址,将所述待删除从节点的slot插槽转移至任一所述Redis服务集群的主节点,根据所述待删除从节点的ID、数据端口以及IP地址删除所述待删除从节点,将接收所述slot插槽的主节点的ID作为所述待删除从节点的slot插槽的数据源ID;
其次,对于增加所述Redis服务集群的至少一个从节点的步骤可包括:启动用作所述从节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述从节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述从节点分配slot插槽,将新的所述从节点设定为所述Redis服务集群的任一主节点的从节点。
(2)主节点
首先,对于删除所述Redis服务集群的至少一个主节点的过程可包括:确定待删除主节点的ID、数据端口以及IP地址,将所述待删除主节点的slot插槽转移至剩余的任一主节点,根据所述待删除主节点的ID、数据端口以及IP地址删除所述待删除主节点,将接收所述slot插槽的主节点的ID作为所述待删除主节点的slot插槽的数据源ID;
其次,对于增加所述Redis服务集群的至少一个主节点的过程包括:启动用作所述主节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述主节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述主节点分配slot插槽。
对于步骤S40,所述输入数据由请求接入的服务提供,参阅图2,请求接入的服务把要处理的输入数据提供给Redis服务集群进行存储和后续处理,位于不同节点的应用服务1至应用服务N均与所述Redis服务集群保持长连接。需要说明的是,在另外的实施例中,步骤S40也可以是在步骤S10之前。
对于步骤S50,所述第一状态值和所述第二状态值在具体的实施例中可分别为“start”和“end”,分别表示数据存储的开始与结束。其中,所述数据队列key的value类型为List类型;所述数据队列开始标志key的value类型为String类型。
对于步骤S60,所述第三状态值可以是“runc”,表示应用服务正处于数据处理状态。其中,所述数据队列结束标志key的value类型为String类型;所述待处理数据队列key的value类型为List类型;所述待处理数据队列key的value类型为List类型,所述待处理数据队列key用于存放需要处理的所述输入数据。结合图2,所述应用服务1至应用服务N轮询所述Redis服务集群,从所述Redis服务集群获取需要处理的数据进行相应的业务处理,并向所述Redis服务集群返回处理结果。
对于步骤S70,所述第四状态值可以是“runc”,表示应用服务处于数据处理结束状态。其中,所述处理器标识key的value类型为List类型,所述处理器标识key用于存放参与数据处理的服务信息;所述处理结果key用于所述业务处理的处理结果。
对于步骤S80,所述在所有参与业务处理的所述应用服务处理完毕后,使接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果的步骤包括:接收输入数据的所述节点轮询获取所有所述应用服务的处理器标识key的赋值,当所有所述应用服务的处理器标识key的赋值均为所述第四状态值时,所述节点从所述处理结果key获取所有所述应用服务的所述处理结果。
进一步地,在本发明一些实施例中,当从所述处理结果key获取所有所述应用服务的所述处理结果的时间超时时,记录相应的超时日志,并重新执行步骤S40至S70,对相同的所述输入数据重新进行处理。
在另一些实施例中,当所有所述应用服务的处理器标识key的赋值均为所述第四状态值时,统计已处理的数据条数,当所述已处理的数据条数与所述待处理数据队列key的数据条数不相等时,记录相应的数量不等日志,并重新执行步骤S40至S70,对相同的所述输入数据重新进行处理。
根据本发明实施例提供的基于Redis的数据分布式处理方法,通过判断所述Redis服务集群当前的工作状态是否需要改变节点数量,并当所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,因此实现了动态增加或者删除所述Redis服务集群的节点数,动态调整所述Redis服务集群的数据处理能力。
其次,所述基于Redis的数据分布式处理方法根据数据队列开始标志key、数据队列结束标志key、待处理数据队列key、处理器标识key、待处理数据队列key等指令对所述输入数据进行分布式处理,使得所述基于Redis的数据分布式处理方法能够大大提升数据处理效率,充分利用所述Redis服务集群的数据处理能力,实现了多节点无干扰数据并行处理。
本发明实施例提供一种基于Redis的数据分布式处理装置,如图3所示,所述装置包括节点调整模块10、接收控制模块20、存储控制模块30、业务处理控制模块40和输出控制模块50,其中:
所述节点调整模块10用于判断Redis服务集群当前的工作状态是否需要改变节点数量,并在所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,否则维持节点数量不变;
所述接收控制模块20用于通过所述Redis服务集群的任一节点接收请求接入的服务提供的输入数据;在本实施例中,所述输入数据由请求接入的服务提供,具体可参阅图2和上述实施例中相关说明。
所述存储控制模块30用于控制所述Redis服务集群存储所述输入数据至待处理数据队列key,并更新数据队列开始标志key的赋值为第一状态值,当所述Redis服务集群完成所述输入数据的存储时,更新数据队列结束标志key的赋值为第二状态值,并记录所述待处理数据队列key的数据条数;所述第一状态值和所述第二状态值在具体的实施例中可分别为“start”和“end”,分别表示数据存储的开始与结束。其中,所述数据队列key的value类型为List类型;所述数据队列开始标志key的value类型为String类型;。
所述业务处理控制模块40用于当所述Redis服务集群的各所述节点读取到所述数据队列开始标志key的赋值为第一状态值时,控制各所述节点的应用服务从所述待处理数据队列key读取需要处理的所述输入数据进行业务处理,使所述Redis服务集群更新各所述应用服务的处理器标识key为第三状态值,并将各所述应用服务进行业务处理的处理结果保存至处理结果key;以及当任一所述应用服务从所述待处理数据队列key中读取数据为空,且读取到所述数据队列结束标志key的赋值为第二状态值时,控制所述Redis服务集群更新对应的所述应用服务的处理器标识key的赋值为第四状态值;所述第三状态值可以是“runc”,表示应用服务正处于数据处理状态;所述第四状态值可以是“runc”,表示应用服务处于数据处理结束状态。其中,所述数据队列结束标志key的value类型为String类型;所述待处理数据队列key的value类型为List类型;所述待处理数据队列key的value类型为List类型,所述待处理数据队列key用于存放需要处理的所述输入数据;所述处理器标识key的value类型为List类型,所述处理器标识key用于存放参与数据处理的服务信息;所述处理结果key用于所述业务处理的处理结果。结合图2,所述应用服务1至应用服务N轮询所述Redis服务集群,从所述Redis服务集群获取需要处理的数据进行相应的业务处理,并向所述Redis服务集群返回处理结果。
所述输出控制模块50用于在所有参与业务处理的所述应用服务处理完毕后,控制接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果。
在本发明一些实施例中,所述节点调整模块10在判断Redis服务集群当前的工作状态是否需要改变节点数量时,具体用于统计所述Redis服务集群当前的所述节点数量的数据容量和数据冗余量;根据所述Redis服务集群当前的所述节点数量的数据容量是否满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,以及所述数据冗余量是否达到冗余量阈值来判断是否需要改变节点的数量。
相应的,所述节点调整模块10改变所述Redis服务集群的节点数量时,具体用于当所述Redis服务集群当前的所述节点数量的数据容量满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,获取所述数据冗余量达到冗余量阈值时,为所述Redis服务集群删除至少一个节点;当所述Redis服务集群当前的所述节点数量的数据容量不满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,且获取所述数据冗余量小于冗余量阈值时,为所述Redis服务集群增加至少一个节点。
进一步地,在本发明实施例中,所述Redis服务集群的节点可包括主节点和从街道,相应的,所述节点调整模块10改变所述Redis服务集群的节点数量包括:增加或者删除所述Redis服务集群的至少一个从节点和/或至少一个主节点。
下面对增加或者删除从节点或者主节点的过程进行说明。
(1)从节点
首先,对于所述节点调整模块10删除所述Redis服务集群的至少一个从节点的过程可包括:确定待删除从节点的ID、数据端口以及IP地址,将所述待删除从节点的slot插槽转移至任一所述Redis服务集群的主节点,根据所述待删除从节点的ID、数据端口以及IP地址删除所述待删除从节点,将接收所述slot插槽的主节点的ID作为所述待删除从节点的slot插槽的数据源ID;
其次,对于所述节点调整模块10增加所述Redis服务集群的至少一个从节点的步骤可包括:启动用作所述从节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述从节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述从节点分配slot插槽,将新的所述从节点设定为所述Redis服务集群的任一主节点的从节点。
(2)主节点
首先,对于所述节点调整模块10删除所述Redis服务集群的至少一个主节点的过程可包括:确定待删除主节点的ID、数据端口以及IP地址,将所述待删除主节点的slot插槽转移至剩余的任一主节点,根据所述待删除主节点的ID、数据端口以及IP地址删除所述待删除主节点,将接收所述slot插槽的主节点的ID作为所述待删除主节点的slot插槽的数据源ID;
其次,对于所述节点调整模块10增加所述Redis服务集群的至少一个主节点的过程包括:启动用作所述主节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述主节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述主节点分配slot插槽。
在本实施例中,所述输出控制模块50在所有参与业务处理的所述应用服务处理完毕后,使接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果时,具体用于接收输入数据的所述节点轮询获取所有所述应用服务的处理器标识key的赋值,当所有所述应用服务的处理器标识key的赋值均为所述第四状态值时,所述节点从所述处理结果key获取所有所述应用服务的所述处理结果。
进一步地,如图4所示,所述装置还包括监控模块60,在本发明一些实施例中,所述监控模块60用于当从所述处理结果key获取所有所述应用服务的所述处理结果的时间超时,记录相应的超时日志。此时将通过所述接收控制模块20、存储控制模块30、业务处理控制模块40和输出控制模块50对相同的所述输入数据重新进行处理。
在另一些实施例中,所述监控模块60用于当所有所述应用服务的处理器标识key的赋值均为所述第四状态值时,统计已处理的数据条数,当所述已处理的数据条数与所述待处理数据队列key的数据条数不相等时,记录相应的数量不等日志。此时将通过所述接收控制模块20、存储控制模块30、业务处理控制模块40和输出控制模块50对相同的所述输入数据重新进行处理。
根据本发明实施例提供的基于Redis的数据分布式处理装置,通过判断所述Redis服务集群当前的工作状态是否需要改变节点数量,并当所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,因此实现了动态增加或者删除所述Redis服务集群的节点数,动态调整所述Redis服务集群的数据处理能力。
其次,所述基于Redis的数据分布式处理方法根据数据队列开始标志key、数据队列结束标志key、待处理数据队列key、处理器标识key、待处理数据队列key等指令对所述输入数据进行分布式处理,使得所述基于Redis的数据分布式处理方法能够大大提升数据处理效率,充分利用所述Redis服务集群的数据处理能力,实现了多节点无干扰数据并行处理。
本发明实施例还提供一种计算机设备,如图5所示,所述计算机设备包括至少一个处理器501,以及与所述至少一个处理器501通信连接的存储器502,图5中示出一个处理器501,所述存储器502存储有可被所述至少一个处理器501执行的指令,所述指令被所述至少一个处理器501执行,以使所述至少一个处理器501能够执行如上所述的基于Redis的数据分布式处理方法的步骤。
具体的,本发明实施例中的存储器502为非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请上述实施例中的基于Redis的数据分布式处理方法对应的程序指令/模块;所述处理器501通过运行存储在存储器502中的非易失性软件程序、指令以及模块,从而执行各种功能应用以及进行数据处理,即实现上述方法实施例中所述的基于Redis的数据分布式处理方法。
在一些实施例中,所述存储器502可以包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需要的应用程序;数据存储区可存储基于Redis的数据分布式处理方法的处理过程中所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件;
在一些实施例中,存储器502可选包括相对于处理器501远程设置的远程存储器,这些远程存储器可以通过网络连接至执行域名过滤处理的计算机设备,前述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在本发明实施例中,执行基于Redis的数据分布式处理方法的计算机设备还可以包括输入装置503和输出装置504;其中,输入装置503可获取用户在计算机设备上的操作信息,输出装置504可包括显示屏等显示设备。在本发明实施例中,所述处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图5中以通过总线连接为例。
根据本发明实施例提供的计算机设备,通过处理器501执行存储器502中的代码时能够执行上述实施例中基于Redis的数据分布式处理方法的步骤,且具有上述方法实施例的技术效果,未在本实施例中详尽描述的技术细节,可参见本申请方法实施例中所提供的技术内容。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被至少一个处理器执行时,能够实现如上所述的基于Redis的数据分布式处理方法的步骤,当执行所述方法的步骤时,具有上述方法实施例的技术效果,未在本实施例中详尽描述的技术细节,可参见本申请方法实施例中所提供的技术内容。
本发明实施例还提供一种计算机程序产品,所述产品可执行本申请方法实施例中所提供的基于Redis的数据分布式处理方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请方法实施例中所提供的技术内容。
需要说明的是,在本发明上述实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或智能终端设备或处理器(Processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本发明所提供的上述实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,至少两个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到至少两个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
显然,以上所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例,附图中给出了本发明的较佳实施例,但并不限制本发明的专利范围。本发明可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体
实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本发明说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本发明专利保护范围之内。
Claims (10)
1.一种基于Redis的数据分布式处理方法,其特征在于,包括:
判断Redis服务集群当前的工作状态是否需要改变节点数量,并在所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,否则维持节点数量不变;
通过所述Redis服务集群的任一节点接收请求接入的服务提供的输入数据;
控制所述Redis服务集群存储所述输入数据至待处理数据队列key,并更新数据队列开始标志key的赋值为第一状态值,当所述Redis服务集群完成所述输入数据的存储时,更新数据队列结束标志key的赋值为第二状态值,并记录所述待处理数据队列key的数据条数;
当所述Redis服务集群的各所述节点读取到所述数据队列开始标志key的赋值为第一状态值时,控制各所述节点的应用服务从所述待处理数据队列key读取需要处理的所述输入数据进行业务处理,使所述Redis服务集群更新各所述应用服务的处理器标识key为第三状态值,并将各所述应用服务进行业务处理的处理结果保存至处理结果key;
当任一所述应用服务从所述待处理数据队列key中读取数据为空,且读取到所述数据队列结束标志key的赋值为第二状态值时,控制所述Redis服务集群更新对应的所述应用服务的处理器标识key的赋值为第四状态值;
在所有参与业务处理的所述应用服务处理完毕后,控制接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果。
2.根据权利要求1所述的基于Redis的数据分布式处理方法,其特征在于,所述判断所述Redis服务集群当前的工作状态是否需要改变节点数量包括:
统计所述Redis服务集群当前的所述节点数量的数据容量和数据冗余量;根据所述Redis服务集群当前的所述节点数量的数据容量是否满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,以及所述数据冗余量是否达到冗余量阈值来判断是否需要改变节点的数量。
3.根据权利要求2所述的基于Redis的数据分布式处理方法,其特征在于,所述改变所述Redis服务集群的节点数量包括:
当所述Redis服务集群当前的所述节点数量的数据容量满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,获取所述数据冗余量达到冗余量阈值时,为所述Redis服务集群删除至少一个节点;
当所述Redis服务集群当前的所述节点数量的数据容量不满足请求接入的服务提供的输入数据的量和所有参与业务处理的所述应用服务的数据吞吐量,且获取所述数据冗余量小于冗余量阈值时,为所述Redis服务集群增加至少一个节点。
4.根据权利要求2或3所述的基于Redis的数据分布式处理方法,其特征在于,所述改变所述Redis服务集群的节点数量包括:
增加或者删除所述Redis服务集群的至少一个从节点和/或至少一个主节点。
5.根据权利要求4所述的基于Redis的数据分布式处理方法,其特征在于,删除所述Redis服务集群的至少一个从节点包括:
确定待删除从节点的ID、数据端口以及IP地址,将所述待删除从节点的slot插槽转移至任一所述Redis服务集群的主节点,根据所述待删除从节点的ID、数据端口以及IP地址删除所述待删除从节点,将接收所述slot插槽的主节点的ID作为所述待删除从节点的slot插槽的数据源ID;
或者,增加所述Redis服务集群的至少一个从节点包括:
启动用作所述从节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述从节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述从节点分配slot插槽,将新的所述从节点设定为所述Redis服务集群的任一主节点的从节点。
6.根据权利要求4所述的基于Redis的数据分布式处理方法,其特征在于,删除所述Redis服务集群的至少一个主节点包括:
确定待删除主节点的ID、数据端口以及IP地址,将所述待删除主节点的slot插槽转移至剩余的任一主节点,根据所述待删除主节点的ID、数据端口以及IP地址删除所述待删除主节点,将接收所述slot插槽的主节点的ID作为所述待删除主节点的slot插槽的数据源ID;
或者,增加所述Redis服务集群的至少一个主节点包括:
启动用作所述主节点的服务器,在所述服务器上创建文件夹载入并运行相应的配置文件,将所述服务器作为新的所述主节点添加到所述Redis服务集群中,并与所述Redis服务集群中已有的主节点和从节点互连,为新的所述主节点分配slot插槽。
7.根据权利要求1至3任一项所述的基于Redis的数据分布式处理方法,其特征在于,所述方法还包括:
当从所述处理结果key获取所有所述应用服务的所述处理结果的时间超时时,记录相应的超时日志,并对相同的所述输入数据重新进行处理;或者
当所有所述应用服务的处理器标识key的赋值均为所述第四状态值时,统计已处理的数据条数,当所述已处理的数据条数与所述待处理数据队列key的数据条数不相等时,记录相应的数量不等日志,并对相同的所述输入数据重新进行处理。
8.一种基于Redis的数据分布式处理装置,其特征在于,包括:
节点调整模块,用于判断Redis服务集群当前的工作状态是否需要改变节点数量,并在所述Redis服务集群当前的工作状态需要改变节点数量时,改变所述Redis服务集群的节点数量,否则维持节点数量不变;
接收控制模块,用于通过所述Redis服务集群的任一节点接收请求接入的服务提供的输入数据;
存储控制模块,用于控制所述Redis服务集群存储所述输入数据至待处理数据队列key,并更新数据队列开始标志key的赋值为第一状态值,当所述Redis服务集群完成所述输入数据的存储时,更新数据队列结束标志key的赋值为第二状态值,并记录所述待处理数据队列key的数据条数;
业务处理控制模块,用于当所述Redis服务集群的各所述节点读取到所述数据队列开始标志key的赋值为第一状态值时,控制各所述节点的应用服务从所述待处理数据队列key读取需要处理的所述输入数据进行业务处理,使所述Redis服务集群更新各所述应用服务的处理器标识key为第三状态值,并将各所述应用服务进行业务处理的处理结果保存至处理结果key;以及当任一所述应用服务从所述待处理数据队列key中读取数据为空,且读取到所述数据队列结束标志key的赋值为第二状态值时,控制所述Redis服务集群更新对应的所述应用服务的处理器标识key的赋值为第四状态值;
输出控制模块,用于在所有参与业务处理的所述应用服务处理完毕后,控制接收输入数据的所述节点从所述处理结果key获取所有所述应用服务的处理结果。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行时,使得所述至少一个处理器执行如权利要求1至7中任一项所述的基于Redis的数据分布式处理方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机可读指令,所述计算机可读指令被至少一个处理器执行时实现如权利要求1至7中任一项权利要求所述的基于Redis的数据分布式处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516420.8A CN110445828B (zh) | 2019-06-14 | 2019-06-14 | 一种基于Redis的数据分布式处理方法及其相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910516420.8A CN110445828B (zh) | 2019-06-14 | 2019-06-14 | 一种基于Redis的数据分布式处理方法及其相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110445828A CN110445828A (zh) | 2019-11-12 |
CN110445828B true CN110445828B (zh) | 2023-04-18 |
Family
ID=68429177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910516420.8A Active CN110445828B (zh) | 2019-06-14 | 2019-06-14 | 一种基于Redis的数据分布式处理方法及其相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110445828B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258724B (zh) * | 2020-01-14 | 2024-02-06 | 平安银行股份有限公司 | 一种分布式系统的数据处理方法、装置、设备和存储介质 |
CN111813513B (zh) * | 2020-06-24 | 2024-05-14 | 中国平安人寿保险股份有限公司 | 基于分布式的实时任务调度方法、装置、设备及介质 |
CN112256931A (zh) * | 2020-10-26 | 2021-01-22 | 北京神州数字科技有限公司 | 一种数据提取方法 |
CN112463828B (zh) * | 2020-11-02 | 2021-07-27 | 马上消费金融股份有限公司 | 一种数据处理方法、装置、设备、系统及可读存储介质 |
CN112737934B (zh) * | 2020-12-28 | 2023-07-18 | 常州森普信息科技有限公司 | 一种集群式物联网边缘网关装置及方法 |
CN113794764A (zh) * | 2021-09-10 | 2021-12-14 | 小红书科技有限公司 | 服务器集群的请求处理方法、介质和电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104158911A (zh) * | 2014-09-01 | 2014-11-19 | 青岛海信电器股份有限公司 | 一种面向服务器集群的控制方法及系统 |
CN106453564A (zh) * | 2016-10-18 | 2017-02-22 | 北京京东尚科信息技术有限公司 | 弹性云分布式海量请求处理的方法、装置及系统 |
CN108833503A (zh) * | 2018-05-29 | 2018-11-16 | 华南理工大学 | 一种基于ZooKeeper的Redis集群方法 |
US10216770B1 (en) * | 2014-10-31 | 2019-02-26 | Amazon Technologies, Inc. | Scaling stateful clusters while maintaining access |
-
2019
- 2019-06-14 CN CN201910516420.8A patent/CN110445828B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104158911A (zh) * | 2014-09-01 | 2014-11-19 | 青岛海信电器股份有限公司 | 一种面向服务器集群的控制方法及系统 |
US10216770B1 (en) * | 2014-10-31 | 2019-02-26 | Amazon Technologies, Inc. | Scaling stateful clusters while maintaining access |
CN106453564A (zh) * | 2016-10-18 | 2017-02-22 | 北京京东尚科信息技术有限公司 | 弹性云分布式海量请求处理的方法、装置及系统 |
CN108833503A (zh) * | 2018-05-29 | 2018-11-16 | 华南理工大学 | 一种基于ZooKeeper的Redis集群方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110445828A (zh) | 2019-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110445828B (zh) | 一种基于Redis的数据分布式处理方法及其相关设备 | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
US11586673B2 (en) | Data writing and reading method and apparatus, and cloud storage system | |
CN109493076B (zh) | 一种Kafka消息唯一消费方法、系统、服务器及存储介质 | |
US10057341B2 (en) | Peer-to-peer architecture for web traffic management | |
CN110413650B (zh) | 一种业务数据的处理方法、装置、设备和存储介质 | |
CN108196959B (zh) | Etl系统的资源管理方法及装置 | |
EP2989543A1 (en) | Method and device for updating client | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
US9514170B1 (en) | Priority queue using two differently-indexed single-index tables | |
CN109086382B (zh) | 一种数据同步方法、装置、设备及存储介质 | |
CN109241099B (zh) | 一种数据查询方法及终端设备 | |
CN113297309B (zh) | 流数据写入方法、装置、设备及存储介质 | |
CN113342839A (zh) | 数据处理方法、装置、终端设备和存储介质 | |
CN108874930A (zh) | 文件属性信息统计方法、装置、系统、设备及存储介质 | |
CN111984505A (zh) | 一种运维数据采集引擎及采集方法 | |
CN111897643A (zh) | 线程池配置系统、方法、装置和存储介质 | |
CN108646987B (zh) | 一种文件卷的管理方法、装置、存储介质及终端 | |
CN112069152B (zh) | 一种数据库集群升级方法、装置、设备以及存储介质 | |
CN112711606A (zh) | 数据库访问方法、装置、计算机设备和存储介质 | |
CN112328392A (zh) | 一种数据处理方法及相关设备 | |
CN116467315A (zh) | 行为数据的分析方法、装置、设备及存储介质 | |
WO2020167469A1 (en) | Detecting second-order security vulnerabilities via modelling information flow through persistent storage | |
CN107422991B (zh) | 一种存储策略管理系统 | |
CN113726885A (zh) | 一种流量配额的调整方法和装置 |
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 |