CN109240840B - 集群系统的容灾方法、装置和机器可读介质 - Google Patents

集群系统的容灾方法、装置和机器可读介质 Download PDF

Info

Publication number
CN109240840B
CN109240840B CN201710561504.4A CN201710561504A CN109240840B CN 109240840 B CN109240840 B CN 109240840B CN 201710561504 A CN201710561504 A CN 201710561504A CN 109240840 B CN109240840 B CN 109240840B
Authority
CN
China
Prior art keywords
node
lease
standby
distributed lock
main
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
Application number
CN201710561504.4A
Other languages
English (en)
Other versions
CN109240840A (zh
Inventor
安龙送
周博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710561504.4A priority Critical patent/CN109240840B/zh
Publication of CN109240840A publication Critical patent/CN109240840A/zh
Application granted granted Critical
Publication of CN109240840B publication Critical patent/CN109240840B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0709Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Hardware Redundancy (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请实施例提供了一种集群系统的容灾方法、装置和机器可读介质,所述集群系统包括:主节点和备节点,所述备节点对应有所述主节点授予的租约,所述方法包括:获取所述备节点的租约对应的租约时间;依据所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。本申请实施例可以提高集群系统的稳定性和可靠性。

Description

集群系统的容灾方法、装置和机器可读介质
技术领域
本申请涉及计算机集群技术领域,特别是涉及一种集群系统的容灾方法、装置和机器可读介质。
背景技术
计算机集群可以利用多个集群节点并行计算从而获得较高的计算速度,也可以用多个集群节点做备份,从而使得任何一台设备故障后整个集群系统还能正常运行。集群系统的可靠性是指集群系统对不论在何种情况下对请求的响应能力,也即,当集群系统中任何一台设备或者任何一个集群节点发生故障时集群系统能够通过剩下的设备和集群节点继续运行,这对集群系统的容灾能力提出了较高的要求。
现有方案通常利用心跳(Heartbeat)检测方法,检测集群系统中的集群节点是否宕机。传统的心跳检测方法,如果在指定时间段之内没有接收到被检测节点的心跳消息,则可认为被检测节点宕机。例如,集群系统中的主节点(Master)和备节点(Slave)可以维持心跳,当提供服务的主节点出现故障时,若备节点检测不到主节点的心跳,则备节点将自动升级为主节点并提供服务。
现有方案中,当提供服务的主节点发生宕机时,若备节点检测不到主节点的心跳,则备节点将自动升级为主节点并提供服务。然而,当集群系统中存在至少两个备节点时,由于至少两个备节点具备升级为主节点的同等权利,故可能出现脑裂问题,也即,该至少两个备节点可能均升级为主节点,集群系统将出现至少两个主节点,进而出现至少两个主节点互相竞争资源的情况,严重情况下可能导致数据被破坏。
发明内容
本申请实施例公开了一种集群系统的容灾方法、装置和机器可读介质,所述集群系统包括:主节点和备节点,所述备节点对应有主节点授予的租约,其中的方法包括:获取所述备节点的租约对应的租约时间;依据所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。
与现有方案相比,本申请实施例包括以下优点:
本申请实施例中,主节点可以向备节点授予租约,租约对应的租约时间可用于表征租约对应的期限,例如,上述租约时间可以包括:租约到期时间、或者租约生成时间等;对于不同备节点的租约而言,租约生成时间不同和/或传输时间不同和/或不同节点的时钟不一致等因素、导致不同备节点的租约对应的租约时间存在不一致性,因此,可以将所述备节点的租约对应的租约时间作为对主节点的分布式锁进行抢占的依据,抢到分布式锁的节点可以切换为主节点,并在分布式锁的期限内提供服务;由于不同备节点的租约对应的租约时间之间的不一致性可以有效避免分布式锁被两个或两个以上备节点抢占的问题,因此可以提高集群系统的稳定性和可靠性。
附图说明
图1是本申请的一种集群系统的容灾方法实施例的流程图;
图2是本申请的另一种集群系统的容灾方法实施例的流程图;
图3是本申请的一种集群系统的容灾方法实施例的流程图;
图4是本申请的一种集群系统的容灾方法应用示例1的流程图;
图5是本申请的一种数据处理方法实施例的流程图;
图6是本申请的一种集群系统的容灾装置实施例的结构框图;
图7是本申请的一种集群系统的容灾装置实施例的结构框图;以及
图8是本申请一实施例提供的装置的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请的构思易于进行各种修改和替代形式,其具体实施例已经通过附图的方式示出,并将在这里详细描述。然而,应该理解,上述内容并不是用来将本申请的构思限制为所公开的具体形式,相反地,本申请的说明书和附加权利要求书意欲覆盖所有的修改、等同和替代的形式。
本说明书中的“一个实施例”,“实施例”,“一个具体实施例”等,表示所描述的实施例可以包括特定特征、结构或特性,但是每个实施例可以包括或可以不必然包括该特定特征、结构或特性。此外,这样的短语不一定指的是同一实施例。另外,在联系一个实施例描述特定特征、结构或特性的情况下,无论是否明确描述,可以认为本领域技术人员所知的范围内,这样的特征、结构或特性也与其他实施例有关。另外,应该理解的是,“在A,B和C的至少一个”这种形式所包括的列表中的条目中,可以包括如下可能的项目:(A);(B);(C);(A和B);(A和C);(B和C);或(A,B和C)。同样,“A,B或C中的至少一个”这种形式列出的项目可能意味着(A);(B);(C);(A和B);(A和C);(B和C);或(A,B和C)。
在一些情况下,所公开的实施例可以被实施为硬件、固件、软件或其任意组合。所公开的实施例也可以实现为携带或存储在一个或多个暂时的或者非暂时的机器可读(例如计算机可读)存储介质中的指令,该指令可以被一个或多个处理器执行。机器可读存储介质可以实施为用于以能够被机器读取的形式存储或者传输信息的存储装置、机构或其他物理结构(例如易失性或非易失性存储器、介质盘、或其他媒体其它物理结构装置)。
在附图中,一些结构或方法特征可以以特定的安排和/或排序显示。然而,优选地,这样的具体安排和/或排序并不是必要的。相反,在一些实施方案中,这样的特征可以以不同的方式和/或顺序排列,而不是如附图中所示。此外,特定的附图中的结构或方法特征中所包含的内容,不意味着暗示这种特征是在所有实施例是必须的,并且在一些实施方案中,可能不包括这些特征,或者可能将这些特征与其它特征相结合。
本申请实施例提供了一种集群系统的容灾方案,该集群系统可以包括:主节点和备节点,该备节点可以对应有主节点授予的租约,该方案可以应用于集群系统中备节点,该备节点可以依据备节点的租约进行如下处理:获取所述备节点的租约对应的租约时间;依据所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。
可选地,该主节点可以对应有自身授予的租约,本申请实施例的方案还可以应用于集群系统中的备节点和主节点,该备节点和主节点可以依据主节点和备节点的租约进行如下处理:依据所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点,或者,若作为主节点的本节点抢占得到所述主节点的分布式锁,则保持主节点角色。
本申请实施例中,主节点和备节点可分别为集群系统中处于某种业务的激活(Active)状态和备用(Standby)状态的节点,备节点对主节点的数据做备份处理,以得到对应的备份数据;当主节点宕机时,可以将业务及时切换到备节点,以实现业务的不间断进行。在实际应用中,集群系统中主节点的数目可以为1,备节点的数目可以等于1或者大于1,本申请实施例的集群系统的容灾方案可以在主节点或每个者备节点上执行,为便于描述,本申请实施例将执行集群系统的容灾方案的备节点或者主节点作为本节点。
租约(lease)是由授权者授予的在一个时间段内的承诺。授权者一旦授予租约,则在租约不过期的情况下,授权者和被授权者遵守承诺。具体到本申请实施例,授权者可以为主节点,被授权者可以为主节点自身和/或备节点,租约对应的承诺可以为处理租约任务的权限,例如,主节点的租约对应的租约任务可以包括:处理业务、参与主节点的选举等,备节点的租约对应的租约任务可以为:对主节点的数据做备份处理、参与主节点的选举等。
本申请实施例中,主节点可以向自身和/或备节点授予租约,租约对应的租约时间可用于表征租约对应的期限,例如,上述租约时间可以包括:租约到期时间、或者租约生成时间等。对于不同节点(包括主节点和备节点)的租约而言,租约生成时间不同和/或传输时间不同和/或不同节点的时钟不一致等因素、导致不同节点的租约对应的租约时间存在不一致性,因此,可以将所述主节点和所述备节点的租约对应的租约时间作为对主节点的分布式锁进行抢占的依据,抢到分布式锁的节点可以保持主节点角色、或者切换为主节点,并在分布式锁的期限内提供服务;由于不同节点的租约对应的租约时间之间的不一致性可以有效避免分布式锁被两个或两个以上节点抢占的问题,因此可以提高集群系统的稳定性和可靠性。
本申请实施例可以在主节点发生宕机、和/或、主节点的分布式锁到期等应用场景下,通过对主节点的分布式锁进行抢占,实现主节点的选举,可以理解,本申请实施例对于具体的应用场景不加以限制。
本申请实施例提供了一种集群系统的容灾方法。
参照图1,示出了本申请的一种集群系统的容灾方法实施例的流程图,该集群系统可以包括:主节点和备节点,所述备节点、或者所述主节点和备节点可以对应有主节点授予的租约,该方法可以应用于集群系统中本节点,该本节点可以依据备节点、或者主节点和备节点的租约执行如下步骤:
步骤101、获取所述备节点、或者所述主节点和所述备节点的租约对应的租约时间;
步骤102、依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
步骤103、若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点,或者,若作为主节点的本节点抢占得到所述主节点的分布式锁,则保持主节点角色。
本申请实施例中,本节点可用于表示当前设备对应的节点,本节点的角色可以为主节点或者备节点,也即,图1所示方法实施例可以应用于主节点或者备节点。需要说明的是,本申请实施例的备节点可以为集群系统中已有的备节点,也可以为集群系统中新加入的备节点,例如,在某节点故障恢复后可以作为备节点加入集群系统。本申请实施例中,租约有效的主节点和备节点可以具备参与选举主节点(也即对主节点的分布式锁进行抢占)的权限。
本申请实施例中,主节点可以向自身和/或备节点授予租约。可选地,主节点可以保存主节点和备节点对应的租约数据。可选地,上述租约数据可以包括:主节点和备节点与租约信息之间的映射关系。例如,可以保存主节点和备节点的IP(网络之间互联的协议,Internet Protocol)地址、租约时间和租约任务之间的映射关系。其中,租约时间可用于表征租约的期限信息,由于在实际应用中向不同节点授予的租约的租约时长可以是相同的,因此,可以通过租约生成时间来表征上述租约时间,或者,可以通过租约到期时间来表征上述租约时间,或者,还可以通过租约的版本号来表征上述租约时间,可以理解,本申请实施例对于租约时间的具体表征方式不加以限制。
在本申请的一种可选实施例中,所述方法还可以包括:在本节点的租约到期之前,发送续约请求,以通过所述续约请求延长所述本节点的租约的租约时间。例如,本节点可以在设备启动后向主节点发送租约请求,并接收主节点依据所述租约请求返回的租约;进一步,本节点可以在所述租约到期之前向主节点发送续约请求,并接收主节点依据所述续约请求返回的租约。可以理解,上述在设备启动后向主节点发送租约请求只是作为示例,实际上,本申请实施例对于租约请求的具体发送时机不加以限制。
由于备节点可以对主节点的数据做备份处理,也即,备节点可以存储主节点的备份数据,由于该备份数据和主节点的数据可以一致,故该备节点也可以存储主节点和备节点对应的租约数据。例如,集群系统包括节点A、节点B和节点C等节点,假设节点A作为主节点正运行某服务,节点B和节点C作为备节点,则节点A可以向自身、节点B和节点C授予租约,并分别存储节点A、节点B、节点C对应的租约数据。由于节点B和节点C可以存储节点A的备份数据,故节点B和节点C也可以存储节点A、节点B、节点C对应的租约数据。因此,无论本节点为主节点或者备节点,均可以具备所述主节点和所述备节点的租约的获取能力。
在本申请的一种可选实施例中,上述步骤101获取所述备节点、或者主节点和所述备节点的租约对应的租约时间的过程,可以包括:从本节点存储的租约数据中获取所述备节点、或者所述主节点和所述备节点的租约,并依据所述备节点、或者所述主节点和备节点的租约,获取所述备节点、或者所述主节点和所述备节点的租约对应的租约时间。例如,所述租约中可以携带所述租约对应的租约到期时间;又如,租约中可以携带有所述租约对应的租约生成时间和租约时长,该租约生成时间可以表征租约的期限信息。例如,若租约生成时间为[01:45],租约时长为12s,则对应的租约到期时间可以为[01:57];再如,可以依据租约携带的版本号确定租约对应的租约时间等,可以理解,本申请实施例对于依据所述主节点和备节点的租约,获取所述主节点和所述备节点的租约对应的租约时间的具体过程不加以限制。
可以理解,上述从本节点存储的租约数据中获取所述备节点、或者所述主节点和所述备节点的租约的过程只是作为可选实施例,实际上,还可以将主节点发送的租约作为本节点的租约,可以理解,本申请实施例对于获取所述备节点、或者所述主节点和所述备节点的租约对应的租约时间的具体过程不加以限制。
分布式锁是控制分布式系统之间同步访问共享资源的一种方式,具体到本申请实施例,可以通过一个分布式锁实现主节点的唯一,具体地,抢到分布式锁的节点可以保持主节点角色、或者切换为主节点。在实际应用中,可以通过zookeeper(动物园管理者)、memcached(分布式内存对象缓存系统)redis(键值对存储系统)等分布式系统实现分布式锁,本申请实施例对于分布式锁的具体实现方式不加以限制。
在本申请的一种可选实施例中,上述步骤102对主节点的分布式锁进行抢占的过程可以包括:对所述备节点、或者所述主节点和所述备节点的租约对应的租约时间进行排序,得到排序结果;若本节点在所述排序结果中租约时间最晚,则获得主节点的分布式锁。本申请实施例中,某节点获得主节点的分布式锁的条件可以为:该节点在所述排序结果中租约时间最晚,这样,可以提高主节点的有效期。可以理解,上述该节点在所述排序结果中租约时间最晚只是作为某节点获得主节点的分布式锁的条件的示例,实际上,由于不同节点的租约对应的租约时间之间的不一致性可以有效避免分布式锁被两个或两个以上节点抢占的问题,故租约有效的节点均具备获得主节点的分布式锁的权限。
在本申请的另一种可选实施例中,在所述步骤102对主节点的分布式锁进行抢占之前,所述方法还可以包括:判断所述本节点的租约是否有效;则所述步骤102对分布式锁进行抢占的过程可以包括:当所述本节点的租约有效时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占。对于主节点或者备节点而言,由于其租约对应的租约任务(包括参与选举的任务)是有期限的,故当所述本节点的租约有效时,其具备对于所述租约对应的租约任务的操作权限,故其可以参与分布式锁的抢占。可以理解,当所述本节点的租约无效时,其不具备对于所述租约对应的租约任务的操作权限,故其不具备参与分布式锁的抢占的权限。
在本申请的再一种可选实施例中,所述步骤102对主节点的分布式锁进行抢占的过程可以包括:从所述备节点、或者所述主节点和所述备节点中获取租约有效的目标节点;依据所述目标节点的租约对应的租约时间,对主节点的分布式锁进行抢占。上述目标节点的租约有效,表明其具备对于所述租约对应的租约任务的操作权限,故可以参与分布式锁的抢占。上述依据所述目标节点的租约对应的租约时间,对主节点的分布式锁进行抢占的过程可以包括:对所述目标节点的租约对应的租约时间进行排序,得到第一排序结果;若本节点在所述第一排序结果中租约时间最晚,则获得主节点的分布式锁。
在本申请的又一种可选实施例中,所述步骤102对主节点的分布式锁进行抢占的过程可以包括:当符合预置条件时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;其中,所述预置条件可以包括:主节点发生宕机,和/或,主节点的分布式锁到期。
本申请实施例可以提供主节点是否发生宕机的如下判断方式:
判断方式1、判断主节点的租约是否有效,若否,则判定所述主节点发生宕机;或者
判断方式2、若在预设时间段之内未接收到主节点的心跳消息,则判定所述主节点发生宕机。
判断方式1采用的判断过程可以为,计算主节点的租约对应的租约到期时间与当前时间之间的第一差值,若该第一差值小于0,则判定主节点的租约失效,否则判定主节点的租约有效。其中,在计算主节点的租约对应的租约到期时间与当前时间之间的第一差值的过程中,主节点的租约对应的租约到期时间可以作为被减数,当前时间可以作为减数。
或者,判断方式1采用的判断过程可以为,计算当前时间与主节点的租约对应的租约生成时间之间的第二差值,若该第二差值大于租约时长,则判定主节点的租约失效,可以理解,本申请实施例对于判断主节点的租约是否有效的具体过程不加以限制。
在实际应用中,主节点和备节点可以维持心跳消息。判断方式2中的预设时间段可以依据最近一次接收到主节点的心跳消息的目标时间确定,例如,该预设时间段的起始时刻可以为该目标时间,该预设时间段的长度可以预设长度,其中,该预设长度可以为本领域技术人员依据实际应用需求确定的数值,例如,该预设长度可以为30s、60s等数值,可以理解,本申请实施例对于具体的预设长度和预设时间段不加以限制。
本申请实施例中,主节点的分布式锁也可以具有对应的期限,该分布式锁的期限与主节点的租约的期限可以为不同的特征。在实际应用中,可以通过例如lease的方式控制主节点的分布式锁的期限,可以理解,本申请实施例对于主节点的分布式锁的期限的具体实现方式不加以限制。
在本节点抢占得到所述主节点的分布式锁的情况下,若本节点为主节点,则可以保持主节点角色;或者,若本节点为备节点,则可以切换为主节点。
在本申请的一种可选实施例中,在本节点未抢占到所述主节点的分布式锁的情况下,若本节点为主节点,则可以切换为备节点。对于本次选举后的备节点而言,若本次选举使得主节点发生了变化,则本次选举后的备节点可以连接到新的主节点,并向该新的主节点发送租约请求、续约请求和心跳消息中的至少一种。
在本申请的另一种可选实施例中,本申请实施例的所述方法还可以包括:在所述主节点的分布式锁到期之前,发送延期请求,以通过所述延期请求延长所述分布式锁的到期时间。本申请实施例可以支持主节点对于分布式锁的到期时间的延长,这样,可以使得主节点在未发生宕机的情况下,保持主节点角色。可选地,上述延期请求的接收方可以为分布式锁的维护方(如管理节点等),可以理解,本申请实施例对于上述延期请求的接收方不加以限制。可选地,分布式锁的维护方可以向主节点授予分布式锁的租约,则在分布式锁的租约到期之前,主节点可以发生续约请求,以通过该续约请求延长所述分布式锁的到期时间。可以理解,本申请实施例对于分布式锁的期限的具体实现方式不加以限制。
在本申请实施例的再一种可选实施例中,上述集群系统可以包括:主节点、备节点和工作节点,其中,主节点和备节点作为控制节点,可以向工作节点授予租约,并记录工作节点对应的租约数据。可选地,工作节点对应的租约数据可以包括:工作节点与租约信息之间的映射关系。例如,可以保存工作节点的IP地址、租约时间和租约任务之间的映射关系。
可选地,工作节点在自身的租约到期之前,可以向控制节点发送续约请求,以通过该续约请求申请租约时间的延长,若申请成功,则控制节点可以延长工作节点的租约对应的租约时间,例如,控制节点可以依据该续约请求向工作节点重新发送新的租约。
可选地,在工作节点的租约到期之前,若主节点未收到对应的续约请求,则可以向工作节点发送新的租约,如果发送成功,则工作节点的租约可以得到续期,且对应的租约时间可以得到延长。
在实际应用中,网络故障(如网络延迟、丢包等)、控制节点的机器故障等因素可能导致工作节点的租约的续期失败,进一步可能导致工作节点的租约失效。在工作节点的租约失效的情况下,工作节点可以停止租约对应的租约任务,同时,控制节点可以禁止所述工作节点对于所述租约对应的租约任务的操作权限,例如,可以摘掉对应工作节点的相关信息。
需要说明的是,上述控制节点与工作节点之间的交互过程可由主节点来执行,且主节点可以向备节点同步工作节点的相关数据。
综上,本申请实施例的集群系统的容灾方法,主节点可以向自身和/或备节点授予租约,且将所述主节点和所述备节点的租约对应的租约时间作为对主节点的分布式锁进行抢占的依据,抢到分布式锁的节点可以保持主节点角色、或者切换为主节点,并在分布式锁的期限内提供服务;对于不同节点(包括主节点和备节点)的租约而言,租约生成时间不同和/或传输时间不同和/或不同节点的时钟不一致等因素、导致不同节点的租约对应的租约时间存在不一致性,因此,该不一致性可以有效避免分布式锁被两个或两个以上节点抢占的问题,因此可以提高集群系统的稳定性和可靠性。
参照图2,示出了本申请的另一种集群系统的容灾方法实施例的流程图,该集群系统可以包括:主节点和备节点,所述主节点和备节点可以对应有主节点授予的租约,具体可以包括如下步骤:
步骤201、主节点在启动后向自身授予租约;
可选地,初始状态下的主节点可以为预先设定的节点,也可以为众多节点中最早启动的节点,例如,集群系统中的控制节点可以包括:节点A、节点B和节点C,若节点A为3个节点中最早的节点,则节点A可以作为主节点。
可选地,主节点可以通过运行的不同模块(如第一模块和第二模块)来实现租约的授予和接收。例如,第一模块可以向第二模块授予租约。进一步,第二模块在主节点自身的租约到期之前,可以向第一模块发送续约请求,以延长续约的期限。
步骤202、备节点在启动后向主节点发送租约请求;
步骤203、主节点依据所述租约请求,向所述备节点发送租约;
例如,所述租约中可以携带有租约对应的租约生成时间和租约时长,也即,备节点可以接收所述主节点依据所述租约请求发送的租约。可选地,备节点在自身的租约到期之前,可以向所述主节点发送续约请求,并接收所述主节点依据所述续约请求发送的租约,以延长租约的期限。
步骤204、备节点依据主节点的租约对应的租约时间和/或心跳消息,判断主节点是否发生宕机;
步骤205、若判定主节点发生宕机,则依据租约有效的目标备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
在实际应用中,主节点和备节点可以保存主节点和备节点对应的租约数据,则可以从上述租约数据中获取所有备节点的租约,并依据各备节点的租约判断某备节点的租约是否有效,以得到租约有效的目标备节点。并且,还可以依据目标备节点的租约,获取目标备节点的租约对应的租约时间。
步骤206、若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。
综上,本申请实施例的集群系统的容灾方法,在主节点发生宕机的情况下,备节点可以依据租约有效的目标备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;对于不同备节点的租约而言,租约生成时间不同和/或传输时间不同和/或不同备节点的时钟不一致等因素、导致不同备节点的租约对应的租约时间存在不一致性,因此,该不一致性可以有效避免分布式锁被两个或两个以上备节点抢占的问题,因此可以提高集群系统的稳定性和可靠性。
在本申请的一些实施例中,主节点可以依据自身和/或备节点的租约对应的租约时间,判断自身和/或备节点的租约是否有效;若自身和/或备节点的租约无效,则可以禁止自身和/或备节点对于所述租约对应的租约任务的操作权限。
在本申请的一些实施例中,在主节点的分布式锁到期的到期的情况下,主节点和备节点可以依据租约有效的目标节点(包括主节点和备节点)的租约对应的租约时间,对主节点的分布式锁进行抢占。
现有方案的心跳检测方法无法真正检测被检测节点是否宕机,主要困难在于无法真正区别被检测节点宕机与被检测节点的心跳消息还没到达这两种情况,当没有宕机的被检测节点被判定为宕机时就容易造成误判。在检测节点被误判为宕机的情况下,若被检测节点为主节点或者工作节点,则容易出现脑裂问题。
例如,集群系统包括节点D和节点E,假设节点D作为主节点正运行某服务,节点E作为备节点,当节点E通过心跳检测方法发现无法与节点D通信时,如果节点E判定节点D出现宕机,则节点E将作为主节点接替节点D来运行服务,然而如果节点D仍在正常运行,则集群系统将出现节点D和节点E两个主节点,进而容易出现两个或者两个以上主节点互相竞争资源的情况,严重情况下可能导致数据被破坏。
又如,若集群系统包括节点M、节点N、节点O等节点,假设节点N作为工作节点正运行某服务,节点M作为控制节点,当节点M通过心跳检测方法发现无法与节点N通信时,如果节点M判定节点N出现宕机,则节点M将调度其他工作节点(如节点O)接替节点N来运行服务,然而如果节点N仍在正常运行,则集群系统将一个服务被两个工作节点同时运行的情况,进而容易出现两个或者两个以上工作节点互相竞争资源的情况,严重情况下可能导致数据被破坏。
本申请实施例提供了一种集群系统的容灾方案,该方案可以应用于集群系统中被检测节点,其中,该被检测节点可以为集群系统中的任意节点,该被检测节点可以对应有租约,该被检测节点可以根据自身的租约进行如下处理:获取所述租约对应的租约时间;依据所述租约对应的租约时间,判断所述租约是否有效;若所述租约无效,则停止所述租约对应的租约任务。
租约是由授权者授予的在一个时间段内的承诺。授权者一旦授予租约,则在租约不过期的情况下,授权者和被授权者遵守承诺。具体到本申请实施例,授权者可以为检测节点,被授权者可以为被检测节点,租约对应的承诺可以为处理租约任务的权限,例如,上述租约任务可以为:分布式系统中的计算任务等。
本申请实施例的被检测节点在自身的租约无效时可以自动停止该租约对应的租约任务,这样,在被检测节点被误判为宕机的情况下,可以避免该租约对应的租约任务被该被检测节点及其他节点同时处理也即脑裂问题,进而可以提高集群系统的稳定性和可靠性。
本申请实施例中,上述被检测节点可以为工作节点、或者控制节点的主节点、或者控制节点的备节点。其中,控制节点可用于集群系统中的任务调度,工作节点可用于集群系统中的的任务处理。
本申请实施例提供了一种集群系统的容灾方法。
参照图3,示出了本申请的一种集群系统的容灾方法实施例的流程图,应用于集群系统中被检测节点,所述被检测节点可以对应有租约,所述方法实施例可由被检测节点依据自身的租约执行如下步骤:
步骤301、获取租约对应的租约时间;
步骤302、依据所述租约对应的租约时间,判断所述租约是否有效;
步骤303、若所述租约无效,则停止所述租约对应的租约任务。
在实际应用中,被检测节点可以从检测节点获得被检测节点自身的租约,该租约中可以携带有租约信息。可选地,上述租约信息可以包括:检测节点的IP地址、被检测节点的IP地址、租约时间和租约任务中的至少一种。根据一些实施例,被检测节点的例子可以包括:工作节点、或者控制节点的主节点、或者控制节点的备节点。检测节点的例子可以包括:控制节点、管理节点、或者控制节点的主节点,其中,上述管理节点可用于管理控制节点的主节点或者备节点。可以理解,本申请实施例对于具体的被检测节点和检测节点加以限制。
在本申请的一种可选实施例中,上述获取所述租约对应的租约时间的过程可以包括:接收租约;所述租约中携带有所述租约对应的租约时间;所述租约时间可以包括:租约到期时间、或者、租约生成时间。
在实际应用中,可以从检测节点接收租约,并依据租约携带的信息获取租约对应的租约时间。例如,租约中可以携带有所述租约对应的租约时间;又如,租约中可以携带有所述租约对应的租约生成时间和租约时长。
在本申请的一些实施例中,还可以依据租约携带的版本号确定对应的租约时间等,可以理解,本申请实施例对于获取所述租约对应的租约时间的具体过程不加以限制。
在本申请的一种可选实施例中,所述接收租约,具体可以包括:接收依据租约请求、或者续约请求返回的租约;其中,所述续约请求可以为在所述租约到期之前发送的请求。例如,被检测节点可以在设备启动后向检测节点发送租约请求,并接收检测节点依据所述租约请求返回的租约;进一步,被检测节点可以在所述租约到期之前向检测节点发送续约请求,并接收检测节点依据所述续约请求返回的租约。可以理解,上述在设备启动后向检测节点发送租约请求只是作为示例,实际上,本申请实施例对于租约请求的具体发送时机不加以限制。
在本申请的另一种可选实施例中,所述接收租约,具体可以包括:接收检测节点推送的租约。例如,在工作节点的租约到期之前,若主节点未收到对应的续约请求,则可以向工作节点发送新的租约,如果发送成功,则工作节点的租约可以得到续期,且对应的租约时间可以得到延长。
在步骤301获取所述租约对应的租约时间之后,步骤302可以依据步骤301得到的所述租约对应的租约时间,判断所述租约是否有效。相应的判断过程可以为,计算所述租约对应的租约到期时间与当前时间之间的差值,若该差值小于0,则判定所述租约失效,否则判定所述租约有效。其中,在计算所述租约对应的租约到期时间与当前时间之间的差值的过程中,所述租约对应的租约到期时间可以作为被减数,当前时间可以作为减数,可以理解,本申请实施例对于判断所述租约是否有效的具体过程不加以限制。
在步骤302得到判断结果为所述租约无效时,步骤303可以停止所述租约对应的租约任务。例如,若所述租约对应的租约任务由线程执行,则可以停止对该租约任务对应的线程;又如,若所述租约对应的租约任务由进程执行,则可以停止对该租约任务对应的进程。
综上,本申请实施例的集群系统的容灾方法,被检测节点在自身的租约无效时可以自动停止该租约对应的租约任务,这样,在因网络故障等原因导致被检测节点被误判为宕机的情况下,可以避免该租约对应的租约任务被该被检测节点及其他节点同时处理也即脑裂问题,进而可以提高集群系统的稳定性和可靠性。
在本申请的一种可选实施例中,检测节点可以判断被检测节点的租约是否有效,并在所述被检测节点的租约无效时,禁止所述被检测节点对于所述租约对应的租约任务的操作权限;这样,可以提高被检测节点的工作状态与检测节点对于被检测节点的宕机判断结果的一致性,提高集群系统的稳定性和可靠性。
在本申请的另一种可选实施例中,所述租约可以为检测节点发送的租约,所述检测节点针对所述租约记录的租约时长可以大于所述租约对应的实际租约时长。由于检测节点在判定被检测节点失效且寻找被检测节点的替代节点时,被检测节点的租约已经失效,因此能够进一步提高被检测节点的工作状态与检测节点对于被检测节点的宕机判断结果的一致性,提高集群系统的稳定性和可靠性。例如,假设某被检测节点的租约对应的实际租约时长为t,则检测节点针对该被检测节点的租约记录的租约时长可以为T,其中T>t,其中,T与t之间的差值可以基于被检测节点释放租约任务所需的时间确定。
为使本领域技术人员更好地理解本申请实施例,在此提供本申请的一种集群系统的容灾方法的应用示例。
应用示例1
应用示例1中,被检测节点可以为工作节点,检测节点可以为控制节点,参照图4,示出了本申请的一种集群系统的容灾方法应用示例1的流程图,具体可以包括:
步骤401、工作节点在启动后向控制节点发送租约请求;
步骤402、控制节点依据所述租约请求,向所述工作节点发送租约;
可选地,控制节点可以为集群系统中的主节点。所述租约中可以携带有租约对应的租约生成时间和租约时长。工作节点可以接收所述控制节点依据所述租约请求发送的租约。
步骤403、工作节点在自身的租约到期之前,向所述控制节点发送续约请求;
步骤404、控制节点依据所述续约请求,向所述工作节点发送租约;
所述租约中可以携带有租约对应的租约生成时间和租约时长。工作节点可以接收所述控制节点依据所述续约请求发送的租约。
步骤405、工作节点依据自身的租约对应的租约时间,判断自身的租约是否有效;
步骤406、若自身的租约无效,则工作节点停止自身的租约对应的租约任务;
步骤407、控制节点依据工作节点的租约对应的租约时间,判断所述工作节点的租约是否有效;
在实际应用中,控制节点可以针对工作节点保存对应的租约信息,可选地,可以保存工作节点与租约信息之间的映射关系。例如,可以保存工作节点的IP地址、租约时间和租约任务之间的映射关系,这样,可以依据该映射关系获取各工作节点的租约对应的租约时间。
步骤408、若所述工作节点的租约无效,则控制节点禁止所述工作节点对于所述租约对应的租约任务的操作权限。
综上,本申请实施例中,工作节点可以判断自身的租约是否有效,并在自身的租约无效时,停止自身的租约对应的租约任务;并且,控制节点可以判断工作节点的租约是否有效,并在所述工作节点的租约无效时,禁止所述工作节点对于所述租约对应的租约任务的操作权限;可见,本申请实施例可以通过工作节点和控制节点双方的租约失效判断,实现双向的宕机检测,因此能够提高被检测节点的工作状态与检测节点对于被检测节点的宕机判断结果的一致性,提高集群系统的稳定性和可靠性。
应用示例2
应用示例2中,被检测节点可以为控制节点的主节点,检测节点可以为管理节点。具体地,主节点可以判断自身的租约是否有效,并在自身的租约无效时,停止自身的租约对应的租约任务;因此能够有效避免双主节点引起的脑裂问题。
并且,管理节点针对主节点的租约记录的租约时长可以大于所述租约对应的实际租约时长,这样,可以使得管理节点在判定主节点失效且寻找新的主节点时,主节点的租约已经失效,因此可以进一步有效避免双主节点引起的脑裂问题。
对于应用示例2中管理节点与主节点的通信过程而言,由于其与应用示例1中控制节点与工作节点的通信过程类似,故在此不作赘述,相互参照即可。
应用示例3
应用示例3中,被检测节点可以为控制节点的备节点,检测节点可以为控制节点的主节点。具体地,备节点可以判断自身的租约是否有效,并在自身的租约无效时,停止自身的租约对应的租约任务;例如,此种情况下的租约任务可以包括:选举主节点的任务等,由于租约失效的备节点可以不参与主节点的选取,因此可以有效避免双主节点引起的脑裂问题。
对于应用示例3中主节点与备节点的通信过程而言,由于其与应用示例1中控制节点与工作节点的通信过程类似,故在此不作赘述,相互参照即可。
本申请实施例提供了一种数据处理方法。
参照图5,示出了本申请的一种数据处理方法实施例的流程图,具体可以包括如下步骤:
步骤501、获取主节点对应的备节点,其中,所述备节点可以包括主节点授予的租约;
步骤502、获取所述租约对应的租约时间;
步骤503、对所述主节点的分布式锁进行抢占。
本申请实施例中,主节点可以向备节点授予租约。可选地,主节点可以保存备节点对应的租约数据。可选地,上述租约数据可以包括:备节点与租约信息之间的映射关系。例如,可以保存备节点的IP地址、租约时间和租约任务之间的映射关系。其中,租约时间可用于表征租约的期限信息,由于在实际应用中向不同节点授予的租约的租约时长可以是相同的,因此,可以通过租约生成时间来表征上述租约时间,或者,可以通过租约到期时间来表征上述租约时间,或者,还可以通过租约的版本号来表征上述租约时间,可以理解,本申请实施例对于租约时间的具体表征方式不加以限制。
由于备节点可以对主节点的数据做备份处理,也即,备节点可以存储主节点的备份数据,由于该备份数据和主节点的数据可以一致,故该备节点也可以存储主节点和备节点对应的租约数据。例如,集群系统包括节点A、节点B和节点C等节点,假设节点A作为主节点正运行某服务,节点B和节点C作为备节点,则节点A可以向自身、节点B和节点C授予租约,并分别存储节点A、节点B、节点C对应的租约数据。由于节点B和节点C可以存储节点A的备份数据,故节点B和节点C也可以存储节点A、节点B、节点C对应的租约数据。因此,无论本节点为主节点或者备节点,均可以具备所述主节点和所述备节点的租约的获取能力。
分布式锁是控制分布式系统之间同步访问共享资源的一种方式,具体到本申请实施例,可以通过一个分布式锁实现主节点的唯一,具体地,抢到分布式锁的备节点可以切换为主节点。
在本申请的一种可选实施例中,上述步骤503对所述主节点的分布式锁进行抢占的过程,可以进一步包括:对所述备节点的租约对应的租约时间进行排序,得到排序结果;租约时间最长的备节点获得所述主节点的分布式锁。上述租约时间最长具体可以指:租约的期限最长、或者租约时间最晚。可以理解,上述该节点在所述排序结果中租约时间最晚只是作为备节点获得主节点的分布式锁的条件的示例,实际上,由于不同节点的租约对应的租约时间之间的不一致性可以有效避免分布式锁被两个或两个以上备节点抢占的问题,故租约有效的节点均具备获得主节点的分布式锁的权限。
在本申请的一种可选实施例中,上述步骤503对所述主节点的分布式锁进行抢占的过程,可以进一步包括:当所述主节点发生故障,或者所述主节点负载达到预设条件,对所述主节点的分布式锁进行抢占。其中,本领域技术人员可以根据实际应用需求,确定上述预设条件,例如,上述预设条件可以为:主节点负载超过负载阈值,其中,可以通过连接数量或者业务数量来表征上述主节点负载,这样,可以上述负载阈值可以与连接数量或者业务数量相关,可以理解,本申请实施例对于具体的主节点负载及其对应的预设条件不加以限制。
综上,本申请实施例的数据处理方法,主节点可以向备节点授予租约,租约对应的租约时间可用于表征租约对应的期限,例如,上述租约时间可以包括:租约到期时间、或者租约生成时间等;对于不同备节点的租约而言,租约生成时间不同和/或传输时间不同和/或不同节点的时钟不一致等因素、导致不同备节点的租约对应的租约时间存在不一致性,因此,可以将所述备节点的租约对应的租约时间作为对主节点的分布式锁进行抢占的依据,抢到分布式锁的节点可以切换为主节点,并在分布式锁的期限内提供服务;由于不同备节点的租约对应的租约时间之间的不一致性可以有效避免分布式锁被两个或两个以上备节点抢占的问题,因此可以提高集群系统的稳定性和可靠性。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些方框可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
本申请还提供了一种集群系统的容灾装置。
参照图6,示出了本申请的一种集群系统的容灾装置实施例的结构框图,所述集群系统可以包括:主节点和备节点,所述备节点可以对应有主节点授予的租约,所述装置具体可以包括如下模块:
获取模块601,用于获取所述备节点的租约对应的租约时间;
第一抢占模块602,用于依据所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;以及
第一角色处理模块603,用于若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。
可选地,所述装置还可以包括:
第二抢占模块,用于依据所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
第二角色处理模块,用于若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点,或者,若作为主节点的本节点抢占得到所述主节点的分布式锁,则保持主节点角色。
可选地,所述抢占模块602可以包括:
排序子模块,用于对所述备节点、或者所述主节点和所述备节点的租约对应的租约时间进行排序,得到排序结果;以及
锁获取子模块,用于若本节点在所述排序结果中租约时间最晚,则获得主节点的分布式锁。
可选地,所述装置还可以包括:第一判断模块,用于在所述抢占模块对主节点的分布式锁进行抢占之前,判断本节点的租约是否有效;
则所述抢占模块602可以包括:第一抢占子模块,用于当所述本节点的租约有效时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占。
可选地,所述抢占模块602可以包括:
目标节点获取子模块,用于从所述备节点、或者所述主节点和所述备节点中获取租约有效的目标节点;以及
第二抢占子模块,用于依据所述目标节点的租约对应的租约时间,对主节点的分布式锁进行抢占。
可选地,所述抢占模块602可以包括:第三抢占子模块,用于当符合预置条件时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;其中,所述预置条件可以包括:主节点发生宕机,和/或,主节点的分布式锁到期。
可选地,所述装置还可以包括:
第二判断模块,用于判断主节点的租约是否有效,若否,则判定所述主节点发生宕机;或者
第三判断模块,用于若在预设时间段之内未接收到主节点的心跳消息,则判定所述主节点发生宕机。
可选地,所述获取模块601可以包括:
第一获取子模块,用于从本节点存储的租约数据中获取所述主节点和所述备节点的租约;
第二获取子模块,用于依据所述备节点、或者所述主节点和备节点的租约,获取所述主节点和所述备节点的租约对应的租约时间。
可选地,所述装置还可以包括:第一发送模块,用于在所述主节点的分布式锁到期之前,发送延期请求,以通过所述延期请求延长所述分布式锁的到期时间。
可选地,所述装置还可以包括:第二发送模块,用于在本节点的租约到期之前,发送续约请求,以通过所述续约请求延长所述本节点的租约的租约时间。
对于图6所示装置实施例而言,由于其与图1和图2所示方法实施例基本相似,所以描述的比较简单,相关之处参见图1和图2所示方法实施例的部分说明即可。
综上,本申请实施例的集群系统的容灾装置,主节点可以向自身和/或备节点授予租约,且将所述主节点和所述备节点的租约对应的租约时间作为对主节点的分布式锁进行抢占的依据,抢到分布式锁的节点可以保持主节点角色、或者切换为主节点,并在分布式锁的期限内提供服务;对于不同节点(包括主节点和备节点)的租约而言,租约生成时间不同和/或传输时间不同和/或不同节点的时钟不一致等因素、导致不同节点的租约对应的租约时间存在不一致性,因此,该不一致性可以有效避免分布式锁被两个或两个以上节点抢占的问题,因此可以提高集群系统的稳定性和可靠性。
参照图7,示出了本申请的另一种集群系统的容灾装置实施例的结构框图,该装置可以应用于集群系统中被检测节点,所述被检测节点可以对应有租约,所述装置具体可以包括如下模块:
获取模块701,用于获取所述租约对应的租约时间;
判断模块702,用于依据所述租约对应的租约时间,判断所述租约是否有效;以及
任务停止模块703,用于若所述租约无效,则停止所述租约对应的租约任务。
可选地,所述被检测节点可以为工作节点、或者控制节点的主节点、或者控制节点的备节点。
可选地,所述租约可以为检测节点发送的租约,所述检测节点针对所述租约记录的租约时长可以大于所述租约对应的实际租约时长。
可选地,所述获取模块701可以包括:
接收子模块,用于接收租约;所述租约中携带有所述租约对应的租约时间;所述租约时间可以包括:租约到期时间、或者、租约生成时间。
可选地,所述接收子模块,可具体用于接收依据租约请求、或者续约请求返回的租约;其中,所述续约请求可以为在所述租约到期之前发送的请求。
综上,本申请实施例的集群系统的容灾装置,被检测节点在自身的租约无效时可以自动停止该租约对应的租约任务,这样,在因网络故障等原因导致被检测节点被误判为宕机的情况下,可以避免该租约对应的租约任务被该被检测节点及其他节点同时处理也即脑裂问题,进而可以提高集群系统的稳定性和可靠性。
本申请实施例的实施例可被实现为使用任意适当的硬件和/或软件进行想要的配置的系统或装置。图8示意性地示出了可被用于实现本申请中所述的各个实施例的示例性装置900。
对于一个实施例,图8示出了示例性装置900,该装置900可以包括:一个或多个处理器902、与处理器902中的至少一个耦合的系统控制模块(芯片组)904、与系统控制模块904耦合的系统存储器906、与系统控制模块904耦合的非易失性存储器(NVM)/存储装置908、与系统控制模块904耦合的一个或多个输入/输出设备910,以及与系统控制模块906耦合的网络接口912。该系统存储器906可以包括:指令962,该指令962可被一个或多个处理器902执行。
处理器902可包括一个或多个单核或多核处理器,处理器902可包括通用处理器或专用处理器(例如图形处理器、应用程序处理器、基带处理器等)的任意组合。在一些实施例中,装置900能够作为本申请实施例中所述的服务器、目标设备、无线设备等。
在一些实施例中,装置900可包括具有指令的一个或多个机器可读介质(例如,系统存储器906或NVM/存储装置908)以及与该一个或多个机器可读介质相合并被配置为执行指令、以实现前述装置包括的模块、从而执行本申请实施例中所述的动作的一个或多个处理器902。
一个实施例的系统控制模块904可包括任何适合的接口控制器,用于提供任何适合的接口给处理器902中的至少一个和/或与系统控制模块904通信的任意适合的装置或部件。
一个实施例的系统控制模块904可包括一个或多个存储器控制器,用于提供接口给系统存储器906。存储器控制器可以是硬件模块、软件模块和/或固件模块。
一个实施例的系统存储器906可被用于加载和存储数据和/或指令962。对于一个实施例,系统存储器906可包括任何适合的易失性存储器,例如,适合的DRAM(动态随机存取存储器)。在一些实施例中,系统存储器906可包括:双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
一个实施例的系统控制模块904可包括一个或多个输入/输出控制器,以向NVM/存储装置908及(一个或多个)输入/输出设备910提供接口。
一个实施例的NVM/存储装置908可被用于存储数据和/或指令982。NVM/存储装置908可包括任何适合的非易失性存储器(例如闪存等)和/或可包括任何适合的(一个或多个)非易失性存储设备,例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器等。
NVM/存储装置908可包括在物理上是装置900被安装在其上的装置的一部分的存储资源,或者其可被该装置访问而不必作为该装置的一部分。例如,NVM/存储装置908可经由网络接口912通过网络和/或通过输入/输出设备910进行访问。
一个实施例的(一个或多个)输入/输出设备910可为装置900提供接口以与任意其他适当的设备通信,输入/输出设备910可以包括通信组件、音频组件、传感器组件等。
一个实施例的网络接口912可为装置900提供接口以通过一个或多个网络和/或与任何其他适合的装置通信,装置900可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合进行无线通信。
对于一个实施例,处理器902中的至少一个可与系统控制模块904的一个或多个控制器(例如,存储器控制器)的逻辑封装在一起。对于一个实施例,处理器902中的至少一个可与系统控制模块904的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,处理器902中的至少一个可与系统控制模块904的一个或多个控制器的逻辑集成在同一新品上。对于一个实施例,处理器902中的至少一个可与系统控制模块904的一个或多个控制器的逻辑集成在同一芯片上以形成片上系统(SoC)。
在各个实施例中,装置900可以包括但不限于:台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)等计算设备。在各个实施例中,装置900可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,装置900可以包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在计算设备时,可以使得该计算设备执行本申请实施例中各方法的指令(instructions)。
在一个示例中提供了一种装置,包括:一个或多个处理器;和,其上存储的一个或多个机器可读介质中的指令,由所述一个或多个处理器执行时,使得所述装置执行如本申请实施例中的方法。
在一个示例中还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如本申请实施例中的方法。
一种集群系统的容灾方法,所述集群系统包括:主节点和备节点,所述备节点对应有所述主节点授予的租约,所述方法包括:
获取所述备节点的租约对应的租约时间;
依据所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。
可选地,所述主节点对应有自身授予的租约,所述方法还包括:
依据所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点,或者,若作为主节点的本节点抢占得到所述主节点的分布式锁,则保持主节点角色。
可选地,所述对主节点的分布式锁进行抢占,包括:
对所述备节点、或者所述主节点和所述备节点的租约对应的租约时间进行排序,得到排序结果;
若本节点在所述排序结果中租约时间最晚,则获得主节点的分布式锁。
可选地,在所述对主节点的分布式锁进行抢占之前,所述方法还包括:
判断本节点的租约是否有效;
则所述对分布式锁进行抢占,包括:当所述本节点的租约有效时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占。
可选地,所述对主节点的分布式锁进行抢占,包括:
从所述备节点中、或者所述主节点和所述备节点中获取租约有效的目标节点;
依据所述目标节点的租约对应的租约时间,对主节点的分布式锁进行抢占。
可选地,所述对分布式锁进行抢占,包括:
当符合预置条件时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
其中,所述预置条件包括:主节点发生宕机,和/或,主节点的分布式锁到期。
可选地,所述方法还包括:
判断主节点的租约是否有效,若否,则判定所述主节点发生宕机;或者
若在预设时间段之内未接收到主节点的心跳消息,则判定所述主节点发生宕机。
可选地,所述获取所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,包括:
从本节点存储的租约数据中获取所述备节点、或者所述主节点和所述备节点的租约,并依据所述备节点、或者所述主节点和备节点的租约,获取所述备节点、或者所述主节点和所述备节点的租约对应的租约时间。
可选地,所述方法还包括:
在所述主节点的分布式锁到期之前,发送延期请求,以通过所述延期请求延长所述分布式锁的到期时间。
可选地,所述方法还包括:
在本节点的租约到期之前,发送续约请求,以通过所述续约请求延长所述本节点的租约的租约时间。
一种集群系统的容灾方法,应用于集群系统中被检测节点,所述被检测节点对应有租约,所述方法包括:
获取所述租约对应的租约时间;
依据所述租约对应的租约时间,判断所述租约是否有效;
若所述租约无效,则停止所述租约对应的租约任务。
可选地,所述被检测节点为工作节点、或者控制节点的主节点、或者控制节点的备节点。
可选地,所述租约为检测节点发送的租约,所述检测节点针对所述租约记录的租约时长大于所述租约对应的实际租约时长。
可选地,所述获取所述租约对应的租约时间,包括:
接收租约;所述租约中携带有所述租约对应的租约时间;所述租约时间包括:租约到期时间、或者、租约生成时间。
可选地,所述接收租约,包括:
接收依据租约请求、或者续约请求返回的租约;其中,所述续约请求为在所述租约到期之前发送的请求。
一种数据处理方法,包括:
获取主节点对应的备节点,其中,所述备节点包括主节点授予的租约;
获取所述租约对应的租约时间;
对所述主节点的分布式锁进行抢占。
可选地,对所述主节点的分布式锁进行抢占,进一步包括:
对所述备节点的租约对应的租约时间进行排序,得到排序结果;
租约时间最长的备节点获得所述主节点的分布式锁。
可选地,对所述主节点的分布式锁进行抢占进一步包括:
当所述主节点发生故障,或者所述主节点负载达到预设条件,对所述主节点的分布式锁进行抢占。
以上对本申请所提供的一种集群系统的容灾方法、一种集群系统的容灾装置、一种装置、一个或多个机器可读介质、以及一种数据处理方法,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (24)

1.一种集群系统的容灾方法,其特征在于,所述集群系统包括:主节点和备节点,所述备节点对应有所述主节点授予的租约,所述方法包括:
获取所述备节点的租约对应的租约时间;所述租约对应的租约任务包括:选举主节点的任务;所述租约时间包括:租约到期时间、或者、租约生成时间;
依据所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。
2.根据权利要求1所述的方法,其特征在于,所述主节点对应有自身授予的租约,所述方法还包括:
依据所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点,或者,若作为主节点的本节点抢占得到所述主节点的分布式锁,则保持主节点角色。
3.根据权利要求1或2所述的方法,其特征在于,所述对主节点的分布式锁进行抢占,包括:
对所述备节点、或者所述主节点和所述备节点的租约对应的租约时间进行排序,得到排序结果;
若本节点在所述排序结果中租约时间最晚,则获得主节点的分布式锁。
4.根据权利要求1或2所述的方法,其特征在于,在所述对主节点的分布式锁进行抢占之前,所述方法还包括:
判断本节点的租约是否有效;
则所述对分布式锁进行抢占,包括:当所述本节点的租约有效时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占。
5.根据权利要求1或2所述的方法,其特征在于,所述对主节点的分布式锁进行抢占,包括:
从所述备节点中、或者所述主节点和所述备节点中获取租约有效的目标节点;
依据所述目标节点的租约对应的租约时间,对主节点的分布式锁进行抢占。
6.根据权利要求1或2所述的方法,其特征在于,所述对分布式锁进行抢占,包括:
当符合预置条件时,依据所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;
其中,所述预置条件包括:主节点发生宕机,和/或,主节点的分布式锁到期。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
判断主节点的租约是否有效,若否,则判定所述主节点发生宕机;或者
若在预设时间段之内未接收到主节点的心跳消息,则判定所述主节点发生宕机。
8.根据权利要求1或2所述的方法,其特征在于,所述获取所述备节点、或者所述主节点和所述备节点的租约对应的租约时间,包括:
从本节点存储的租约数据中获取所述备节点、或者所述主节点和所述备节点的租约,并依据所述备节点、或者所述主节点和备节点的租约,获取所述备节点、或者所述主节点和所述备节点的租约对应的租约时间。
9.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在所述主节点的分布式锁到期之前,发送延期请求,以通过所述延期请求延长所述分布式锁的到期时间。
10.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
在本节点的租约到期之前,发送续约请求,以通过所述续约请求延长所述本节点的租约的租约时间。
11.一种集群系统的容灾方法,其特征在于,应用于集群系统中被检测节点,所述被检测节点对应有租约,所述方法包括:
获取所述租约对应的租约时间;所述被检测节点为备节点,所述租约对应的租约任务包括:选举主节点的任务;
依据所述租约对应的租约时间,判断所述租约是否有效;所述租约时间包括:租约到期时间、或者、租约生成时间;
若所述租约无效,则停止所述租约对应的租约任务;
依据所述租约时间,对主节点的分布式锁进行抢占;
若抢占得到所述主节点的分布式锁,则切换为主节点。
12.根据权利要求11所述的方法,其特征在于,所述被检测节点为工作节点、或者控制节点的主节点、或者控制节点的备节点。
13.根据权利要求11所述的方法,其特征在于,所述租约为检测节点发送的租约,所述检测节点针对所述租约记录的租约时长大于所述租约对应的实际租约时长。
14.根据权利要求11至13中任一所述的方法,其特征在于,所述获取所述租约对应的租约时间,包括:
接收租约;所述租约中携带有所述租约对应的租约时间。
15.根据权利要求14所述的方法,其特征在于,所述接收租约,包括:
接收依据租约请求、或者续约请求返回的租约;其中,所述续约请求为在所述租约到期之前发送的请求。
16.一种集群系统的容灾装置,其特征在于,所述集群系统包括:主节点和备节点,所述备节点对应有所述主节点授予的租约,所述装置包括:
获取模块,用于获取所述备节点的租约对应的租约时间;所述租约对应的租约任务包括:选举主节点的任务;所述租约时间包括:租约到期时间、或者、租约生成时间;
抢占模块,用于依据所述备节点的租约对应的租约时间,对主节点的分布式锁进行抢占;以及
角色处理模块,用于若作为备节点的本节点抢占得到所述主节点的分布式锁,则切换为主节点。
17.一种集群系统的容灾装置,其特征在于,应用于集群系统中被检测节点,所述被检测节点对应有租约,所述装置包括:
获取模块,用于获取所述租约对应的租约时间;所述被检测节点为备节点,所述租约对应的租约任务包括:选举主节点的任务;所述租约时间包括:租约到期时间、或者、租约生成时间;
判断模块,用于依据所述租约对应的租约时间,判断所述租约是否有效;以及
任务停止模块,用于若所述租约无效,则停止所述租约对应的租约任务;
抢占模块,用于依据所述租约时间,对主节点的分布式锁进行抢占;
角色处理模块,用于若抢占得到所述主节点的分布式锁,则切换为主节点。
18.一种集群系统的容灾装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求1至10中一个或多个所述的方法。
19.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1至10中一个或多个所述的方法。
20.一种集群系统的容灾装置,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述装置执行如权利要求11至15中一个或多个所述的方法。
21.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求11至15中一个或多个所述的方法。
22.一种集群系统的容灾方法,其特征在于,包括:
获取主节点对应的备节点,其中,所述备节点包括主节点授予的租约;所述租约对应的租约任务包括:选举主节点的任务;租约时间包括:租约到期时间、或者、租约生成时间;
获取所述租约对应的租约时间;
依据所述租约时间,对所述主节点的分布式锁进行抢占。
23.根据权利要求22所述的方法,其特征在于,对所述主节点的分布式锁进行抢占,进一步包括:
对所述备节点的租约对应的租约时间进行排序,得到排序结果;
租约时间最长的备节点获得所述主节点的分布式锁。
24.根据权利要求22所述的方法,其特征在于,对所述主节点的分布式锁进行抢占进一步包括:
当所述主节点发生故障,或者所述主节点负载达到预设条件,对所述主节点的分布式锁进行抢占。
CN201710561504.4A 2017-07-11 2017-07-11 集群系统的容灾方法、装置和机器可读介质 Active CN109240840B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710561504.4A CN109240840B (zh) 2017-07-11 2017-07-11 集群系统的容灾方法、装置和机器可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710561504.4A CN109240840B (zh) 2017-07-11 2017-07-11 集群系统的容灾方法、装置和机器可读介质

Publications (2)

Publication Number Publication Date
CN109240840A CN109240840A (zh) 2019-01-18
CN109240840B true CN109240840B (zh) 2022-04-19

Family

ID=65083926

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710561504.4A Active CN109240840B (zh) 2017-07-11 2017-07-11 集群系统的容灾方法、装置和机器可读介质

Country Status (1)

Country Link
CN (1) CN109240840B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110535939B (zh) * 2019-08-29 2022-02-11 深圳前海环融联易信息科技服务有限公司 一种服务发现与抢占方法、装置、计算机设备及存储介质
CN110704185B (zh) * 2019-09-20 2024-03-22 深圳市递四方信息科技有限公司 集群系统分片定时任务调度方法及集群系统
CN111026807A (zh) * 2019-11-25 2020-04-17 深圳壹账通智能科技有限公司 分布式锁的同步方法、装置、计算机设备及可读存储介质
CN115088235B (zh) * 2020-03-17 2024-05-28 深圳市欢太科技有限公司 主节点选取方法、装置、电子设备以及存储介质
CN111339059A (zh) * 2020-03-25 2020-06-26 星辰天合(北京)数据科技有限公司 基于分布式存储系统Ceph的NAS存储系统
CN111611111B (zh) * 2020-05-22 2020-12-22 北京中科海讯数字科技股份有限公司 多处理器信号处理设备快速故障恢复方法及其系统
CN113904914A (zh) * 2020-12-31 2022-01-07 京东科技控股股份有限公司 一种服务切换方法、装置、系统和存储介质
CN114567540B (zh) * 2022-02-25 2023-07-21 北京百度网讯科技有限公司 主备节点切换方法、装置、设备、介质及程序产品
CN115373904B (zh) * 2022-10-24 2023-02-03 北京奥星贝斯科技有限公司 一种分布式系统中的租约动态延续方法、装置以及设备
CN116107814B (zh) * 2023-04-04 2023-09-22 阿里云计算有限公司 数据库容灾方法、设备、系统及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217477A (zh) * 2008-01-10 2008-07-09 杭州华三通信技术有限公司 实现vrrp备份组中dhcp租约平滑切换的方法、装置和路由器
CN103780615A (zh) * 2014-01-20 2014-05-07 五八同城信息技术有限公司 一种在多个服务器间客户端会话数据共享方法
EP3062489A1 (en) * 2015-02-25 2016-08-31 Deutsche Telekom AG DHCP using a distributed data structure

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8595546B2 (en) * 2011-10-28 2013-11-26 Zettaset, Inc. Split brain resistant failover in high availability clusters
CN103297396B (zh) * 2012-02-28 2016-05-18 国际商业机器公司 群集系统中管理故障转移的装置和方法
CN102831156B (zh) * 2012-06-29 2014-12-31 浙江大学 一种云计算平台上的分布式事务处理方法
JP6091376B2 (ja) * 2013-08-12 2017-03-08 日本電信電話株式会社 クラスタシステムおよびSplit−BrainSyndrome検出方法
CN103701770A (zh) * 2013-11-22 2014-04-02 汉柏科技有限公司 一种基于租约机制的异常解锁方法
CN106331046A (zh) * 2015-07-02 2017-01-11 中兴通讯股份有限公司 集群主节点选举方法及装置
CN105631023B (zh) * 2015-12-30 2019-03-26 华为技术有限公司 分布式锁服务的方法和装置
CN106302700B (zh) * 2016-08-11 2019-09-24 浪潮(北京)电子信息产业有限公司 基于paxos算法的分布式系统一致性更新方法及系统
CN106375342A (zh) * 2016-10-21 2017-02-01 用友网络科技股份有限公司 一种基于zookeeper技术的系统集群方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101217477A (zh) * 2008-01-10 2008-07-09 杭州华三通信技术有限公司 实现vrrp备份组中dhcp租约平滑切换的方法、装置和路由器
CN103780615A (zh) * 2014-01-20 2014-05-07 五八同城信息技术有限公司 一种在多个服务器间客户端会话数据共享方法
EP3062489A1 (en) * 2015-02-25 2016-08-31 Deutsche Telekom AG DHCP using a distributed data structure

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王嘉豪等.集群数据库系统的日志复制和故障恢复.《软件学报》.2016,第28卷(第03期),476-489页. *

Also Published As

Publication number Publication date
CN109240840A (zh) 2019-01-18

Similar Documents

Publication Publication Date Title
CN109240840B (zh) 集群系统的容灾方法、装置和机器可读介质
CN110622478B (zh) 数据同步处理的方法和装置
US10884623B2 (en) Method and apparatus for upgrading a distributed storage system
CN113297013A (zh) 设备切换方法、装置、电子设备和存储介质
EP3846419B1 (en) File resource processing method and apparatus, device and medium
US9210059B2 (en) Cluster system
US20150264184A1 (en) Conference terminal control system, conference terminal control device, and conference terminal control method
US9442784B2 (en) Management device, management method, and medium storing management program
CN115562911B (zh) 虚拟机数据备份方法及装置、系统、电子设备、存储介质
US9092396B2 (en) Standby system device, a control method, and a program thereof
JP6007988B2 (ja) 予備系装置、運用系装置、冗長構成システム、及び負荷分散方法
US20100205164A1 (en) Maintaining Data Integrity
CN107528703B (zh) 一种用于管理分布式系统中节点设备的方法与设备
CN109582626B (zh) 一种访问总线的方法、装置、设备及可读存储介质
CN103259863B (zh) 基于集群的控制zookeeper服务的系统及方法
CN116107814A (zh) 数据库容灾方法、设备、系统及存储介质
JP2017167675A (ja) 情報処理システム、情報処理方法、及びサーバ
CN113391759B (zh) 一种通信方法和设备
CN110839068B (zh) 业务请求处理方法、装置、电子设备及可读存储介质
CN112559258A (zh) 一种容灾处理方法、装置、系统、设备及介质
CN115037745B (zh) 一种在分布式系统中选举的方法及装置
US10489239B2 (en) Multiplexing system, multiplexing method, and computer program product
CN111208949A (zh) 一种确定分布式存储系统中的数据回滚时段的方法
CN114531394A (zh) 一种数据同步方法及装置
CN114489464A (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