CN106453512A - 一种Redis集群信息监控装置及方法 - Google Patents
一种Redis集群信息监控装置及方法 Download PDFInfo
- Publication number
- CN106453512A CN106453512A CN201610825221.1A CN201610825221A CN106453512A CN 106453512 A CN106453512 A CN 106453512A CN 201610825221 A CN201610825221 A CN 201610825221A CN 106453512 A CN106453512 A CN 106453512A
- Authority
- CN
- China
- Prior art keywords
- node
- redis
- redis cluster
- information
- configuration information
- 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.)
- Pending
Links
Classifications
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L67/025—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
-
- 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/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1051—Group master selection mechanisms
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种Redis集群信息监控装置及方法,涉及信息监控技术领域,该装置包括:初始化模块,用于获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;实时监控模块,用于实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;更新模块,用于判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表;本发明能够对运行中的Redis集群进行实时监控,实时监控Redis集群中各节点的主从关系、节点运行健康状态,且能够自动发现节点主从关系变化及扩展的新节点。
Description
技术领域
本发明涉及信息监控技术领域,尤其涉及一种Redis集群信息监控装置及方法。
背景技术
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、高性能的Key-Value数据库,并提供多种语言的API,同时Redis还支持集群的部署方式,支持主从同步,常用来实现软件或应用的数据缓存功能,由于Redis被广泛使用,且在生产环境中经常以集群的方式部署,所以监控Redis整个集群的状态,以保证软件或应用的正常运行是很有必要的,目前业界的Redis监控工具以独立地监控一个一个的Redis节点实例的信息,没有将整个Redis集群中各节点关联起来监控。
发明内容
本发明的主要目的在于提出一种Redis集群信息监控装置及方法,能够对运行中的Redis集群进行实时监控,实时监控Redis集群中各节点的主从关系、节点运行健康状态,且能够自动发现节点主从关系变化及扩展的新节点。
为实现上述目的,本发明提供的一种Redis集群信息监控装置,包括:
初始化模块,用于获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;
实时监控模块,用于实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;
更新模块,用于判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表。
可选地,所述初始化模块包括:
第一节点获取单元,用于获取Redis集群预先保存在数据库中的节点地址;
第一客户端创建单元,用于创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接;
第一配置信息获取单元,用于Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的配置信息;
初始映射表建立单元,用于从所述配置信息获取各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表。
可选地,所述初始化模块还包括:
主从判断单元,用于根据所述配置信息获取各节点的主从关系。
可选地,所述实时监控模块包括:
第二节点获取单元,用于从所述初始映射表以轮询的方式获取可用节点地址;
第二客户端创建单元,用于创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;
第二配置信息获取单元,用于Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;
节点信息获取单元,用于从所述当前配置信息及所述初始映射表获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;
节点信息保存单元,用于将所述各节点的节点信息保存到数据库中。
可选地,所述获取当前Redis集群配置信息具体为:周期性获取当前Redis集群配置信息。
作为本发明的另一个方面,提供的一种Redis集群信息监控方法,包括:
获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;
实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;
判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表。
可选地,所述获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表包括:
获取Redis集群预先保存在数据库中的节点地址;
创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接;
Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的配置信息;
从所述配置信息获取各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表。
可选地,所述获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表还包括:
根据所述配置信息获取各节点的主从关系。
可选地,所述实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息包括:
从所述初始映射表以轮询的方式获取可用节点地址;
创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;
Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;
从所述当前配置信息及所述初始映射表获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;
将所述各节点的节点信息保存到数据库中。
可选地,所述获取当前Redis集群配置信息具体为:周期性获取当前Redis集群配置信息。
本发明提出的一种Redis集群信息监控装置及方法,该装置包括:初始化模块,用于获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;实时监控模块,用于实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;更新模块,用于判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表;本发明能够对运行中的Redis集群进行实时监控,实时监控Redis集群中各节点的主从关系、节点运行健康状态,且能够自动发现节点主从关系变化及扩展的新节点。
附图说明
图1为实现本发明各个实施例的移动终端的硬件结构示意图;
图2为如图1所示的移动终端的无线通信系统示意图;
图3为本发明实施例一提供的一种Redis集群信息监控装置示范性结构框图;
图4为本发明实施例一提供的初始映射表;
图5为本发明实施例二提供的一种Redis集群信息监控装置示范性结构框图;
图6为本发明实施例二提供的另一种Redis集群信息监控装置示范性结构框图;
图7为本发明实施例三提供的一种Redis集群信息监控装置示范性结构框图;
图8为本发明实施例四提供的一种Redis集群信息监控方法流程图;
图9为本发明实施例五提供的一种Redis集群信息监控方法流程图;
图10为本发明实施例六提供的一种Redis集群信息监控方法流程图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现在将参考附图描述实现本发明各个实施例的移动终端。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身并没有特定的意义。因此,"模块"与"部件"可以混合地使用。
移动终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如移动电话、智能电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、导航装置等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。下面,假设终端是移动终端。然而,本领域技术人员将理解的是,除了特别用于移动目的的元件之外,根据本发明的实施方式的构造也能够应用于固定类型的终端。
图1为实现本发明各个实施例一个可选的移动终端的硬件结构示意图。
移动终端100可以包括无线通信单元110、A/V(音频/视频)输入单元120、用户输入单元130、感测单元140、输出单元150、存储器160、接口单元170、控制器180和电源单元190等等。图1示出了具有各种组件的移动终端,但是应理解的是,并不要求实施所有示出的组件。可以替代地实施更多或更少的组件。将在下面详细描述移动终端的元件。
无线通信单元110通常包括一个或多个组件,其允许移动终端100与无线通信系统或网络之间的无线电通信。例如,无线通信单元可以包括移动通信模块112、无线互联网模块113、短程通信模块114中的至少一个。
移动通信模块112将无线电信号发送到基站(例如,接入点、节点B等等)、外部终端以及服务器中的至少一个和/或从其接收无线电信号。这样的无线电信号可以包括语音通话信号、视频通话信号、或者根据文本和/或多媒体消息发送和/或接收的各种类型的数据。
无线互联网模块113支持移动终端的无线互联网接入。该模块可以内部或外部地耦接到终端。该模块所涉及的无线互联网接入技术可以包括WLAN(无线LAN)(Wi-Fi)、Wibro(无线宽带)、Wimax(全球微波互联接入)、HSDPA(高速下行链路分组接入)等等。
短程通信模块114是用于支持短程通信的模块。短程通信技术的一些示例包括蓝牙TM、射频识别(RFID)、红外数据协会(IrDA)、超宽带(UWB)、紫蜂TM等等。
A/V输入单元120用于接收音频或视频信号。A/V输入单元120可以包括麦克风1220,麦克风122可以在电话通话模式、记录模式、语音识别模式等等运行模式中经由麦克风接收声音(音频数据),并且能够将这样的声音处理为音频数据。处理后的音频(语音)数据可以在电话通话模式的情况下转换为可经由移动通信模块112发送到移动通信基站的格式输出。麦克风122可以实施各种类型的噪声消除(或抑制)算法以消除(或抑制)在接收和发送音频信号的过程中产生的噪声或者干扰。
用户输入单元130可以根据用户输入的命令生成键输入数据以控制移动终端的各种操作。用户输入单元130允许用户输入各种类型的信息,并且可以包括键盘、锅仔片、触摸板(例如,检测由于被接触而导致的电阻、压力、电容等等的变化的触敏组件)、滚轮、摇杆等等。特别地,当触摸板以层的形式叠加在显示单元151上时,可以形成触摸屏。
感测单元140检测移动终端100的当前状态,(例如,移动终端100的打开或关闭状态)、移动终端100的位置、用户对于移动终端100的接触(即,触摸输入)的有无、移动终端100的取向、移动终端100的加速或减速移动和方向等等,并且生成用于控制移动终端100的操作的命令或信号。例如,当移动终端100实施为滑动型移动电话时,感测单元140可以感测该滑动型电话是打开还是关闭。另外,感测单元140能够检测电源单元190是否提供电力或者接口单元170是否与外部装置耦接。
接口单元170用作至少一个外部装置与移动终端100连接可以通过的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。识别模块可以是存储用于验证用户使用移动终端100的各种信息并且可以包括用户识别模块(UIM)、客户识别模块(SIM)、通用客户识别模块(USIM)等等。另外,具有识别模块的装置(下面称为"识别装置")可以采取智能卡的形式,因此,识别装置可以经由端口或其它连接装置与移动终端100连接。接口单元170可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到移动终端100内的一个或多个元件或者可以用于在移动终端和外部装置之间传输数据。
另外,当移动终端100与外部底座连接时,接口单元170可以用作允许通过其将电力从底座提供到移动终端100的路径或者可以用作允许从底座输入的各种命令信号通过其传输到移动终端的路径。从底座输入的各种命令信号或电力可以用作用于识别移动终端是否准确地安装在底座上的信号。输出单元150被构造为以视觉、音频和/或触觉方式提供输出信号(例如,音频信号、视频信号、警报信号、振动信号等等)。输出单元150可以包括音频输出模块152等等。
音频输出模块152可以在移动终端处于呼叫信号接收模式、通话模式、记录模式、语音识别模式、广播接收模式等等模式下时,将无线通信单元110接收的或者在存储器160中存储的音频数据转换音频信号并且输出为声音。而且,音频输出模块152可以提供与移动终端100执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出模块152可以包括扬声器、蜂鸣器等等。
存储器160可以存储由控制器180执行的处理和控制操作的软件程序等等,或者可以暂时地存储己经输出或将要输出的数据(例如,电话簿、消息、静态图像、视频等等)。而且,存储器160可以存储关于当触摸施加到触摸屏时输出的各种方式的振动和音频信号的数据。
存储器160可以包括至少一种类型的存储介质,所述存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等等。而且,移动终端100可以与通过网络连接执行存储器160的存储功能的网络存储装置协作。
控制器180通常控制移动终端的总体操作。例如,控制器180执行与语音通话、数据通信、视频通话等等相关的控制和处理。另外,控制器180可以包括用于再现(或回放)多媒体数据的多媒体模块1810,多媒体模块1810可以构造在控制器180内,或者可以构造为与控制器180分离。控制器180可以执行模式识别处理,以将在触摸屏上执行的手写输入或者图片绘制输入识别为字符或图像。
电源单元190在控制器180的控制下接收外部电力或内部电力并且提供操作各元件和组件所需的适当的电力。
这里描述的各种实施方式可以以使用例如计算机软件、硬件或其任何组合的计算机可读介质来实施。对于硬件实施,这里描述的实施方式可以通过使用特定用途集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理装置(DSPD)、可编程逻辑装置(PLD)、现场可编程门阵列(FPGA)、处理器、控制器、微控制器、微处理器、被设计为执行这里描述的功能的电子单元中的至少一种来实施,在一些情况下,这样的实施方式可以在控制器180中实施。对于软件实施,诸如过程或功能的实施方式可以与允许执行至少一种功能或操作的单独的软件模块来实施。软件代码可以由以任何适当的编程语言编写的软件应用程序(或程序)来实施,软件代码可以存储在存储器160中并且由控制器180执行。
至此,己经按照其功能描述了移动终端。下面,为了简要起见,将描述诸如折叠型、直板型、摆动型、滑动型移动终端等等的各种类型的移动终端中的滑动型移动终端作为示例。因此,本发明能够应用于任何类型的移动终端,并且不限于滑动型移动终端。
参考图2,CDMA无线通信系统可以包括多个移动终端100、多个基站(BS)270、基站控制器(BSC)275和移动交换中心(MSC)280。MSC280被构造为与公共电话交换网络(PSTN)290形成接口。MSC280还被构造为与可以经由回程线路耦接到基站270的BSC275形成接口。回程线路可以根据若干己知的接口中的任一种来构造,所述接口包括例如E1/T1、ATM,IP、PPP、帧中继、HDSL、ADSL或xDSL。将理解的是,如图2中所示的系统可以包括多个BSC2750。
每个BS270可以服务一个或多个分区(或区域),由多向天线或指向特定方向的天线覆盖的每个分区放射状地远离BS270。或者,每个分区可以由用于分集接收的两个或更多天线覆盖。每个BS270可以被构造为支持多个频率分配,并且每个频率分配具有特定频谱(例如,1.25MHz,5MHz等等)。
分区与频率分配的交叉可以被称为CDMA信道。BS270也可以被称为基站收发器子系统(BTS)或者其它等效术语。在这样的情况下,术语"基站"可以用于笼统地表示单个BSC275和至少一个BS270。基站也可以被称为"蜂窝站"。或者,特定BS270的各分区可以被称为多个蜂窝站。
如图2中所示,广播发射器(BT)295将广播信号发送给在系统内操作的移动终端100。如图1中所示的广播接收模块111被设置在移动终端100处以接收由BT295发送的广播信号。在图2中,示出了几个全球定位系统(GPS)卫星300。卫星300帮助定位多个移动终端100中的至少一个。
在图2中,描绘了多个卫星300,但是理解的是,可以利用任何数目的卫星获得有用的定位信息。
作为无线通信系统的一个典型操作,BS270接收来自各种移动终端100的反向链路信号。移动终端100通常参与通话、消息收发和其它类型的通信。特定基站270接收的每个反向链路信号被在特定BS270内进行处理。获得的数据被转发给相关的BSC275。BSC提供通话资源分配和包括BS270之间的软切换过程的协调的移动管理功能。BSC275还将接收到的数据路由到MSC280,其提供用于与PSTN290形成接口的额外的路由服务。类似地,PSTN290与MSC280形成接口,MSC与BSC275形成接口,并且BSC275相应地控制BS270以将正向链路信号发送到移动终端100。
基于上述移动终端硬件结构以及通信系统,提出本发明方法各个实施例。
实施例一
如图3所示,在本实施例中,一种Redis集群信息监控装置,包括:
初始化模块10,用于获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;
实时监控模块20,用于实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;
更新模块30,用于判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表。
在本实施例中,该装置能够对运行中的Redis集群进行实时监控,实时监控Redis集群中各节点的主从关系、节点运行健康状态,且能够自动发现节点主从关系变化及扩展的新节点。
在本实施例中,Redis软件本身包括如下模块:Redis Client也即Redis客户端,和Redis Client API也即应用程序编程接口,用户通过Redis客户端连接Redis服务器,用户通过Redis Client API来执行Redis的命令语句。
在本实施例中,一种Redis集群信息监控分为两个阶段:一是获取集群初始化信息阶段,这一阶段由本实施例中的初始化模块来完成;二是实时监控阶段,这一阶段由本实施例中的实时监控模块来完成,并通过更新模块来给予必要的补充。
在获取集群初始化信息阶段,由于Redis集群需要配置一个节点地址(如:127.0.0.1:3001)以便于和Redis服务器连接,该节点地址预先保存在数据库中,因此,在此阶段,可以直接从数据库中获取该节点地址,然后再创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接,Redis客户端通过应用程序编程接口API执行获取集群节点命令(cluster nodes),获取Redis集群中的各节点的配置信息;例如:某一集群的六个节点的配置信息如下所示:
从上述例子可以看出,该集群6个节点的节点地址分别是127.0.0.1:3004、127.0.0.1:3002、127.0.0.1:3003、127.0.0.1:3005、127.0.0.1:3006、127.0.0.1:3001;同时可以判断出该集群中有3个主节点(master)和3个从节点(slave)。
从所述配置信息还可以获取各节点编号,也叫node ID,位于每个节点配置信息的第一个字段(如07c37dfeb235213a872192d90877d0cd55635b91)。
根据节点地址和节点编号建立所述节点地址和节点编号的初始映射表如图4所示,为了便于比较,可以将初始映射表放在缓存中,并根据监控数据随时更新。
在实时监控阶段,首先从所述初始映射表中获取一个可用的节点地址,具体地,从所述初始映射表以轮询的方式获取该可用节点地址;创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;之后的步骤与初始化阶段类似,Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;从所述当前配置信息及所述初始映射表,通过比较,获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;然后后将所述各节点的节点信息保存到数据库中;同时,通过比较当前配置信息和初始映射表的节点编号,可以判断Redis集群中是否有新的节点,若有,说明集群被扩展,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表,得到新的映射表,当再次监控,获取新的配置信息时,将会和该新的映射表进行比较,以获得各节点的节点信息。
在本实施例中,所述节点信息格式如下:
{
node_id:07c37dfeb235213a872192d90877d0cd55635b91,#Node ID
node_address:127.0.0.1:3004#节点地址
role:slave,#节点角色;master代表主节点,slave代表从节点
master_node_address:127.0.0.1:3001,#主节点地址
status:ok
#节点状态;判断方法:cluster nodes方法返回的信息中如果没有包括fail,说明节点ok,否则会有fail出现
}
在本实施例中,所述获取当前Redis集群配置信息可以是周期性获取,例如10S一次。
实施例二
如图5所示,在本实施例中,所述初始化模块10包括:
第一节点获取单元11,用于获取Redis集群预先保存在数据库中的节点地址;
第一客户端创建单元12,用于创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接;
第一配置信息获取单元13,用于Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的配置信息;
初始映射表建立单元14,用于从所述配置信息获取各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表。
如图6所示,在本实施例中,所述初始化模块10还包括:
主从判断单元15,用于根据所述配置信息获取各节点的主从关系。
在获取集群初始化信息阶段,由于Redis集群需要配置一个节点地址(如:127.0.0.1:3001)以便于和Redis服务器连接,该节点地址预先保存在数据库中,因此,在此阶段,可以直接从数据库中获取该节点地址,然后再创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接,Redis客户端通过应用程序编程接口API执行获取集群节点命令(cluster nodes),获取Redis集群中的各节点的配置信息。
实施例三
如图7所示,如图在本实施例中,所述实时监控模块20包括:
第二节点获取单元21,用于从所述初始映射表以轮询的方式获取可用节点地址;
第二客户端创建单元22,用于创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;
第二配置信息获取单元23,用于Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;
节点信息获取单元24,用于从所述当前配置信息及所述初始映射表获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;
节点信息保存单元25,用于将所述各节点的节点信息保存到数据库中。
在实时监控阶段,首先从所述初始映射表中获取一个可用的节点地址,具体地,从所述初始映射表以轮询的方式获取该可用节点地址;创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;之后的步骤与初始化阶段类似,Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;从所述当前配置信息及所述初始映射表,通过比较,获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;然后后将所述各节点的节点信息保存到数据库中;同时,通过比较当前配置信息和初始映射表的节点编号,可以判断Redis集群中是否有新的节点,若有,说明集群被扩展,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表,得到新的映射表,当再次监控,获取新的配置信息时,将会和该新的映射表进行比较,以获得各节点的节点信息。
实施例四
如图8所示,在本实施例中,一种Redis集群信息监控方法,包括:
S10、获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;
S20、实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;
S30、判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表。
在本实施例中,该方法能够对运行中的Redis集群进行实时监控,实时监控Redis集群中各节点的主从关系、节点运行健康状态,且能够自动发现节点主从关系变化及扩展的新节点。
在本实施例中,Redis软件本身包括如下模块:Redis Client也即Redis客户端,和Redis Client API也即应用程序编程接口,用户通过Redis客户端连接Redis服务器,用户通过Redis Client API来执行Redis的命令语句。
在本实施例中,一种Redis集群信息监控分为两个阶段:一是获取集群初始化信息阶段,这一阶段由本实施例中的初始化模块来完成;二是实时监控阶段,这一阶段由本实施例中的实时监控模块来完成,并通过更新模块来给予必要的补充。
在获取集群初始化信息阶段,由于Redis集群需要配置一个节点地址(如:127.0.0.1:3001)以便于和Redis服务器连接,该节点地址预先保存在数据库中,因此,在此阶段,可以直接从数据库中获取该节点地址,然后再创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接,Redis客户端通过应用程序编程接口API执行获取集群节点命令(cluster nodes),获取Redis集群中的各节点的配置信息;例如:某一集群的六个节点的配置信息如下所示:
07c37dfeb235213a872192d90877d0cd55635b91 127.0.0.1:30004slavee7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 0 1426238317239 4connected
67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 127.0.0.1:30002master-01426238316232 2connected 5461-10922
292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 127.0.0.1:30003master-01426238318243 3connected 10923-16383
6ec23923021cf3ffec47632106199cb7f496ce01 127.0.0.1:30005slave67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238316232 5connected
824fe116063bc5fcf9f4ffd895bc17aee7731ac3 127.0.0.1:30006slave292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 0 1426238317741 6connected
e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 127.0.0.1:30001myself,master-0 0 1connected 0-5460
从上述例子可以看出,该集群6个节点的节点地址分别是127.0.0.1:3004、127.0.0.1:3002、127.0.0.1:3003、127.0.0.1:3005、127.0.0.1:3006、127.0.0.1:3001;同时可以判断出该集群中有3个主节点(master)和3个从节点(slave)。
从所述配置信息还可以获取各节点编号,也叫node ID,位于每个节点配置信息的第一个字段(如07c37dfeb235213a872192d90877d0cd55635b91)。
根据节点地址和节点编号建立所述节点地址和节点编号的初始映射表如图4所示,为了便于比较,可以将初始映射表放在缓存中,并根据监控数据随时更新。
在实时监控阶段,首先从所述初始映射表中获取一个可用的节点地址,具体地,从所述初始映射表以轮询的方式获取该可用节点地址;创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;之后的步骤与初始化阶段类似,Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;从所述当前配置信息及所述初始映射表,通过比较,获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;然后后将所述各节点的节点信息保存到数据库中;同时,通过比较当前配置信息和初始映射表的节点编号,可以判断Redis集群中是否有新的节点,若有,说明集群被扩展,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表,得到新的映射表,当再次监控,获取新的配置信息时,将会和该新的映射表进行比较,以获得各节点的节点信息。
在本实施例中,所述节点信息格式如下:
{
node_id:07c37dfeb235213a872192d90877d0cd55635b91,#Node ID
node_address:127.0.0.1:3004#节点地址
role:slave,#节点角色;master代表主节点,slave代表从节点
master_node_address:127.0.0.1:3001,#主节点地址
status:ok
#节点状态;判断方法:cluster nodes方法返回的信息中如果没有包括fail,说明节点ok,否则会有fail出现
}
在本实施例中,所述获取当前Redis集群配置信息可以是周期性获取,例如10S一次。
实施例五
如图9所示,在本实施例中,所述步骤S10包括:
S11、获取Redis集群预先保存在数据库中的节点地址;
S12、创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接;
S13、Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的配置信息;
S14、从所述配置信息获取各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表。
在本实施例中,所述步骤S10还包括:
S15、根据所述配置信息获取各节点的主从关系。
在获取集群初始化信息阶段,由于Redis集群需要配置一个节点地址(如:127.0.0.1:3001)以便于和Redis服务器连接,该节点地址预先保存在数据库中,因此,在此阶段,可以直接从数据库中获取该节点地址,然后再创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接,Redis客户端通过应用程序编程接口API执行获取集群节点命令(cluster nodes),获取Redis集群中的各节点的配置信息。
实施例六
如图10所示,在本实施例中,所述步骤S20包括:
S21、从所述初始映射表以轮询的方式获取可用节点地址;
S22、创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;
S23、Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;
S24、从所述当前配置信息及所述初始映射表获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;
S25、将所述各节点的节点信息保存到数据库中。
在实时监控阶段,首先从所述初始映射表中获取一个可用的节点地址,具体地,从所述初始映射表以轮询的方式获取该可用节点地址;创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;之后的步骤与初始化阶段类似,Redis客户端通过应用程序编程接口API执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;从所述当前配置信息及所述初始映射表,通过比较,获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;然后后将所述各节点的节点信息保存到数据库中;同时,通过比较当前配置信息和初始映射表的节点编号,可以判断Redis集群中是否有新的节点,若有,说明集群被扩展,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表,得到新的映射表,当再次监控,获取新的配置信息时,将会和该新的映射表进行比较,以获得各节点的节点信息。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种Redis集群信息监控装置,其特征在于,包括:
初始化模块,用于获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;
实时监控模块,用于实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;
更新模块,用于判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表。
2.根据权利要求1所述的一种Redis集群信息监控装置,其特征在于,所述初始化模块包括:
第一节点获取单元,用于获取Redis集群预先保存在数据库中的节点地址;
第一客户端创建单元,用于创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接;
第一配置信息获取单元,用于Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的配置信息;
初始映射表建立单元,用于从所述配置信息获取各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表。
3.根据权利要求2所述的一种Redis集群信息监控装置,其特征在于,所述初始化模块还包括:
主从判断单元,用于根据所述配置信息获取各节点的主从关系。
4.根据权利要求2所述的一种Redis集群信息监控装置,其特征在于,所述实时监控模块包括:
第二节点获取单元,用于从所述初始映射表以轮询的方式获取可用节点地址;
第二客户端创建单元,用于创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;
第二配置信息获取单元,用于Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;
节点信息获取单元,用于从所述当前配置信息及所述初始映射表获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;
节点信息保存单元,用于将所述各节点的节点信息保存到数据库中。
5.根据权利要求1所述的一种Redis集群信息监控装置,其特征在于,所述获取当前Redis集群配置信息具体为:周期性获取当前Redis集群配置信息。
6.一种Redis集群信息监控方法,其特征在于,包括:
获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表;
实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息;
判断Redis集群中是否有新的节点,若有,则将新节点的节点信息添加到所述初始映射表中,更新所述初始映射表。
7.根据权利要求6所述的一种Redis集群信息监控方法,其特征在于,所述获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表包括:
获取Redis集群预先保存在数据库中的节点地址;
创建一个Redis客户端,所述Redis客户端通过所述节点地址与Redis服务器连接;
Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的配置信息;
从所述配置信息获取各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表。
8.根据权利要求7所述的一种Redis集群信息监控方法,其特征在于,所述获取初始状态下Redis集群中的各节点的节点地址和节点编号,建立所述节点地址和节点编号的初始映射表还包括:
根据所述配置信息获取各节点的主从关系。
9.根据权利要求7所述的一种Redis集群信息监控方法,其特征在于,所述实时监控Redis集群,获取当前Redis集群配置信息,根据所述当前Redis集群配置信息和所述初始映射表获取Redis集群中各节点的节点信息包括:
从所述初始映射表以轮询的方式获取可用节点地址;
创建一个Redis客户端,所述Redis客户端通过所述可用节点地址与Redis服务器连接;
Redis客户端通过应用程序编程接口执行获取集群节点命令,获取Redis集群中的各节点的当前配置信息;
从所述当前配置信息及所述初始映射表获取各节点的节点信息,所述节点信息包括节点主从关系和节点健康状态;
将所述各节点的节点信息保存到数据库中。
10.根据权利要求6所述的一种Redis集群信息监控方法,其特征在于,所述获取当前Redis集群配置信息具体为:周期性获取当前Redis集群配置信息。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2016108024982 | 2016-09-05 | ||
CN201610802498 | 2016-09-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106453512A true CN106453512A (zh) | 2017-02-22 |
Family
ID=58168225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610825221.1A Pending CN106453512A (zh) | 2016-09-05 | 2016-09-14 | 一种Redis集群信息监控装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106453512A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679203A (zh) * | 2017-10-12 | 2018-02-09 | 广州华多网络科技有限公司 | 一种Redis内部数据库调用方法及系统 |
CN107947978A (zh) * | 2017-11-21 | 2018-04-20 | 北京锐安科技有限公司 | 一种关联数据的方法以及装置 |
CN109818767A (zh) * | 2017-11-21 | 2019-05-28 | 网宿科技股份有限公司 | 一种Redis集群容量调整的方法、装置及存储介质 |
CN110381125A (zh) * | 2019-06-29 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种信息获取方法及装置 |
CN110445835A (zh) * | 2019-07-03 | 2019-11-12 | 平安科技(深圳)有限公司 | Redis服务器连接方法、装置、计算机设备和存储介质 |
CN111026565A (zh) * | 2019-12-06 | 2020-04-17 | 无锡华云数据技术服务有限公司 | 一种集群管理方法及管理系统 |
CN111291101A (zh) * | 2019-12-17 | 2020-06-16 | 航天信息股份有限公司 | 集群管理方法及系统 |
CN112100004A (zh) * | 2020-08-12 | 2020-12-18 | 福建天泉教育科技有限公司 | Redis集群节点的管理方法、存储介质 |
CN112416847A (zh) * | 2020-04-15 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | Redis集群创建方法、系统及装置 |
CN113127557A (zh) * | 2019-12-31 | 2021-07-16 | 中国移动通信集团四川有限公司 | 基于redis性能的数据持久化方法、装置及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN103079267A (zh) * | 2012-12-28 | 2013-05-01 | 东方通信股份有限公司 | 一种在数字集群通信系统中快速上报终端位置信息的实现方法 |
CN103257970A (zh) * | 2012-02-17 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 用于hdfs主节点的测试方法及装置 |
US20130238785A1 (en) * | 2012-03-06 | 2013-09-12 | Rackspace Us, Inc. | System and Method for Metadata Discovery and Metadata-Aware Scheduling |
CN104092718A (zh) * | 2013-12-12 | 2014-10-08 | 腾讯数码(天津)有限公司 | 分布式系统及分布式系统中配置信息的更新方法 |
CN105159818A (zh) * | 2015-08-28 | 2015-12-16 | 东北大学 | 内存数据管理中日志恢复方法及其仿真系统 |
-
2016
- 2016-09-14 CN CN201610825221.1A patent/CN106453512A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN103257970A (zh) * | 2012-02-17 | 2013-08-21 | 百度在线网络技术(北京)有限公司 | 用于hdfs主节点的测试方法及装置 |
US20130238785A1 (en) * | 2012-03-06 | 2013-09-12 | Rackspace Us, Inc. | System and Method for Metadata Discovery and Metadata-Aware Scheduling |
CN103079267A (zh) * | 2012-12-28 | 2013-05-01 | 东方通信股份有限公司 | 一种在数字集群通信系统中快速上报终端位置信息的实现方法 |
CN104092718A (zh) * | 2013-12-12 | 2014-10-08 | 腾讯数码(天津)有限公司 | 分布式系统及分布式系统中配置信息的更新方法 |
CN105159818A (zh) * | 2015-08-28 | 2015-12-16 | 东北大学 | 内存数据管理中日志恢复方法及其仿真系统 |
Non-Patent Citations (1)
Title |
---|
闫明: """高可用可扩展集群化Redis设计与实现""", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107679203B (zh) * | 2017-10-12 | 2020-11-13 | 广州华多网络科技有限公司 | 一种Redis内部数据库调用方法及系统 |
CN107679203A (zh) * | 2017-10-12 | 2018-02-09 | 广州华多网络科技有限公司 | 一种Redis内部数据库调用方法及系统 |
CN109818767B (zh) * | 2017-11-21 | 2021-08-03 | 网宿科技股份有限公司 | 一种Redis集群容量调整的方法、装置及存储介质 |
CN107947978A (zh) * | 2017-11-21 | 2018-04-20 | 北京锐安科技有限公司 | 一种关联数据的方法以及装置 |
CN109818767A (zh) * | 2017-11-21 | 2019-05-28 | 网宿科技股份有限公司 | 一种Redis集群容量调整的方法、装置及存储介质 |
CN110381125A (zh) * | 2019-06-29 | 2019-10-25 | 苏州浪潮智能科技有限公司 | 一种信息获取方法及装置 |
CN110445835A (zh) * | 2019-07-03 | 2019-11-12 | 平安科技(深圳)有限公司 | Redis服务器连接方法、装置、计算机设备和存储介质 |
CN110445835B (zh) * | 2019-07-03 | 2023-04-07 | 平安科技(深圳)有限公司 | Redis服务器连接方法、装置、计算机设备和存储介质 |
CN111026565A (zh) * | 2019-12-06 | 2020-04-17 | 无锡华云数据技术服务有限公司 | 一种集群管理方法及管理系统 |
CN111026565B (zh) * | 2019-12-06 | 2024-03-19 | 无锡华云数据技术服务有限公司 | 一种集群管理方法及管理系统 |
CN111291101A (zh) * | 2019-12-17 | 2020-06-16 | 航天信息股份有限公司 | 集群管理方法及系统 |
CN113127557B (zh) * | 2019-12-31 | 2022-12-13 | 中国移动通信集团四川有限公司 | 基于redis性能的数据持久化方法、装置及电子设备 |
CN113127557A (zh) * | 2019-12-31 | 2021-07-16 | 中国移动通信集团四川有限公司 | 基于redis性能的数据持久化方法、装置及电子设备 |
CN112416847A (zh) * | 2020-04-15 | 2021-02-26 | 上海哔哩哔哩科技有限公司 | Redis集群创建方法、系统及装置 |
CN112416847B (zh) * | 2020-04-15 | 2023-05-02 | 上海哔哩哔哩科技有限公司 | Redis集群创建方法、系统及装置 |
CN112100004A (zh) * | 2020-08-12 | 2020-12-18 | 福建天泉教育科技有限公司 | Redis集群节点的管理方法、存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106453512A (zh) | 一种Redis集群信息监控装置及方法 | |
CN104915141A (zh) | 对象信息的预览方法及装置 | |
CN105225457A (zh) | 通过智能家居设备进行信息提示的系统、装置和方法 | |
JP2022501950A (ja) | Csiレポートの報告方法、端末機器及びネットワーク機器 | |
CN106375962A (zh) | 一种网络搜索方法及移动终端 | |
CN105701122A (zh) | 一种日志收集方法、装置及系统 | |
CN105208194A (zh) | 语音播报装置及方法 | |
CN104980549A (zh) | 一种信息处理方法及移动终端 | |
CN106448665A (zh) | 语音处理装置及方法 | |
CN105653119A (zh) | 一种移动终端及其实现应用查找的方法 | |
CN105262819A (zh) | 一种移动终端及其实现推送的方法 | |
CN108055366A (zh) | 终端通话界面处理方法、移动终端及计算机可读存储介质 | |
CN104658535A (zh) | 语音控制方法及装置 | |
CN106027415A (zh) | 数据上报装置及方法 | |
CN106850976A (zh) | 应用更新方法及终端 | |
CN106341315A (zh) | 短信清理方法、装置和移动终端 | |
CN103227832B (zh) | 共享资源处理方法及装置 | |
CN105578620A (zh) | 网络接入装置及方法 | |
CN105682083A (zh) | 一种移动终端及双调制解调器系统的通信方法 | |
CN112997471A (zh) | 音频通路切换方法和装置、可读存储介质、电子设备 | |
CN106255142B (zh) | 一种移动终端及其异常信息上报方法 | |
CN105389007A (zh) | 一种应用处理的装置、方法及移动终端 | |
CN105100407A (zh) | 联系人自动备注方法及装置 | |
CN105516506A (zh) | 一种控制方法及装置 | |
CN105872181A (zh) | 移动终端的扩音方法及移动终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170222 |
|
RJ01 | Rejection of invention patent application after publication |