CN110781039B - 哨兵进程选举方法及装置 - Google Patents
哨兵进程选举方法及装置 Download PDFInfo
- Publication number
- CN110781039B CN110781039B CN201910951752.9A CN201910951752A CN110781039B CN 110781039 B CN110781039 B CN 110781039B CN 201910951752 A CN201910951752 A CN 201910951752A CN 110781039 B CN110781039 B CN 110781039B
- Authority
- CN
- China
- Prior art keywords
- sentinel
- processes
- main
- voting
- determining
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
- G06F11/2023—Failover techniques
- G06F11/2028—Failover techniques eliminating a faulty processor or activating a spare
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种哨兵进程选举方法及装置,涉及内存数据库技术领域,包括:节点上的各哨兵进程分别发起投票请求;根据所述投票请求对应的投票响应,确定在线哨兵进程数量和各所述哨兵进程的投票结果;若所述在线哨兵进程数量和所述投票结果,满足预设条件,则确定满足所述预设条件的哨兵进程为主哨兵进程,并根据所述主哨兵进程,在备redis中重新选择主redis。本申请可使得位于不同的数据中心的一个节点设备下线后,选出主哨兵进程,从而保证各数据中心的数据库正常运行。
Description
技术领域
本申请涉及数据库技术领域,具体而言,涉及一种哨兵进程选举方法及装置。
背景技术
哨兵模式是存储器的高可用性解决方案:由一个或多个哨兵进程组成的哨兵系统可以监视主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为本申请另一实施例提供的哨兵进程选举方法的流程示意图;
图3为本申请一实施例所应用的数据中心的系统架构示意图;
图4为本申请一实施例提供的哨兵进程选举装置的结构示意图;
图5为本申请一实施例提供的节点设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。
在跨数据中心的数据库系统可包括:多个数据中心,每个数据中心中可具有至少一个节点设备,每个节点设备可运行有至少一个redis以及至少三个哨兵进程。该数据库系统所在的数据中心中运行的多个redis中,存在一个主redis,该主redis所在的节点设备为主节点设备,该主节点设备所在的数据中心为主数据中心,其余节点设备为备节点设备,其余数据中心为备数据中心。其中,主redis用于接收主节点设备下发的数据,并将接收到的数据同步至各备redis;哨兵(sentinel)进程用于监视主redis以及各备redis,并实时接收关于主redis是否下线的信息,在主redis下线后,使用投票协议(agreement protocols)来决定是否执行自动故障迁移,以及选择哪个备redis作为新的主redis。
本申请提供一种哨兵进程选举方法,采用本申请提供的方法,可以解决各节点设备在不同的数据中心,数据中心中若一个节点设备下线,该下线的节点设备上的所有哨兵进程均下线,当该下线的节点设备上的哨兵进程数量大于所有节点设备上总哨兵进程数量一半的情况下,会使得剩余在线节点设备由于无法选出主哨兵进程,所以不能正常使用数据库的问题。
本申请可适用于数据中心中节点设备下线,如节点设备掉电或其它故障的情况下,也可适用于节点设备上的进程下线如该节点设备上进程下线的情况。若应用于数据中心中节点设备下线的情况,则本申请提供的哨兵进程选举方法,可由其它节点设备执行。若应用于数据中心中主节点设备上主redis下线,则本申请提供的各哨兵进程选举方法,即可由主节点设备执行,也可由其它节点设备执行。
图1为本申请一实施例提供的一种哨兵进程选举方法的流程示意图,如图1所示,该方法包括:
S101:各哨兵进程分别发起投票请求。
其中,各哨兵进程在预设时间区间内随机选取一个时间值,在经过选择的时间值后,发起投票请求,在本申请的一个实施例中,预设时间区间为0-1,但是预设时间区间可以根据用户需要调整,本申请在此不做任何限制。
其中,各哨兵进程发起的投票请求,会发送给除该哨兵进程外,系统中的其他哨兵进程,其他哨兵接收到投票请求后,会按照预设规则响应该投票请求,其中,响应包括:投票成功响应或投票失败响应。
可选地,在本申请的一个实施例中,每个节点设备上的哨兵进程为至少三个哨兵进程,但是哨兵进程数量的具体设置根据用户需要设计,也可以为五个、六个或十个,只要哨兵进程数量为任意大于三的整数均可,本申请在此不做任何限制。
S102:根据投票请求对应的投票响应,确定在线哨兵进程数量和各哨兵进程的投票结果。
其中,投票响应是根据各哨兵进程在预设时间区间内随机选取的时间值进行比较而确定的,举例说明:哨兵进程A随机选择的时间值为0.01S,即哨兵进程A在主redis发生故障后的0.01S就发起投票请求;哨兵进程B随机选择的时间值为0.05S,即哨兵进程B在主redis发生故障后的0.05S才发起投票请求;此时哨兵进程B接到哨兵进程A发起的投票请求后,比较0.01S和0.05S,确定哨兵进程A比哨兵进程B发起投票的时间更早,则此时哨兵进程B将响应哨兵进程A发起的投票,返回投票成功至哨兵进程A。
其中,可以成功响应投票请求的哨兵进程才为当前在线哨兵进程,当前在线哨兵进程的总个数为在线哨兵进程数量,举例说明,在本申请的一个实施例中,判断哨兵进程是否可以成功响应投票请求的方法可以为:
同时满足下述三个要求的哨兵进程为响应成功的进程:
1)假定发出投票请求的哨兵进程为A进程,响应投票的哨兵进程是B进程,A进程与B进程成功建立TCP连接。
2)A进程向B进程成功发送投票请求。
3)B进程收到A进程的投票请求后如果不进行投票,也需要回复投票失败消息给A,如果进行投票则回复投票成功消息给A。
S103:若在线哨兵进程数量和投票结果,满足预设条件,则确定满足预设条件的哨兵进程为主哨兵进程,并根据主哨兵进程,在备redis中重新选择主redis。
其中,若哨兵进程A给发起投票请求的哨兵进程B发了两次或多次投票响应,均只能在哨兵进程B的投票结果中加一。
可选地,哨兵进程A发起投票请求,若收到哨兵进程A发起的投票请求的哨兵进程B在预设周期内,没有将票投给其他的哨兵进程,则此时该未投票的哨兵进程B将票投给该发起投票请求的哨兵进程A,其中,预设周期为用户实现设置好的时间间隔,可以为2s或3s或任意周期间隔,本申请在此不做任何限制,根据用户需要设置。
可选地,在本申请的一个实施例中,主哨兵进程在备redis中,选择一个处于在线状态且优先级最高的备redis,作为新的主redis;或选择距离当前时间最近一次被选举为主redis的备redis,作为新的主redis,但是选择方式也可以根据用户需要设计,例如,按照预设列表顺序选择列表中的处于在线状态的第一个备redis作为新的主redis,具体选择本申请在此不做任何限制。
采用本申请提供的哨兵进程选举方法,在主redis故障后,首先根据各哨兵进程分别发起的投票请求,确定投票响应,再根据投票响应确定在线哨兵进程数量和投票结果,并根据在线哨兵进程数量和投票结果确定主哨兵进程,并根据主哨兵进程选择主redis,由于在判断主哨兵进程前,先确定了当前在线哨兵进程的数量,所以即使各节点设备在不同的数据中心上,若一个设备下线,且该设备上的哨兵进程数量大于总哨兵进程数量的一半,剩余的在线设备仍会重新确定当前在线哨兵的数量,并选出主哨兵进程,解决了各节点设备在不同数据中心时,一个节点设备下线,其他节点设备不能正常使用数据库的问题,保证各数据中心的数据库正常运行。
图2为本申请另一实施例提供的哨兵进程选举方法的流程示意图,如图2所示,步骤S101之前,该方法还可包括:
S104:若哨兵进程检测到主redis故障,则哨兵进程发起询问,并获取询问结果,根据询问结果确定检测到主redis故障的哨兵进程数量。
其中,询问结果包括:感知到主redis故障或未感知到主redis故障。
S105:若检测到主redis故障的哨兵进程数量大于或等于预设阈值,则确定主redis故障。
其中,工作过程中,各哨兵进程会不断检查主redis是否正常运行,若存在一个哨兵进程检测到主redis出现故障,则该哨兵进程向其他哨兵进程发起询问,询问其他哨兵进程是否感知到主redis出现故障,若大于或等于预设阈值的哨兵进程回复感知到了主redis出现故障,则确定该主redis出现故障;其中,预设阈值为用户预先设置的值,本申请在此不做任何限制,预设阈值只需为大于1的整数即可,可以根据用户需要进行调整。
根据多个哨兵进程的感知结果确定主redis是否出现故障,只有在感知到主redis出现故障的哨兵进程数量大于或等于预设阈值时,才认为该主redis确实出现故障,这样的判断方式可以提高感知的准确度,防止误判的情况。
可选地,S102可包括:根据接收到的投票响应对应的哨兵进程的数量,确定在线哨兵进程数量。
其中,只有发送了投票响应的哨兵进程,才会被认为是在线哨兵进程,确定在线哨兵进程数量,可以在后续选举主哨兵进程时,使得选举结果更加准确,防止超过一半的哨兵进程下线时,无法选择主哨兵进程,造成数据库不能正常使用的情况发生。
可选地,若投票结果为投票成功的哨兵进程的数量,则S103包括:确定投票成功的哨兵进程的数量与在线哨兵进程数量的比值;若比值大于预设比值,则确定大于预设比值的哨兵进程为主哨兵进程。
其中,预设比值可以为1/2,投票成功的哨兵进程的数量与在线哨兵进程数量的比值用于表示:当前投成功票的哨兵进程占总在线哨兵进程的比值,若该比值大于1/2,表示有超过一半的在线哨兵进程将票投给该哨兵进程,此时,该收到大于1/2投成功票的哨兵进程认为自己是主哨兵进程,该主哨兵进程在备redis中选择新的主redis。
选择新的主redis后,主哨兵进程会通知其他哨兵进程新的主redis的选择结果,并通知其他redis当前新的主redis绑定的地址和端口,随后等待各备redis返回更改成功的消息,其中,更改成功的消息用于指示当前备redis已经将所属的主redis改为新的主redis的地址和端口。
可选地,若投票结果为投票失败的哨兵进程的数量,则S103包括:确定投票失败的哨兵进程的数量与在线哨兵进程数量的比值;若比值小于预设比值,则确定小于预设比值的哨兵进程为主哨兵进程。
其中,投票失败的哨兵进程的数量与在线哨兵进程数量的比值用于表示:当前投失败票的哨兵进程占总在线哨兵进程的比值,若该比值小于1/2,表示有小于一半的在线哨兵进程没有将票投给该哨兵进程,即说明此时有超过一半的在线哨兵进程将票投给了该哨兵进程,此时,该收到小于1/2投失败票的哨兵进程认为自己是主哨兵进程,该主哨兵进程在备redis中选择新的主redis。
在主哨兵进程选择新的主redis后,该主redis所在节点设备即自动成为当前系统中的主节点设备。
当完成上述步骤后,若两个或多个数据中心发生网络断开情况,或某一个数据中心断电,哨兵进程和redis将会分裂成两个或多个区域,那么此时就由可以缺少主哨兵进程的区域选出领头哨兵进程,领头哨兵进程就可以选出主redis,数据库就可以正常运行,否则数据中心断开失去主redis的数据库就不可用。
当两个数据中心之间的网络连接恢复或另一个数据中心重新上电后,即两个数据中心中的节点设备能正常通信,此时两个数据中心的哨兵进程就会再进行合并,每个数据中心具有各自的主redis,那么两个数据中心便存在两个主redis。这时候需比较两个数据中心的迭代次数,将迭代次数最大的数据中心中的主redis作为新的主redis,并告知其它哨兵进程,该新的主redis的信息,然后在其它备redis中更新主redis的信息。其中,数据中心的迭代次数可记录在数据中心中任一哨兵进程中,其可用于表示该数据中心中主redis的选举次数。如果两个数据中心的迭代次数计数相同,则可采用本申请所提供的任一主哨兵进程的选举方法重新选举主哨兵进程,由选出的主哨兵进程选出主redis,再由确定的主redis确定主节点设备。
采用本申请提供的哨兵进程选举方法,在主redis故障后,首先根据各哨兵进程分别发起的投票请求,确定投票响应,再根据投票响应确定在线哨兵进程数量和投票结果,并根据在线哨兵进程数量和投票结果确定主哨兵进程,并根据主哨兵进程选择主redis,由于在判断主哨兵进程前,先确定了当前在线哨兵进程的数量,所以即使各节点设备在不同的数据中心上,若一个节点设备下线,且该节点设备上的哨兵进程数量大于总哨兵进程数量的一半,剩余的在线节点设备仍会重新确定当前在线哨兵的数量,并选出主哨兵进程,解决了各节点设备在不同数据中心时,若一个节点设备下线,其他节点设备不能正常使用数据库的问题,保证各数据中心的数据库正常运行。
举例说明:下图以两个数据中心为例,对本申请的应用场景进行说明,图3为本申请一实施例所应用的数据中心的系统架构示意图。如图3所示,系统300由数据中心一310和数据中心二320构成,在本申请的一个实施例中,数据中心一310可以为主数据中心,数据中心二320为数据中心一310的备用数据中心。每个数据中心可具有一个设备,如数据中心一310包括设备一311,数据中心二320中包括设备二321。
数据中心一310中的设备一311上运行有1个主redis312、两个备redis313以及三个哨兵进程314;数据中心二320的设备二321上运行有三个备redis313和三个哨兵进程314。
在由数据中心一310和数据中心二320构成的系统300中,共包括六个redis和六个哨兵进程314,其中,存在一个redis为主redis312,主redis312所在的设备,即设备一311为主节点设备,设备二321为备用节点设备。主redis312在接收到主数据中心更新的数据后,也会将更新的数据同步到系统300中的每个备redis313上,同时,系统300中的每个哨兵进程314用以对主redis312进行监控。
哨兵进程314和主redis312建立连接后,同时备redis313也会与主redis312建立连接,主redis312就会记录自己有哪些备redis313,同时也会基于和哨兵进程314的连接通知各哨兵进程314备redis313的地址和端口,并告诉哨兵进程314还有哪些哨兵进程314也和主redis312建立了连接,通过这样的方式,主redis312就会知道当前集群中有哪些备redis313和哨兵进程314。
当哨兵进程发现主redis故障时,可以从备redis中选择一个redis充当主redis,哨兵进程会一直监视主redis的状态,且同时会和所有的备redis建立连接,就会从在线的备redis中选择一个新的主redis。该新的主redis所在的设备即为新的主节点设备。
具体地,主redis312故障可能为由于主redis312的运行原因,造成主redis312故障,无法正常使用;或由于主redis312所在设备一311掉线或断电,造成主redis312下线,从而造成主redis312故障无法正常使用。
若是由于主redis312的运行原因,造成主redis312故障而无法正常使用,即当前系统300中只有主redis312下线,则系统300中的6个哨兵进程314在确定主redis312下线后,分别发起投票请求,并接收其他哨兵进程314的投票响应,收到投成功票的数量大于3的哨兵进程314即认为自己是当前系统300中的主哨兵进程,该主哨兵进程在系统300除主redis312外的其他五个备redis313中,选择一个备redis313作为新的主redis。
若是由于主redis312所在设备一311断电或掉线的原因,造成主redis312故障而无法正常使用时,当前主设备为数据中心一310,数据中心一310断电或掉线后,数据中心一310上的所有哨兵进程314和redis均下线,即当前系统300中只剩余数据中心二320、设备二321和设备二321下的三个备redis313和三个哨兵进程314。所以数据中心二320上的哨兵进程314在确定主redis312下线后,分别发起投票请求,并接收其他哨兵进程314的投票响应,收到投成功票的数量大于1的哨兵进程314即认为自己是当前系统300中的主哨兵进程,该主哨兵进程在数据中心二320上的三个备redis313中,选择一个备redis313作为新的主redis。
图4为本申请一实施例提供的哨兵进程选举装置,如图3所示,该装置包括:发起模块201、确定模块202和选择模块203,其中:
发起模块201,用于节点上的各哨兵进程分别发起投票请求。
确定模块202,用于根据投票响应,确定在线哨兵进程数量和各哨兵进程的投票结果。
选择模块203,用于若在线哨兵进程数量和投票结果,满足预设条件,则确定满足预设条件的哨兵进程为主哨兵进程,并根据主哨兵进程,在备redis中重新选择主redis。
可选地,确定模块202还用于,若哨兵进程检测到主redis故障,则哨兵进程发起询问,并获取询问结果,根据询问结果确定检测到主redis故障的哨兵进程数量。
确定模块202还用于,若检测到主redis故障的哨兵进程数量大于或等于预设阈值,则确定主redis故障。
可选地,确定模块202还用于,根据接收到的投票响应对应的哨兵进程的数量,确定在线哨兵进程数量。
可选地,若投票结果为投票成功的哨兵进程的数量;则确定模块,还用于确定投票成功的哨兵进程的数量与在线哨兵进程数量的比值;若比值大于预设比值,则确定大于预设比值的哨兵进程为主哨兵进程。
可选地,若投票结果为投票失败的哨兵进程的数量;则确定模块,还用于确定投票失败的哨兵进程的数量与在线哨兵进程数量的比值;若比值小于预设比值,则确定小于预设比值的哨兵进程为主哨兵进程。
上述装置用于执行前述实施例提供的方法,其实现原理和技术效果类似,在此不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图5为本申请另一实施例提供的节点设备的结构示意图,如图5所示,该节点设备可以集成于数据中心中的处理设备或者服务器,例如可以为数据中心中数据库所在的服务器。
节点设备600包括:处理器601、存储器602、和总线603。存储器602存储有处理器601可执行的机器可读指令,当节点设备600运行时,处理器601与存储器602之间通过总线603通信,处理器601执行机器可读指令,以执行如前述方法实施例所提供的哨兵进程选举方法的步骤。
具体地,存储器602中所存储的机器可读指令为本申请前述实施例所述的请求处理方法的执行步骤,处理器601可执行该请求处理方法对请求进行处理,因此,该节点设备同样具备前述方法实施例中所述的全部有益效果,本申请亦不再重复描述。
可选地,本申请还提供一种程序产品,例如存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述定位处理方法,从而,解决现有技术中存在的由于语言表达组合形式多种多样,大量信息会导致句库规模过大,占用过多的资源的问题,进而达到减小资源占用的效果。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (6)
1.一种哨兵进程选举方法,其特征在于,若主redis故障,所述方法包括:
节点上的各哨兵进程分别发起投票请求,所述投票请求用于请求除所述哨兵进程外的其他哨兵进程对所述哨兵进程作为主哨兵进程进行投票;
根据所述投票请求对应的投票响应,确定在线哨兵进程数量和各所述哨兵进程的投票结果,在线哨兵进程为成功响应所述投票请求的哨兵进程;
若所述在线哨兵进程数量和所述投票结果,满足预设条件,则确定满足所述预设条件的哨兵进程为主哨兵进程,并根据所述主哨兵进程,在备redis中重新选择主redis;
若所述投票结果为投票成功的哨兵进程的数量;
则所述若所述在线哨兵进程数量和所述投票结果,满足预设条件,则确定满足所述预设条件的哨兵进程为主哨兵进程包括:
确定所述投票成功的哨兵进程的数量与所述在线哨兵进程数量的比值;
若所述比值大于预设比值,则确定大于所述预设比值的哨兵进程为所述主哨兵进程;
若所述投票结果为投票失败的哨兵进程的数量;
则所述若所述在线哨兵进程数量和所述投票结果,满足预设条件,则确定满足所述预设条件的哨兵进程为主哨兵进程包括:
确定所述投票失败的哨兵进程的数量与所述在线哨兵进程数量的比值;
若所述比值小于预设比值,则确定小于所述预设比值的哨兵进程为所述主哨兵进程。
2.如权利要求1所述的方法,其特征在于,所述节点上的哨兵进程发起投票请求之前,所述方法还包括:
若所述哨兵进程检测到所述主redis故障,则所述节点上的所述哨兵进程发起询问,并获取询问结果,根据所述询问结果确定检测到所述主redis故障的哨兵进程数量;
若检测到所述主redis故障的哨兵进程数量大于或等于预设阈值,则确定所述主redis故障。
3.如权利要求1所述的方法,其特征在于,所述根据所述投票请求对应的投票响应,确定在线哨兵进程数量,包括:
根据接收到的所述投票响应对应的哨兵进程的数量,确定所述在线哨兵进程数量。
4.一种哨兵进程选举装置,其特征在于,若主redis故障,所述装置包括:发起模块、确定模块和选择模块,其中:
所述发起模块,用于节点上的各哨兵进程分别发起投票请求,所述投票请求用于请求除所述哨兵进程外的其他哨兵进程对所述哨兵进程作为主哨兵进程进行投票;
所述确定模块,用于根据所述投票请求对应的投票响应,确定在线哨兵进程数量和各所述哨兵进程的投票结果,在线哨兵进程为成功响应所述投票请求的哨兵进程;
所述选择模块,用于若所述在线哨兵进程数量和所述投票结果,满足预设条件,则确定满足所述预设条件的哨兵进程为主哨兵进程,并根据所述主哨兵进程,在备redis中重新选择主redis;
若所述投票结果为投票成功的哨兵进程的数量;则所述确定模块,还用于确定所述投票成功的哨兵进程的数量与所述在线哨兵进程数量的比值;
若所述比值大于预设比值,则确定大于所述预设比值的哨兵进程为所述主哨兵进程;
若所述投票结果为投票失败的哨兵进程的数量;则确定模块,还用于确定所述投票失败的哨兵进程的数量与所述在线哨兵进程数量的比值;
若所述比值小于预设比值,则确定小于所述预设比值的哨兵进程为所述主哨兵进程。
5.如权利要求4所述的装置,其特征在于,所述确定模块还用于,若所述哨兵进程检测到所述主redis故障,则所述哨兵进程发起询问,并获取询问结果,根据所述询问结果确定检测到所述主redis故障的哨兵进程数量;
所述确定模块还用于,若检测到所述主redis故障的哨兵进程数量大于或等于预设阈值,则确定所述主redis故障。
6.如权利要求4所述的装置,其特征在于,所述确定模块还用于,根据接收到的所述投票响应对应的哨兵进程的数量,确定所述在线哨兵进程数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910951752.9A CN110781039B (zh) | 2019-09-30 | 2019-09-30 | 哨兵进程选举方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910951752.9A CN110781039B (zh) | 2019-09-30 | 2019-09-30 | 哨兵进程选举方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110781039A CN110781039A (zh) | 2020-02-11 |
CN110781039B true CN110781039B (zh) | 2023-03-10 |
Family
ID=69385464
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910951752.9A Active CN110781039B (zh) | 2019-09-30 | 2019-09-30 | 哨兵进程选举方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110781039B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114785713B (zh) * | 2022-03-31 | 2024-02-23 | 度小满科技(北京)有限公司 | 一种用于实现Redis集群高可用的方法和代理中间件 |
CN115190005B (zh) * | 2022-06-30 | 2023-05-16 | 南京信息工程大学 | 一种基于Redis的双宿主系统的高可用方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107276839A (zh) * | 2017-08-24 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种云平台的自监控方法和系统 |
CN107343034A (zh) * | 2017-06-26 | 2017-11-10 | 杭州铭师堂教育科技发展有限公司 | 基于QConf的Redis高可用系统及方法 |
CN109639704A (zh) * | 2018-12-26 | 2019-04-16 | 苏州沁游网络科技有限公司 | 一种主从式服务器系统应用方法、系统、服务器及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7991159B2 (en) * | 2005-12-09 | 2011-08-02 | Alcatel-Lucent Usa Inc. | Layered mobile application security system |
US11645382B2 (en) * | 2012-03-16 | 2023-05-09 | Mark Krietzman | Sentinel system for an online device |
CN109739686A (zh) * | 2018-11-27 | 2019-05-10 | 无锡天脉聚源传媒科技有限公司 | 一种多服务器热备份方法、系统、装置和存储介质 |
-
2019
- 2019-09-30 CN CN201910951752.9A patent/CN110781039B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107343034A (zh) * | 2017-06-26 | 2017-11-10 | 杭州铭师堂教育科技发展有限公司 | 基于QConf的Redis高可用系统及方法 |
CN107276839A (zh) * | 2017-08-24 | 2017-10-20 | 郑州云海信息技术有限公司 | 一种云平台的自监控方法和系统 |
CN109639704A (zh) * | 2018-12-26 | 2019-04-16 | 苏州沁游网络科技有限公司 | 一种主从式服务器系统应用方法、系统、服务器及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110781039A (zh) | 2020-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113014634B (zh) | 集群选举处理方法、装置、设备及存储介质 | |
CN112596960B (zh) | 一种分布式存储服务切换方法及装置 | |
CN110807064B (zh) | Rac分布式数据库集群系统中的数据恢复装置 | |
CN110431533B (zh) | 故障恢复的方法、设备和系统 | |
CN109308227B (zh) | 故障检测控制方法及相关设备 | |
CN112328421B (zh) | 一种系统故障处理方法、装置、计算机设备和存储介质 | |
CN112637335B (zh) | 主备模式服务部署方法、装置、设备及存储介质 | |
CN112506702B (zh) | 数据中心容灾方法、装置、设备及存储介质 | |
CN110781039B (zh) | 哨兵进程选举方法及装置 | |
CN110635941A (zh) | 一种数据库节点集群故障迁移方法与装置 | |
CN114265753A (zh) | 消息队列的管理方法、管理系统和电子设备 | |
CN110275793B (zh) | 一种用于MongoDB数据分片集群的检测方法及设备 | |
CN112199240A (zh) | 一种节点故障时进行节点切换的方法及相关设备 | |
CN112015595B (zh) | 主从数据库的切换方法、计算设备及存储介质 | |
CN105323271A (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN114064343B (zh) | 一种区块链的异常处置方法及装置 | |
CN113596195B (zh) | 公共ip地址管理方法、装置、主节点及存储介质 | |
US20090083747A1 (en) | Method for managing application programs by utilizing redundancy and load balance | |
JP2020119018A (ja) | 情報処理システム、情報処理装置及びプログラム | |
CN112068935A (zh) | kubernetes程序部署监控方法、装置以及设备 | |
CN112181443B (zh) | 服务的自动化部署方法、装置及电子设备 | |
CN113515403B (zh) | 微服务状态检查方法、计算机设备及存储介质 | |
CN115632934A (zh) | 集群主节点的选择方法、装置及存储介质 | |
CN117609294A (zh) | 数据查询方法、装置及设备 | |
CN114721869A (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 |