CN117573282A - 一种节点选举方法、装置、设备及存储介质 - Google Patents
一种节点选举方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN117573282A CN117573282A CN202311556137.0A CN202311556137A CN117573282A CN 117573282 A CN117573282 A CN 117573282A CN 202311556137 A CN202311556137 A CN 202311556137A CN 117573282 A CN117573282 A CN 117573282A
- Authority
- CN
- China
- Prior art keywords
- node
- lease
- master node
- current
- master
- 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
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000004590 computer program Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Classifications
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种节点选举方法、装置、设备及存储介质,其中该方法包括步骤:基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期;当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点;根据所述主节点的反馈结果,判断所述主节点是否故障;当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。本申请能够避免不必要的切主,减小配置业务超时的风险,并且任意一个节点都可以处理查询类的请求,减小了请求失败的概率。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种节点选举方法、装置、设备及存储介质。
背景技术
K8s,全称Kubernetes,是一个用于管理容器的开源平台。它可以让用户更加方便地部署、扩展和管理容器化应用程序,并通过自动化的方式实现负载均衡、服务发现和自动弹性伸缩等功能。
目前,k8s leaderelection选主算法通过各个节点抢占租约的方式进行选主,哪个节点先获取到租约,则成为主节点并续约,如果主节点出现故障续约失败,当其租约到期后,其他节点就可以获取到租约并成为新的主节点。但是,其缺点在于获取租约和续约依赖k8s底座,当k8s底座不稳定,如etcd故障时,主节点无法续约,当底座故障恢复后,可能主节点的租约已经到期,其他节点就可以获取到租约并升主,但实际原来的主管理节点并未故障,不需要切主。为了避免切主后一个任务同时在两个节点上执行和保证任务能执行成功,切主后需要先停掉旧主上的进程,再在新主上继续执行未完成的任务,所以不必要的切主会使任务耗时更久,可能会导致正在运行的配置任务超时失败。
因此,如何避免不必要的切主,进而导致运行的配置任务失败,是目前亟需解决的技术问题。
发明内容
本发明主要目的在于提供一种节点选举方法、装置、设备及存储介质,能够避免不必要的切主,减小配置业务超时的风险,并且任意一个节点都可以处理查询类的请求,减小了请求失败的概率。
第一方面,本申请提供了一种节点选举方法,其中该方法包括步骤:
基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期;
当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点;
根据所述主节点的反馈结果,判断所述主节点是否故障;
当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。
结合上述第一方面,作为一种可选的实现方式,所有节点在预设时间间隔内获取一次数据库中的租约信息;
根据每个节点获取的所述租约信息,确定成功获取租约信息的一个节点作为当前节点;
利用所述当前节点在所述数据库中查询租约信息是否到期。
结合上述第一方面,作为一种可选的实现方式,判断所述租约信息是否存在;
当确定所述租约信息不存在时,在所述数据库中创建租约,其中创建租约中保存的主节点为所述当前节点,并且获得时间和续约时间为当前时间。
结合上述第一方面,作为一种可选的实现方式,当确定租约未到期时,判断租约中记录的主节点是否是所述当前节点;
若是,进行续约,并将租约中的续约时间更新为当前时间;
若不是,等待下一次获取租约信息。
结合上述第一方面,作为一种可选的实现方式,当所述当前节点发送请求至所述主节点时,若所述主节点请求反馈成功,判断所述主节点未故障;
若所述主节点请求反馈失败,判断所述主节点故障。
结合上述第一方面,作为一种可选的实现方式,当所有节点中的任意一个节点收到任务请求,判断所述任务请求的类型,所述类型包括:不需要排队处理的查询请求和需要排队处理的配置请求;
当确定所述任务类型为查询请求时,直接由该节点进行处理;
当确认所述任务类型为配置请求时,判断该节点是否为主节点;
当确定为主节点时,处理任务请求并反馈处理结果;
当确定不是主节点时,将任务请求转发给主节点进行处理。
结合上述第一方面,作为一种可选的实现方式,当任意节点故障后,将故障节点从服务器后端摘除。
第二方面,本申请提供了一种节点选举装置,该装置包括:
确定模块,其用于基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期;
发送模块,其用于当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点;
判断模块,其用于根据所述主节点的反馈结果,判断所述主节点是否故障;
选举模块,其用于当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。
第三方面,本申请还提供了一种电子设备,所述电子设备包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现第一方面任一项所述的方法。
第四方面,本申请还提供了一种计算机可读存储介质,其存储有计算机程序指令,当所述计算机程序指令被计算机执行时,使计算机执行第一方面任一项所述的方法。
本申请提供的一种节点选举方法、装置、设备及存储介质,其中该方法包括步骤:基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期;当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点;根据所述主节点的反馈结果,判断所述主节点是否故障;当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。本申请能够避免不必要的切主,减小配置业务超时的风险,并且任意一个节点都可以处理查询类的请求,减小了请求失败的概率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1为本申请实施例中提供的一种节点选举方法流程图;
图2为本申请实施例中提供的一种节点选举装置示意图;
图3为本申请实施例中提供的处理任务请求流程图;
图4为本申请实施例中提供的一种电子设备示意图;
图5为本申请实施例中提供的一种计算机可读程序介质示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。附图所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。
以下结合附图对本申请的实施例作进一步详细说明。
参照图1,图1所示为本发明提供的一种节点选举方法流程图,如图1所示,该方法包括步骤:
步骤S101:基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期。
具体而言,所有节点(所有节点包括主节点和从节点)在预设时间间隔内获取一次数据库中的租约信息;
根据每个节点获取的所述租约信息,确定成功获取租约信息的一个节点作为当前节点,可以理解的是,多个节点获取租约信息中只有一个节点可以获取到租约信息(即,a、b和c三个节点,假设a先到,先获取到租约信息,那么a就是当前节点,a获取到租约并发现租约到期的节点可以成功更新租约,b和c后获取到租约的节点发现租约已经更新且未过期,就等待下次更新),可以理解为,当前节点是最先创建租约的节点,当主节点故障后,就是下次抢到租约的节点(可以理解为多人去抢一个东西,先到先得,谁先抢到谁就是主),当前节点就是抢到租约信息的节点。
获取到租约信息的节点作为当前节点,利用所述当前节点在所述数据库中查询租约信息是否到期。需要说明的是,获取到租约并发现租约到期的节点可以成功更新租约(即,当前节点),后获取到租约的节点发现租约已经更新且未过期,就等待下次更新,只有一个节点可以成功更新租约。
还需说明的是,当节点在获取租约信息时,发现租约信息中保存有主节点,且该主节点的租约未到期,就等待下次获取租约。只要主节点还在续约期内,其它节点就不能更新租约。此外,抢到租约的节点指的是成功更新租约的节点。
方便理解举例说明,然后判断租约信息是否到期,例如:一个节点读取到租约信息后,查看读取到租约的时间点是不是在租约信息中租约更新时间+租约持续时间之后,如果是,则表示租约已过期。比如B节点10:10:20读取到租约,发现租约里上次A更新的时间是10:10:10,且租约持续时间是10秒,那么A租约就到期了。
一实施例中,利用所述当前节点在所述数据库中查询租约信息是否到期之前,判断所述租约信息是否存在,当确定所述租约信息不存在时,在所述数据库中创建租约,其中创建租约中保存的主节点为所述当前节点,并且获得时间和续约时间为当前时间。
需要说明的是,创建租约的目的就是为了记录租约信息(包括当前主节点,续约持续时间,租约更新时间,主节点获取到租约的时间),一开始租约信息是不存在的,每个节点都定时去访问租约,哪个节点最先发现租约不存在,就由哪个节点创建租约。其中,租约信息是保存在底座的etcd集群中的,向etcd集群获取
可以理解的是,租约信息是保存在k8s(Kubernetes开源平台)的lease资源中的,如果这个lease资源存在,就表示租约存在,没有就表示租约不存在,第一个发现lease不存在的节点会创建这个lease资源,把自己的租约信息写进去。
一实施例中,当确定租约未到期时,判断租约中记录的主节点是否是所述当前节点;
若是,进行续约,并将租约中的续约时间更新为当前时间;
若不是,等待下一次获取租约信息。
可以理解的是所有节点每隔2s获取一次租约信息,如果获取租约信息成功的唯一节点发现租约不存在,那么自己创建租约,租约中保存的主节点为自己,即当前访问租约信息成功的节点,其中租约获取得时间和续约时间为当前时间。如果确认租约存在,查看租约是否已经到期,如果租约未到期,则查看租约中记录的主节点是否为当前节点,如果租约中主节点是当前节点,则进行续约,将租约中的续约时间更新为当前时间,如果主节点不是当前节点,则等待下一次获取租约。需要说明的是,当前时间是指当前节点查询到租约信息的时间。
步骤S102:当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点。
具体而言,如果租约已经到期,且租约中记录的主节点不是当前节点,当前节点先给主节点发送一个请求,如果请求返回成功,说明当前的主节点并未故障,则不进行切主,如果请求失败,则认为主节点故障,将租约中的主节点更新为当前节点,租约获得时间和续约时间更新为当前时间。
需要说明的是,判断是否为主节点的方式为,每个节点进程启动的时候会生成一个唯一标识的uuid,租约信息中保存了主节点的主机名+uuid,通过将当前节点的主机名+uuid跟租约中保存的信息做比较,如果一致的,当前节点就是主节点,否则不是。
步骤S103:根据所述主节点的反馈结果,判断所述主节点是否故障。
具体而言,当所述当前节点发送请求至所述主节点时,若所述主节点请求反馈成功,判断所述主节点未故障;若所述主节点请求反馈失败,判断所述主节点故障。
可以理解的是,B给A发送消息,A在设定的超时时间内返回成功则请求成功,则说明主节点A未故障,超时未返回或者返回失败则请求失败,则说明A故障。
步骤S104:当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。
可以理解的是,当主节点故障后,就是下次抢到租约的节点(可以理解为多人去抢一个东西,先到先得,谁先抢到谁就是主),当前节点就是抢到租约信息的节点作为主节点。
可以理解的是,假如有A、B、C三个节点,都分别每隔2秒去查看租约,A首先发现租约不存在,便创建租约,把它自己的节点名+uuid,租约获取时间和续约时间(当前时间点),以及租约持续时间(大于2s)保存在租约信息中,A就成为了主节点,并隔2s更新一次续约时间。B和C发现租约存在,里面保存的主节点是A,且A的租约没过期,则等待下一次获取租约。当A故障时,无法继续续约,B某次查询到租约信息,发现A的续约时间+租约持续时间已经过了当前时间点,认为A的租约已经到期,就向A发送请求,若请求返回成功,则认为A并未故障,等待下一次获取租约,若返回失败,则认为A已经故障,则将租约中的主节点更新为B的主机名+uuid,租约获取时间和续约时间更新为当前时间点,B就成为了主节点。C查询到租约时,发现主节点是B,且租约未到期,则等待下一次获取租约。
参照图2,图2所示为本发明提供的一种节点选举装置示意图,如图2所示,该装置包括:
确定模块201:其用于基于每个节点获取的租约信息,确定唯一成功获取租约信息的当前节点,并基于所述当前节点确定租约是否到期。
发送模块202:其用于当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点。
判断模块203:其用于根据所述主节点的反馈结果,判断所述主节点是否故障。
选举模块204:其用于当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。
进一步地,一种可能的实施方式中,确定模块,还用于所有节点在预设时间间隔内获取一次数据库中的租约信息;
根据每个节点获取的所述租约信息,确定成功获取租约信息的一个节点作为当前节点;
利用所述当前节点在所述数据库中查询租约信息是否到期。
进一步地,一种可能的实施方式中,判断模块,还用于判断所述租约信息是否存在;
当确定所述租约信息不存在时,在所述数据库中创建租约,其中创建租约中保存的主节点为所述当前节点,并且获得时间和续约时间为当前时间。
进一步地,一种可能的实施方式中,判断模块,还用于当确定租约未到期时,判断租约中记录的主节点是否是所述当前节点;
若是,进行续约,并将租约中的续约时间更新为当前时间;
若不是,等待下一次获取租约信息。
进一步地,一种可能的实施方式中,判断模块,还用于当所述当前节点发送请求至所述主节点时,若所述主节点请求反馈成功,判断所述主节点未故障;
若所述主节点请求反馈失败,判断所述主节点故障。
进一步地,一种可能的实施方式中,判断模块,还用于当所有节点中的任意一个节点收到任务请求,判断所述任务请求的类型,所述类型包括:不需要排队处理的查询请求和需要排队处理的配置请求;
当确定所述任务类型为查询请求时,直接由该节点进行处理;
当确认所述任务类型为配置请求时,判断该节点是否为主节点;
当确定为主节点时,处理任务请求并反馈处理结果;
当确定不是主节点时,将任务请求转发给主节点进行处理。
进一步地,一种可能的实施方式中,执行模块,其用于当任意节点故障后,将故障节点从服务器后端摘除。
参照图3,图3所示为本发明提供的处理任务请求流程图,如图3所示:
当所有节点中的任意一个节点收到任务请求,判断所述任务请求的类型,所述类型包括:不需要排队处理的查询请求和需要排队处理的配置请求;
当确定所述任务类型为查询请求时,直接由该节点进行处理;
当确认所述任务类型为配置请求时,判断该节点是否为主节点;
当确定为主节点时,处理任务请求并反馈处理结果;
当确定不是主节点时,将任务请求转发给主节点进行处理。
判断是否为主节点的方式为每个节点进程启动的时候会生成一个唯一标识的uuid,租约信息中保存了主节点的主机名+uuid,通过将当前节点的主机名+uuid跟租约中保存的信息做比较,如果一致的,当前节点就是主节点,否则不是。
一实施例中,当任意节点故障后,将故障节点从服务器后端摘除,即当某节点故障后,在这个节点被从service后端摘除之前,不会所有请求都无法处理,只有三分之一的概率请求被负载到该故障节点,大大减小了请求失败的概率。
需要说明的是,所有请求都发给主节点执行,会加重主节点压力,且主节点故障切主期间所有请求都无法处理,k8s的service的负载均衡机制可以解决这个问题,但是对于需要排队执行的任务,无法保证任务的顺序性,本专利在k8s的service本身的负载均衡机制基础上,增加了对任务类型的判断,对于需要排队的任务,如果当前节点是主节点,则直接执行,如果当前节点不是主节点,则转发给主节点执行,对于不需要排序的任务(如查询类任务),则直接由当前节点执行即可,这样既实现了负载均衡又能保证任务执行的顺序性。
可以理解的是,利用k8s的service机制,请求下发时随机负载到一个节点,如果是不需要排队的请求,如查询类请求,则负载到哪个节点就由哪个节点处理,如果是需要排队处理的请求,如配置类请求,则判断当前节点是否主节点,是主节点则直接处理,不是主节点则转发给主节点处理。当某个节点故障后,该节点会被从service的后端列表中摘除,请求就不会再负载到该节点。
请求随机负载到一个节点,实现了负载均衡,任意一个节点都可以处理查询类的请求,而不是集中由主节点处理,可以缓解主节点的压力,需要排队的请求转发给主节点处理,可以保证任务的顺序性,避免任务之间相互影响。
下面参照图4来描述根据本发明的这种实施方式的电子设备400。图4显示的电子设备400仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,电子设备400以通用计算设备的形式表现。电子设备400的组件可以包括但不限于:上述至少一个处理单元410、上述至少一个存储单元420、连接不同系统组件(包括存储单元420和处理单元410)的总线430。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元410执行,使得所述处理单元410执行本说明书上述“实施例方法”部分中描述的根据本发明各种示例性实施方式的步骤。
存储单元420可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)421和/或高速缓存存储单元422,还可以进一步包括只读存储单元(ROM)423。
存储单元420还可以包括具有一组(至少一个)程序模块425的程序/实用工具424,这样的程序模块425包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线430可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备400也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备400交互的设备通信,和/或与使得该电子设备400能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口450进行。并且,电子设备400还可以通过网络适配器460与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器460通过总线430与电子设备400的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备400使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施方式的方法。
根据本公开的方案,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的步骤。
参考图5所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品500,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本发明示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
本发明是参照根据本发明实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
Claims (10)
1.一种节点选举方法,其特征在于,包括:
基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期;
当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点;
根据所述主节点的反馈结果,判断所述主节点是否故障;
当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。
2.根据权利要求1所述的方法,其特征在于,所述基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期,包括:
所有节点在预设时间间隔内获取一次数据库中的租约信息;
根据每个节点获取的所述租约信息,确定成功获取租约信息的一个节点作为当前节点;
利用所述当前节点在所述数据库中查询租约信息是否到期。
3.根据权利要求2所述的方法,其特征在于,所述利用所述当前节点在所述数据库中查询租约信息是否到期之前,包括:
判断所述租约信息是否存在;
当确定所述租约信息不存在时,在所述数据库中创建租约,其中创建租约中保存的主节点为所述当前节点,并且获得时间和续约时间为当前时间。
4.根据权利要求1所述的方法,其特征在于,还包括:
当确定租约未到期时,判断租约中记录的主节点是否是所述当前节点;
若是,进行续约,并将租约中的续约时间更新为当前时间;
若不是,等待下一次获取租约信息。
5.根据权利要求1所述的方法,其特征在于,所述根据所述主节点的反馈结果,判断所述主节点是否故障,包括:
当所述当前节点发送请求至所述主节点时,若所述主节点请求反馈成功,判断所述主节点未故障;
若所述主节点请求反馈失败,判断所述主节点故障。
6.根据权利要求1所述的方法,其特征在于,还包括:
当所有节点中的任意一个节点收到任务请求,判断所述任务请求的类型,所述类型包括:不需要排队处理的查询请求和需要排队处理的配置请求;
当确定所述任务类型为查询请求时,直接由该节点进行处理;
当确认所述任务类型为配置请求时,判断该节点是否为主节点;
当确定为主节点时,处理任务请求并反馈处理结果;
当确定不是主节点时,将任务请求转发给主节点进行处理。
7.根据权利要求6所述的方法,其特征在于,还包括:
当任意节点故障后,将故障节点从服务器后端摘除。
8.一种节点选举装置,其特征在于,包括:
确定模块,其用于基于每个节点获取的租约信息,确定获取到租约信息的当前节点,并基于所述当前节点确定租约是否到期;
发送模块,其用于当确定租约到期,且租约中记录的主节点不是所述当前节点时,所述当前节点发送请求至所述主节点;
判断模块,其用于根据所述主节点的反馈结果,判断所述主节点是否故障;
选举模块,其用于当确定所述主节点故障时,将所述当前节点选举为租约中的主节点。
9.一种电子设备,其特征在于,所述电子设备,包括:
处理器;
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其存储有计算机程序指令,当所述计算机程序指令被计算机执行时,使计算机执行根据权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311556137.0A CN117573282A (zh) | 2023-11-17 | 2023-11-17 | 一种节点选举方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311556137.0A CN117573282A (zh) | 2023-11-17 | 2023-11-17 | 一种节点选举方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117573282A true CN117573282A (zh) | 2024-02-20 |
Family
ID=89885805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311556137.0A Pending CN117573282A (zh) | 2023-11-17 | 2023-11-17 | 一种节点选举方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117573282A (zh) |
-
2023
- 2023-11-17 CN CN202311556137.0A patent/CN117573282A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108683516B (zh) | 一种应用实例的升级方法、装置和系统 | |
US7958210B2 (en) | Update management method and update management unit | |
US20100174807A1 (en) | System and method for providing configuration synchronicity | |
JP6191159B2 (ja) | サーバ、バックアップシステム、バックアップ方法、および、コンピュータ・プログラム | |
CN109582335B (zh) | 一种无中断存储集群节点在线升级方法、装置及设备 | |
CN103460203A (zh) | 群集唯一标识符 | |
US20100042991A1 (en) | Business-in-a-box integration server and integration method | |
CN105677380B (zh) | 一种双主控隔离的逐板升级的方法及装置 | |
CN111464603B (zh) | 一种服务器扩容方法及扩容系统 | |
CN112799786A (zh) | 微服务实例的退出方法、装置、设备及存储介质 | |
WO2016116013A1 (zh) | 软件升级方法和系统 | |
WO2023071999A1 (zh) | 一种用户匹配方法、装置、设备及存储介质 | |
US8719622B2 (en) | Recording and preventing crash in an appliance | |
CN110365524B (zh) | 服务器节点固件的镜像升级方法及系统 | |
CN115309457B (zh) | 应用实例的重启方法、装置、电子设备及可读存储介质 | |
CN117573282A (zh) | 一种节点选举方法、装置、设备及存储介质 | |
CN110798358A (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN108156201B (zh) | 统一管理应用系统配置数据的方法和装置 | |
JP2002366381A (ja) | オブジェクトの動的入替え処理方法 | |
CN113568638A (zh) | 基于镜像仓库的电力监控系统容器化不停机发布方法 | |
WO2015127758A1 (zh) | 备份文件的数据重传方法及装置、系统 | |
JP2010134583A (ja) | データベース処理方法、データベース処理プログラム、および、データベース指示装置 | |
JP5445177B2 (ja) | 確定クロック判定プログラム及び方法、並びにノード装置 | |
JP2001350732A (ja) | 分散オブジェクト管理方法及びその実施装置並びにその処理プログラムを記録した記録媒体 | |
CN112714143A (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 |