CN114567540B - 主备节点切换方法、装置、设备、介质及程序产品 - Google Patents

主备节点切换方法、装置、设备、介质及程序产品 Download PDF

Info

Publication number
CN114567540B
CN114567540B CN202210179312.8A CN202210179312A CN114567540B CN 114567540 B CN114567540 B CN 114567540B CN 202210179312 A CN202210179312 A CN 202210179312A CN 114567540 B CN114567540 B CN 114567540B
Authority
CN
China
Prior art keywords
node
standby
distributed lock
current node
switching
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
CN202210179312.8A
Other languages
English (en)
Other versions
CN114567540A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202210179312.8A priority Critical patent/CN114567540B/zh
Publication of CN114567540A publication Critical patent/CN114567540A/zh
Application granted granted Critical
Publication of CN114567540B publication Critical patent/CN114567540B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0823Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
    • H04L41/0836Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability to enhance reliability, e.g. reduce downtime

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)

Abstract

本公开提供了主备节点切换方法、装置、设备、介质及程序产品,涉及计算机技术领域,尤其涉及网络通信领域。具体实现方案为:响应于接收到备机切主信号,获取分布式锁;在获取到分布式锁的情况下,将当前节点由备节点切换为主节点。本公开实施例的技术方案,可以在保证应用服务高可用的同时,满足业务任务全局唯一性的需求。

Description

主备节点切换方法、装置、设备、介质及程序产品
技术领域
本公开涉及计算机技术领域,尤其涉及网络通信领域,具体涉及一种主备节点切换方法、装置、设备、介质及程序产品。
背景技术
高可用性是衡量应用服务质量高低的重要标准,为了保证应用服务的高可用性,经常需要进行多实例部署。
在一些场景下业务任务具有全局唯一性要求。因此,同时考虑应用服务的高可用性以及任务的互斥性对于业务的正常处理十分重要。
发明内容
本公开提供了一种用于主备节点切换方法、装置、设备、介质及程序产品。
根据本公开的一方面,提供了一种主备节点切换方法,所述方法包括:
响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;
在获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点。
根据本公开的另一方面,提供了一种主备节点切换装置,所述装置包括:
分布式锁获取模块,用于响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;
第一主备切换模块,用于在获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点。
根据本公开的另一方面,提供了一种电子设备,包括:
至少一个处理器;以及
与至少一个处理器通信连接的存储器;其中,
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开任一实施例的主备节点切换方法。
根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开任一实施例的主备节点切换方法。
根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开任一实施例的主备节点切换方法。
本公开实施例可以在保证应用服务高可用的同时,满足业务任务全局唯一性的需求。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1a是根据本公开实施例提供的一种主备节点切换方法的示意图;
图1b是根据本公开实施例提供的获取分布式锁的示意图;
图1c是根据本公开实施例提供的节点框架的示意图;;
图2a是根据本公开实施例提供的另一种主备节点切换方法的示意图;
图2b是根据本公开实施例提供的主备节点切换流程图;
图3是根据本公开实施例提供的又一种主备节点切换方法的示意图;
图4是根据本公开实施例提供的一种主备节点切换装置的示意图;
图5是用来实现本公开实施例的主备节点切换方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1a是根据本公开实施例公开的一种主备节点切换方法的流程图,本实施例可以适用于通过分布式锁保证业务任务全局唯一性的情况。本实施例方法可以由主备节点切换装置来执行,该装置可采用软件和/或硬件的方式实现,并具体配置于具有一定数据运算能力的电子设备中,该电子设备可以是客户端设备或服务器设备,客户端设备例如手机、平板电脑、车载终端和台式电脑等。
S110、响应于接收到备机切主信号,获取分布式锁;备机切主信号用于将当前节点由备节点切换为主节点;分布式锁用于在当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作。
为了保证应用服务的高可用性,需要在多节点中部署应用实例,从而避免单点问题。在一些场景下,业务任务具有全局唯一性的要求,为避免任务重复执行,就要考虑任务的互斥性。对于此类应用服务,采用简单的多实例部署不能满足全局唯一性的需求,此时需要以一个主节点和多个备节点的方式进行节点部署。其中,主节点和备节点可以相互切换,只需要保证同一时刻应用服务中只包含一个主节点即可。例如,应用服务中包含节点1、节点2、节点3和节点4,在t1时刻,节点1是主节点,其他三个节点是备节点。在t2时刻,可以将节点1由主节点切换为备节点,并将节点2由备节点切换为主节点。
在以一个主节点和多个备节点的方式进行节点部署的情况下,仍可能出现任务重复执行的情况。例如,在作为主节点的节点1正在执行任务A的过程中,作为备节点的节点2接收到了备机切主信号切换为了主节点。此时,节点1中的任务A还未结束,节点2切换为主节点后也会执行任务A,此时,任务A出现重复执行的情况。
为避免上述任务重复执行的情况,本公开实施例中,在获取到备机切主信号后,需要先获取分布式锁,只有在获取到分布式锁的情况下,才能将当前节点切换为主节点。其中,分布式锁用于在当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作。也就是说,同一时刻,应用服务关联的多个节点中,只能有一个节点持有分布式锁,避免任务重复执行。
分布式锁可以用数据库表的形式来体现,具体的,数据库表可以包括应用服务标识(例如,应用服务名称)、应用服务关联的至少一个节点标识(例如,节点名称),以及各节点的节点状态。其中,节点状态包括主节点状态和备节点状态,其中,处于主节点状态的节点是持有分布式锁的节点。
如图1b所示,在接收到针对节点2的备机切主信号后,为避免任务重复执行,不会直接将节点2切换为主节点,而是先要获取分布式锁。但此时节点1还没有释放分布式锁,节点2需要等待节点1切换为备节点并释放分布式锁后,才能获取分布式锁,进而在节点2获取分布式锁的基础上,将节点2由备节点切换为主节点。避免了在节点1还未停止执行主节点任务时,节点2已经切换为主节点并开始执行主节点任务的情况,保证了任务的全局唯一性。
其中,节点2获取分布式锁的具体过程为:获取应用服务关联的至少一个节点的节点状态;在应用服务关联的至少一个节点的节点状态均为备节点状态时,表明当前没有其他节点占用分布式锁,此时可以将节点2由备节点状态修改为主节点状态,即节点2获取到了分布式锁。
S120、在获取到分布式锁的情况下,将当前节点由备节点切换为主节点。
本公开实施例中,在获取到分布式锁后,可以将当前节点由备节点切换为主节点。具体的,通过调用当前节点中预先封装的备机切主接口,将当前节点由备节点切换为主节点。其中,备机切主接口是预先封装的用于将当前节点从备节点切换至主节点的接口。
本公开实施例的技术方案,响应于接收到备机切主信号,获取分布式锁,并在当前节点获取到分布式锁的情况下,将当前节点由备节点切换为主节点,可以在保证应用服务高可用的同时,避免任务的重复执行,满足业务任务全局唯一性的需求。
可选的,响应于接收到备机切主信号,获取分布式锁,包括:
响应于当前节点的中间件客户端接收到备机切主信号,当前节点的中间件客户端获取所述分布式锁;或者,
响应于监控器接收到备机切主信号,监控器获取所述分布式锁。
本可选的实施例中,提供了两种响应于接收到备机切主信号,获取分布式锁的具体方式:
第一种方式为,当前节点中的中间件客户端接收到备机切主信号后,由中间件客户端通过在数据库中修改当前节点的节点状态,获取分布式锁,进一步的,在获取到分布式锁的基础上,可以由中间件客户端调用当前节点中封装的备机切主接口,将当前节点由备节点切换为主节点。示例性的,当前节点中的中间件客户端接收到中间件服务端发送的备机切主信号后,通过修改当前节点的节点状态获取分布式锁。
第二种方式为,在监控器接收到备机切主信号后,监控器在数据库中对当前节点的状态进行修改,从而获取分布式锁,进一步的,在获取到分布式锁的基础上,监控器调用当前节点中封装的备机切主接口,将当前节点由备节点切换为主节点。示例性的,监控器在接收到当前节点中的中间件客户端发送的备机切主信号后,由监控器获取分布式锁。
可选的,响应于监控器接收到备机切主信号,监控器获取分布式锁,包括:响应于监控器接收到当前节点的中间件客户端发送的备机切主信号,监控器获取分布式锁。
本可选的实施例中,提供一种响应于监控器接收到备机切主信号,监控器获取分布式锁的具体方式:当前节点中的中间件客户端接收到中间件服务端发送的备机切主信号后,将备机切主信号转发至监控器。监控器在接收到当前节点的中间件客户端发送的备机切主信号后,在数据库中修改当前节点的节点状态,获取分布式锁。其中,监控器可以部署于当前节点,也可以部署于除当前节点外的其他节点中。可选的,监控器可以是一个独立的节点,用于适应性地获取其他各个节点的分布式锁。例如,每个节点面临切换需求时,均向该监控器发送信息,以生成对应该节点的分布式锁。
可选的,当前节点包括监控器。
本可选的实施例中,当前节点同时包括中间件客户端和监控器。具体的,当前节点中的中间件客户端接收到中间件服务端发送的备机切主信号后,将备机切主信号发送至当前节点的监控器,用于指示监控器将当前节点由备节点切换为主节点。具体的,中间件客户端在接收到备机切主信号后,启动主事件线程,通过信号站向监控器发送备机切主信号。其中,中间件服务端具有主备仲裁功能,可以根据提供应用服务的各节点的状态进行主备节点切换。
在一个具体的例子中,具备主备仲裁功能的中间件服务端检测到应服务中当前作为主节点工作的节点1发生故障,此时需要将当前作为备节点的节点2切换为主节点,因此,中间件服务端向节点2中集成的中间件客户端发送备机切主信号。节点2中的中间件客户端在收到备机切主信号后,通过信号站向该节点中的监控器发送备机切主信号,用来指示监控器将当前节点2由备节点切换为主节点。
为便于理解,对本可选的实施例中当前节点的框架进行说明。当前节点的框架如图1c所示,当前节点包括三个层级,由下至上依次为底层适配层、框架核心层以及用户接口层。其中,底层适配层主要集成了中间件客户端,例如,分布式应用程序协调服务软件(Zoo-keeper)客户端、MQ(Message Queue,消息队列)客户端或者交换机制软件和高可用代理软件(Keepalived+haproxy)客户端等。核心框架层集成了用于进行主备事件管理的监控器,以及用于进行主备事件传输的信号站,其中,监控器通过分布式同步策略进行主备事件管理,具体的,可以在接收到备机切主信号时,将当前节点由备节点切换为主节点,同样,在接收到主机切备信号时,将当前节点由主节点切换为备节点。用户接口层用于实现应用服务的至少一种功能,并且用户接口层包含预先适配的用户接口,例如,主机切备接口或者备机切主接口,监控器通过调用上述用户接口来对当前节点的主备状态进行切换,例如,监控器通过调用用户接口层的主机切备接口,将当前节点由主节点切换为备节点,或者通过调用用户接口层的备机切主接口,将当前节点由备节点切换为主节点。
图2a是本公开实施例中的一种主备节点切换方法的示意图,在上述实施例的基础上进一步细化,提供了响应于接收到备机切主信号,获取分布式锁的具体步骤。下面结合图2a对本公开实施例提供的一种主备节点切换方法进行说明,包括以下:
S210、响应于接收到备机切主信号,获取当前节点的内存级锁;内存级锁用于阻塞当前节点中除获取到内存级锁的线程外,其他线程获取内存级锁的操作。
本公开实施例中,针对图1c中同时包含中间件客户端和监控器的当前节点,对主备节点切换过程进行展开说明,节点的主备切换流程如图2b所示,中间件客户端接收到中间件服务端发送的备机切主信号后,启动主事件线程t1,获取节点的内存级锁,进一步的,在信号站中将节点状态的标志位设置为真(标志位为真表示需要发送的是备机切主信号),进而通过信号站将备机切主信号发送至监控器。
在网络抖动的情况下,进行主备仲裁的中间件服务端可能出现同时向当前节点发送主机切备信号和备机切主信号的情况。此时会出现当前节点内同时运行两个线程,分别执行将当前节点由主节点切换为备节点的操作和以及将当前节点由备节点切换为主节点的操作,造成任务冲突,甚至会发生死锁现象。
本公开实施例中,为了避免网络抖动造成的任务冲突,当前节点中的监控器接收到中间件客户端发送的备机切主信号后,首先需要获取当前节点的内存级锁,避免当前节点的多个线程同时执行相同或者相互冲突操作。其中,内存级锁用于阻塞当前节点中除获取到内存级锁的线程外,其他线程获取内存级锁的操作。也就是说,在同一时刻,在节点中只能有一个线程执行节点状态切换的操作。
通过上述方式,在出现网络抖动的情况下,监控器同时接收到主机切备信号以及备机切主信号时,只有一个任务会获取到内存级锁,不会出现两个线程同时执行节点状态切换操作,保证节点运行的稳定性。
可选的,响应于接收到备机切主信号,取当前节点的内存级锁,包括:
响应于第一等待线程接收到备机切主信号,第一等待线程被激活,以获取到当前节点的内存级锁;其中,第一等待线程用于等待接收备机切主信号。
本可选的实施例中,提供一种获取当前节点的内存级锁的具体方式:在节点处于备节点状态时,该节点的监控器中运行第一等待线程。在监控器中运行的第一等待线程接收到中间件客户端发送的备机切主信号时,第一等待线程被激活,此时监控器可以获取到内存级锁。在监控器获取到内存级锁后,确定当前节点满足备机切主条件,此时可以在获取到内存级锁的基础上,继续执行节点的状态切换操作。
监控器在接收到备机切主信号时,通过获取内存级锁,可以保证同一时刻只有一个任务获取到内存级锁,避免因网络抖动造成的任务冲突。另外,在节点处于备节点状态时,该节点中的监控器运行第一等待线程,用于等待接收备机切主信号。监控器中的第一等待线程接收到备机切主信号后立即被激活,进而执行获取内存级锁以及将当前节点切换为主节点的操作,提高了节点状态切换的实时性。同理,在节点处于主节点状态时,当前节点中的监控器运行第二等待线程,用于等待接收主机切备信号。第二等待线程接收到主机切备信号后立即被激活,进而执行获取内存级锁以及将当前节点切换为备节点的操作。相较于现有的将当前节点由备节点切换为主节点后直接与中间件服务端断联并重启的方式,本公开实施例的主备节点切换方式只需要当前节点在进行主备切换时暂停业务任务,不会对当前节点的系统或当前节点所在容器层状态造成影响,提高主备节点切换实时性。
S220、在获取到内存级锁的情况下,获取当前节点所属应用服务关联的至少一个节点的节点状态;节点状态包括主节点状态和备节点状态,其中,处于主节点状态的节点是持有分布式锁的节点。
在监控器获取当前节点的内存级锁的基础上,从数据库中获取应用服务关联的至少一个节点的节点状态,以根据节点状态确定当前节点是否能获取到分布式锁。具体的,监控器通过当前节点所属应用服务的标识,在数据库中查找与当前应用服务关联的至少一个节点,并获取各节点对应的节点状态,只有在应用服务关联的所有节点均处于备节点状态时,当前节点才能够获取分布式锁。
在一个具体的例子中,监控器通过当前节点所属应用服务的名称,在数据库中查找与该应用服务关联的10个节点,进一步的,在数据库中读取这10个节点的状态。例如,10个节点当前的状态均为“Slave”,即均处于备节点状态。
S230、在至少一个节点的节点状态均为备节点状态的情况下,将当前节点的节点状态更新为主节点状态,以获取到分布式锁。
本公开实施例中,在监控器读取到应用服务关联的至少一个节点的节点状态均为备节点状态的情况下,可以在数据库中将当前节点的节点状态更新为主节点状态,至此当前节点获取到分布式锁。在获取到分布式锁的基础上,继续执行将当前节点切换为主节点的操作,可以避免任务的重复执行,保证业务任务的全局唯一性。
S240、在获取到分布式锁的情况下,将当前节点由备节点切换为主节点。
本公开实施例中,在当前节点的监控器获取到分布式锁后,监控器可以将当前节点由备节点切换为主节点。具体的,监控器通过调用该节点中用户层的备机切主接口,将当前节点由备节点切换为主节点。其中,备机切主接口是预先封装的用于将节点从备节点切换至主节点的接口。
相较于用户接口层直接使用中间件提供的接口来实现主备节点切换的方式,本实施例中通过监控器调用用户接口层预先封装的备机切主接口进行备机切主的方式,可以将中间件客户端和用户接口层进行解耦,即用户接口层无需关注当前使用的中间件类型,只需要更换节点框架中集成中间件客户端即可实现中间件类型的切换,提高了系统架构的可扩展性。
本公开实施例的技术方案,当前节点中的监控器响应于接收到备机切主信号,获取当前节点的内存级锁,进而获取当前节点所属应用服务关联的至少一个节点的节点状态。在至少一个节点的节点状态均为备节点状态的情况下,将当前节点的节点状态更新为主节点状态,以获取到分布式锁,最终在当前节点获取到分布式锁的情况下,将当前节点由备节点切换为主节点,在保证应用服务的高可用性同时,满足业务任务全局唯一性的需求。
图3是本公开实施例中的一种主备节点切换方法的示意图,在上述实施例的基础上进一步细化,提供了将当前节点由主节点切换为备节点的具体步骤。下面结合图3对本公开实施例提供的一种主备节点切换方法进行说明,包括以下:
S310、响应于接收到备机切主信号,获取分布式锁;备机切主信号用于将当前节点由备节点切换为主节点;分布式锁用于在当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作。
S320、在获取到所述分布式锁的情况下,将当前节点由备节点切换为主节点。
S330、将工作线程调整至第二等待线程;第二等待线程用于等待接收主机切备信号;主机切备信号用于将当前节点由主节点切换为备节点。
本公开实施例中,将当前节点切换为主节点后,需要将工作线程调整至第二等待线程,用于等待主机切备信号。在后续过程中,第二等待线程若接收到主机切备信号,可以马上被激活,并去执行获取内存级锁以及将当前节点切换备节点的操作,提高节点切换的实时性和流畅性。交替运行第一等待线程和第二等待线程,可以提高主备节点切换的实时性。
在一个具体的例子中,在中间件客户端将当前节点切换为主节点后,可以将当前节点的中间件客户端的工作线程调整至第二等待线程,用于等待中间件服务端发送的主机切备信号。中间件客户端的第二等待线程接收到主机切备信号后被激活,并去执行获获取内存级锁以及将当前节点切换备节点的操作。
在另一个具体的例子中,在监控器将当前节点切换为主节点后,将监控器的工作线程调整至第二等待线程。当前节点的中间件客户端在接收到中间件服务端发送的主机切备信号后,将该主机切备信号转发至监控器。监控器的第二等待线程接收到中间件客户端发送的主机切备信号后被激活,进而执行获获取内存级锁以及将当前节点切换备节点的操作。其中,监控器可以部署于当前节点,也可以部署于除当前节点外的其他节点中
S340、响应于接收到主机切备信号,将当前节点由主节点切换为备节点。
本公开实施例中,在当前节点为主节点时,在第二等待线程接收到主机切备信号后,立即被激活,进而执行获取当前节点的内存级以及将当前节点切换为备节点的操作。具体的,通过调用当前节点中用户接口层的主机切备接口,将当前节点由主节点切换为备节点。其中,主机切备接口是预先封装的用于将节点从主节点切换至备节点的接口。
在一个具体的例子中,当前节点的中间件客户端的第二等待线程接收到主机切备信号后被激活,进而由中间件客户端执行获取当前节点的内存级以及将当前节点切换为备节点的操作。
在另一个具体的例子中,在应用服务中,节点2当前作为主节点提供应用服务,具备主备仲裁功能的中间件服务端向节点2中集成的中间件客户端发送主机切备信号。节点2中的中间件客户端在收到主机切备信号后,通过信号站向节点2中的监控器发送主机切备信号,用来指示监控器将节点2切换为备节点。监控器通过调用用户接口层的主机切备接口,将节点2由主节点切换为备节点。
相较于用户接口层直接通过中间件提供的接口来接收主机切备信号的方式,本实施例中通过监控器调用用户接口层预先封装的主机切备接口进行主机切备的方式,可以将中间件客户端和用户接口层进行解耦,即用户接口层无需关注当前使用的中间件类型,只需要更换节点框架中集成中间件客户端即可实现中间件类型的切换,提高了系统架构的可扩展性。
S350、释放分布式锁。
在将当前节点切换为备节点后,为了使需要切换至主节点的其他节点能够持有分布式锁,需要释放分布式锁。示例性的,通过将数据库中当前节点的状态切换为备节点状态,实现分布式锁的释放。
可选的,释放分布式锁,包括:
将当前节点的节点状态更新为备节点状态,以释放分布式锁。
本可选的实施例中,提供一种释放分布式锁的方式:将数据库中当前节点的节点状态更新为备节点状态。需要作为新的主节点提供应用服务的节点,只有在当前节点释放分布式锁之后,才能获取分布式锁,并在获取分布式锁的基础上,切换为主节点,避免主节点任务重复执行。
可选的,与备节点切换至主节点相同,将主节点切换为备节点后,需要进一步将工作线程调整至第一等待线程,用于等待再次接收备机切主信号,提高主备节点切换时效性。
本公开实施例的技术方案,通过获取到主机切备信号,调用用户层的主机切备接口,将当前节点由主节点切换为备节点,最终释放分布式锁,可以在保证应用服务高可用的同时,避免任务的重复执行,满足业务任务全局唯一性的需求。
根据本公开的实施例,图4是本公开实施例中的主备节点切换装置的结构图,本公开实施例适用于通过分布式锁保证业务任务全局唯一性的情况。该装置采用软件和/或硬件实现,并具体配置于具备一定数据运算能力的电子设备中。
如图4所示的一种主备节点切换装置400,包括:分布式锁获取模块410和第一主备切换模块420;其中,
分布式锁获取模块410,用于响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;
第一主备切换模块420,用于在所述获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点。
本公开实施例的技术方案,响应于接收到备机切主信号,获取分布式锁,并在获取到分布式锁的情况下,将当前节点由备节点切换为主节点,可以在保证应用服务高可用的同时,避免任务的重复执行,满足业务任务全局唯一性的需求。
进一步的,分布式锁获取模块,包括:
第一获取单元,用于响应于当前节点的中间件客户端接收到备机切主信号,当前节点的中间件客户端获取所述分布式锁;或者,
第二获取单元,用于响应于监控器接收到备机切主信号,所述监控器获取所述分布式锁。
进一步的,第二获取单元,具体用于:
响应于监控器接收到当前节点的中间件客户端发送的备机切主信号,所述监控器获取所述分布式锁。
进一步的,当前节点包括所述监控器。
进一步的,分布式锁获取模块410,包括:
内存级锁获取单元,用于响应于接收到备机切主信号,获取当前节点的内存级锁;所述内存级锁用于阻塞当前节点中除获取到内存级锁的线程外,其他线程获取内存级锁的操作;
节点状态获取单元,用于在获取到内存级锁的情况下,获取当前节点所属应用服务关联的至少一个节点的节点状态;节点状态包括主节点状态和备节点状态,其中,处于主节点状态的节点是持有分布式锁的节点;
分布式锁获取单元,用于在所述至少一个节点的节点状态均为备节点状态的情况下,将当前节点的节点状态更新为主节点状态,以获取到分布式锁。
进一步的,内存级锁获取单元,具体用于:
响应于第一等待线程接收到备机切主信号,所述第一等待线程被激活,以获取到所述当前节点的内存级锁;
其中,所述第一等待线程用于等待接收备机切主信号。
进一步的,主备节点切换装置400,还包括:
工作线程调整模块,用于在将所述当前节点由备节点切换为主节点之后,将工作线程调整至第二等待线程;第二等待线程用于等待接收主机切备信号;所述主机切备信号用于将当前节点由主节点切换为备节点。
进一步的,主备节点切换装置400,还包括:
第二主备切换模块,用于响应于接收到主机切备信号,将当前节点由主节点切换为备节点;
分布式锁释放模块,用于释放分布式锁。
进一步的,分布式锁释放模块,具体用于:
将当前节点的节点状态更新为备节点状态,以释放分布式锁。
本公开实施例所提供的主备节点切换装置可执行本公开任意实施例所提供的主备节点切换方法,具备执行方法相应的功能模块和有益效果。
本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供和公开等处理,均符合相关法律法规的规定,且不违背公序良俗。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图5示出了可以用来实施本公开的实施例的示例电子设备500的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图5所示,设备500包括计算单元501,其可以根据存储在只读存储器(ROM)502中的计算机程序或者从存储单元508加载到随机访问存储器(RAM)503中的计算机程序,来执行各种适当的动作和处理。在RAM 503中,还可存储设备500操作所需的各种程序和数据。计算单元501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
设备500中的多个部件连接至I/O接口505,包括:输入单元506,例如键盘、鼠标等;输出单元507,例如各种类型的显示器、扬声器等;存储单元508,例如磁盘、光盘等;以及通信单元509,例如网卡、调制解调器、无线通信收发机等。通信单元509允许设备500通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元501可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元501的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元501执行上文所描述的各个方法和处理,例如主备节点切换方法。例如,在一些实施例中,主备节点切换方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元508。在一些实施例中,计算机程序的部分或者全部可以经由ROM 502和/或通信单元509而被载入和/或安装到设备500上。当计算机程序加载到RAM 503并由计算单元501执行时,可以执行上文描述的主备节点切换方法的一个或多个步骤。备选地,在其他实施例中,计算单元501可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行主备节点切换方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (18)

1.一种主备节点切换方法,包括:
响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;
在获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点;
其中,所述响应于接收到备机切主信号,获取分布式锁,包括:
响应于接收到备机切主信号,获取所述当前节点的内存级锁;所述内存级锁用于阻塞当前节点中除获取到内存级锁的线程外,其他线程获取内存级锁的操作;
在获取到所述内存级锁的情况下,获取当前节点所属应用服务关联的至少一个节点的节点状态;所述节点状态包括主节点状态和备节点状态,其中,处于主节点状态的节点是持有分布式锁的节点;
在所述至少一个节点的节点状态均为备节点状态的情况下,将所述当前节点的节点状态更新为主节点状态,以获取到所述分布式锁。
2.根据权利要求1所述的方法,其中,所述响应于接收到备机切主信号,获取分布式锁,包括:
响应于当前节点的中间件客户端接收到备机切主信号,当前节点的中间件客户端获取所述分布式锁;或者,
响应于监控器接收到备机切主信号,监控器获取所述分布式锁。
3.根据权利要求2所述的方法,其中,所述响应于监控器接收到备机切主信号,监控器获取所述分布式锁,包括:
响应于监控器接收到当前节点的中间件客户端发送的备机切主信号,所述监控器获取所述分布式锁。
4.根据权利要求3所述的方法,其中,所述当前节点包括所述监控器。
5.根据权利要求1所述的方法,其中,所述响应于接收到备机切主信号,获取所述当前节点的内存级锁,包括:
响应于第一等待线程接收到备机切主信号,所述第一等待线程被激活,以获取到所述当前节点的内存级锁;
其中,所述第一等待线程用于等待接收备机切主信号。
6.根据权利要求1-4中任一所述的方法,在将所述当前节点由备节点切换为主节点之后,还包括:
将工作线程调整至第二等待线程;所述第二等待线程用于等待接收主机切备信号;所述主机切备信号用于将当前节点由主节点切换为备节点。
7.根据权利要求6所述的方法,还包括:
响应于接收到主机切备信号,将当前节点由主节点切换为备节点;
释放所述分布式锁。
8.根据权利要求7所述的方法,其中,所述释放所述分布式锁,包括:
将所述当前节点的节点状态更新为备节点状态,以释放所述分布式锁。
9.一种主备节点切换装置,包括:
分布式锁获取模块,用于响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;
第一主备切换模块,用于在所述当前节点获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点;
其中,所述分布式锁获取模块,包括:
内存级锁获取单元,用于响应于接收到备机切主信号,获取所述当前节点的内存级锁;所述内存级锁用于阻塞当前节点中除获取到内存级锁的线程外,其他线程获取内存级锁的操作;
节点状态获取单元,用于在获取到所述内存级锁的情况下,获取当前节点所属应用服务关联的至少一个节点的节点状态;所述节点状态包括主节点状态和备节点状态,其中,处于主节点状态的节点是持有分布式锁的节点;
分布式锁获取单元,用于在所述至少一个节点的节点状态均为备节点状态的情况下,将所述当前节点的节点状态更新为主节点状态,以获取到所述分布式锁。
10.根据权利要求9所述的装置,其中,所述分布式锁获取模块,包括:
第一获取单元,用于响应于当前节点的中间件客户端接收到备机切主信号,当前节点的中间件客户端获取所述分布式锁;或者,
第二获取单元,用于响应于监控器接收到备机切主信号,所述监控器获取所述分布式锁。
11.根据权利要求10所述的装置,其中,所述第二获取单元,具体用于:
响应于监控器接收到当前节点的中间件客户端发送的备机切主信号,所述监控器获取所述分布式锁。
12.根据权利要求11所述的装置,其中,所述当前节点包括所述监控器。
13.根据权利要求9所述的装置,其中,所述内存级锁获取单元,具体用于:
响应于第一等待线程接收到备机切主信号,所述第一等待线程被激活,以获取到所述当前节点的内存级锁;
其中,所述第一等待线程用于等待接收备机切主信号。
14.根据权利要求9-12中任一所述的装置,还包括:
工作线程调整模块,用于在将所述当前节点由备节点切换为主节点之后,将工作线程调整至第二等待线程;所述第二等待线程用于等待接收主机切备信号;所述主机切备信号用于将当前节点由主节点切换为备节点。
15.根据权利要求14所述的装置,还包括:
第二主备切换模块,用于响应于接收到主机切备信号,将当前节点由主节点切换为备节点;
分布式锁释放模块,用于释放所述分布式锁。
16.根据权利要求15所述的装置,其中,所述分布式锁释放模块,具体用于:
将所述当前节点的节点状态更新为备节点状态,以释放所述分布式锁。
17.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-8中任一项所述的主备节点切换方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-8中任一项所述的主备节点切换方法。
CN202210179312.8A 2022-02-25 2022-02-25 主备节点切换方法、装置、设备、介质及程序产品 Active CN114567540B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210179312.8A CN114567540B (zh) 2022-02-25 2022-02-25 主备节点切换方法、装置、设备、介质及程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210179312.8A CN114567540B (zh) 2022-02-25 2022-02-25 主备节点切换方法、装置、设备、介质及程序产品

Publications (2)

Publication Number Publication Date
CN114567540A CN114567540A (zh) 2022-05-31
CN114567540B true CN114567540B (zh) 2023-07-21

Family

ID=81716268

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210179312.8A Active CN114567540B (zh) 2022-02-25 2022-02-25 主备节点切换方法、装置、设备、介质及程序产品

Country Status (1)

Country Link
CN (1) CN114567540B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099962A (zh) * 2020-11-06 2020-12-18 成都新希望金融信息有限公司 分布式锁实现方法、装置和电子设备
CN112839099A (zh) * 2021-01-29 2021-05-25 苏州浪潮智能科技有限公司 一种分布式字节锁检测控制的方法和设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104954411A (zh) * 2014-03-31 2015-09-30 腾讯科技(深圳)有限公司 分布式系统共享网络资源的方法、终端及系统
CN107783842B (zh) * 2016-08-31 2021-09-03 阿里巴巴集团控股有限公司 一种分布式锁实现方法、设备及存储装置
CN109240840B (zh) * 2017-07-11 2022-04-19 阿里巴巴集团控股有限公司 集群系统的容灾方法、装置和机器可读介质
CN110557416B (zh) * 2018-05-31 2022-02-18 本无链科技(深圳)有限公司 一种多节点协同打块的方法及系统
CN111026807A (zh) * 2019-11-25 2020-04-17 深圳壹账通智能科技有限公司 分布式锁的同步方法、装置、计算机设备及可读存储介质
CN110971700B (zh) * 2019-12-10 2023-07-21 腾讯云计算(北京)有限责任公司 分布式锁的实现方法及装置
CN112463419B (zh) * 2021-01-26 2021-05-07 北京轻松筹信息技术有限公司 基于中间件的主备节点工作方法及装置、电子设备
CN113660350A (zh) * 2021-10-18 2021-11-16 恒生电子股份有限公司 分布式锁协调方法、装置、设备及存储介质

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112099962A (zh) * 2020-11-06 2020-12-18 成都新希望金融信息有限公司 分布式锁实现方法、装置和电子设备
CN112839099A (zh) * 2021-01-29 2021-05-25 苏州浪潮智能科技有限公司 一种分布式字节锁检测控制的方法和设备

Also Published As

Publication number Publication date
CN114567540A (zh) 2022-05-31

Similar Documents

Publication Publication Date Title
CN112860342B (zh) 微服务配置的方法、装置、设备、系统以及存储介质
EP3817338B1 (en) Method and apparatus for acquiring rpc member information, electronic device and storage medium
EP3846419A2 (en) File resource processing method and apparatus, device and medium
CN111181765A (zh) 一种任务处理方法和装置
CN113742075B (zh) 基于云端分布式系统的任务处理方法、装置及系统
CN107818027B (zh) 名字节点主备切换的方法、装置和分布式系统
CN114567540B (zh) 主备节点切换方法、装置、设备、介质及程序产品
CN111274047A (zh) 信息处理方法、终端、系统、计算机设备和存储介质
WO2023229531A2 (en) Data transmission method and apparatus, terminal, and storage medium
CN114567536B (zh) 异常数据处理方法、装置、电子设备和存储介质
CN115801687A (zh) 一种流量均衡方法、装置、电子设备和存储介质
CN113420275A (zh) 数据连接处理方法、相关装置及计算机程序产品
CN113660339B (zh) 用于去中心化集群的方法和装置
CN113992690B (zh) 消息传递方法、装置、设备和存储介质
CN112596922B (zh) 通信管理方法、装置、设备和介质
CN117520362B (zh) 一种基于分布式锁的数据管理系统、方法、设备及存储介质
CN114979037B (zh) 一种组播方法、装置、交换机和存储介质
WO2022160304A1 (zh) 多用户识别卡特性信息的交互方法、装置及通信设备
CN114513524B (zh) 一种资源同步方法、装置、电子设备和存储介质
CN114598743A (zh) 一种服务发现方法、装置、电子设备及存储介质
CN116346933A (zh) 边缘网络节点的数据处理方法、装置及边缘网络节点
CN117615007A (zh) 一种内外网通讯方法、装置、设备和介质
CN117149464A (zh) 一种分布式架构下的消息同步方法、装置、系统和介质
CN116614357A (zh) 配置信息发布方法、装置、电子设备及存储介质
CN118484497A (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