主备节点切换方法、装置、设备、介质及程序产品制造方法及图纸

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

【技术实现步骤摘要】
主备节点切换方法、装置、设备、介质及程序产品


[0001]本公开涉及计算机
,尤其涉及网络通信领域,具体涉及一种主备节点切换方法、装置、设备、介质及程序产品。

技术介绍

[0002]高可用性是衡量应用服务质量高低的重要标准,为了保证应用服务的高可用性,经常需要进行多实例部署。
[0003]在一些场景下业务任务具有全局唯一性要求。因此,同时考虑应用服务的高可用性以及任务的互斥性对于业务的正常处理十分重要。

技术实现思路

[0004]本公开提供了一种用于主备节点切换方法、装置、设备、介质及程序产品。
[0005]根据本公开的一方面,提供了一种主备节点切换方法,所述方法包括:
[0006]响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;
[0007]在获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点。
[0008]根据本公开的另一方面,提供了一种主备节点切换装置,所述装置包括:
[0009]分布式锁获取模块,用于响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;
[0010]第一主备切换模块,用于在获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点。
[0011]根据本公开的另一方面,提供了一种电子设备,包括:
[0012]至少一个处理器;以及
[0013]与至少一个处理器通信连接的存储器;其中,
[0014]存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开任一实施例的主备节点切换方法。
[0015]根据本公开的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开任一实施例的主备节点切换方法。
[0016]根据本公开的另一方面,提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现本公开任一实施例的主备节点切换方法。
[0017]本公开实施例可以在保证应用服务高可用的同时,满足业务任务全局唯一性的需求。
[0018]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0019]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0020]图1a是根据本公开实施例提供的一种主备节点切换方法的示意图;
[0021]图1b是根据本公开实施例提供的获取分布式锁的示意图;
[0022]图1c是根据本公开实施例提供的节点框架的示意图;;
[0023]图2a是根据本公开实施例提供的另一种主备节点切换方法的示意图;
[0024]图2b是根据本公开实施例提供的主备节点切换流程图;
[0025]图3是根据本公开实施例提供的又一种主备节点切换方法的示意图;
[0026]图4是根据本公开实施例提供的一种主备节点切换装置的示意图;
[0027]图5是用来实现本公开实施例的主备节点切换方法的电子设备的框图。
具体实施方式
[0028]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0029]图1a是根据本公开实施例公开的一种主备节点切换方法的流程图,本实施例可以适用于通过分布式锁保证业务任务全局唯一性的情况。本实施例方法可以由主备节点切换装置来执行,该装置可采用软件和/或硬件的方式实现,并具体配置于具有一定数据运算能力的电子设备中,该电子设备可以是客户端设备或服务器设备,客户端设备例如手机、平板电脑、车载终端和台式电脑等。
[0030]S110、响应于接收到备机切主信号,获取分布式锁;备机切主信号用于将当前节点由备节点切换为主节点;分布式锁用于在当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作。
[0031]为了保证应用服务的高可用性,需要在多节点中部署应用实例,从而避免单点问题。在一些场景下,业务任务具有全局唯一性的要求,为避免任务重复执行,就要考虑任务的互斥性。对于此类应用服务,采用简单的多实例部署不能满足全局唯一性的需求,此时需要以一个主节点和多个备节点的方式进行节点部署。其中,主节点和备节点可以相互切换,只需要保证同一时刻应用服务中只包含一个主节点即可。例如,应用服务中包含节点1、节点2、节点3和节点4,在t1时刻,节点1是主节点,其他三个节点是备节点。在t2时刻,可以将节点1由主节点切换为备节点,并将节点2由备节点切换为主节点。
[0032]在以一个主节点和多个备节点的方式进行节点部署的情况下,仍可能出现任务重复执行的情况。例如,在作为主节点的节点1正在执行任务A的过程中,作为备节点的节点2接收到了备机切主信号切换为了主节点。此时,节点1中的任务A还未结束,节点2切换为主节点后也会执行任务A,此时,任务A出现重复执行的情况。
[0033]为避免上述任务重复执行的情况,本公开实施例中,在获取到备机切主信号后,需要先获取分布式锁,只有在获取到分布式锁的情况下,才能将当前节点切换为主节点。其中,分布式锁用于在当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作。也就是说,同一时刻,应用服务关联的多个节点中,只能有一
个节点持有分布式锁,避免任务重复执行。
[0034]分布式锁可以用数据库表的形式来体现,具体的,数据库表可以包括应用服务标识(例如,应用服务名称)、应用服务关联的至少一个节点标识(例如,节点名称),以及各节点的节点状态。其中,节点状态包括主节点状态和备节点状态,其中,处于主节点状态的节点是持有分布式锁的节点。
[0035]如图1b所示,在接收到针对节点2的备机切主信号后,为避免任务重复执行,不会直接将节点2切换为主节点,而是先要获取分布式锁。但此时节点1还没有释放分布式锁,节点2需要等待节点1切换为备节点并释放分布式锁后,才能获取分布式锁,进而在节点2获取分布式锁的基础上,将节点2由备节点切换为主节点。避免了在节点1还未停止执行主节点任务时,节点2已经切换为主节点并开始执行主节点任务的情况,保证了任务的全局唯一性。
[0036]其中,节点2获取分布式锁的具体过程为:获取应用服务关联的至少一个节点的节点状本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种主备节点切换方法,包括:响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;在获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点。2.根据权利要求1所述的方法,其中,所述响应于接收到备机切主信号,获取分布式锁,包括:响应于当前节点的中间件客户端接收到备机切主信号,当前节点的中间件客户端获取所述分布式锁;或者,响应于监控器接收到备机切主信号,监控器获取所述分布式锁。3.根据权利要求2所述的方法,其中,所述响应于监控器接收到备机切主信号,监控器获取所述分布式锁,包括:响应于监控器接收到当前节点的中间件客户端发送的备机切主信号,所述监控器获取所述分布式锁。4.根据权利要求3所述的方法,其中,所述当前节点包括所述监控器。5.根据权利要求1

4中任一所述的方法,其中,所述响应于接收到备机切主信号,获取分布式锁,包括:响应于接收到备机切主信号,获取所述当前节点的内存级锁;所述内存级锁用于阻塞当前节点中除获取到内存级锁的线程外,其他线程获取内存级锁的操作;在获取到所述内存级锁的情况下,获取当前节点所属应用服务关联的至少一个节点的节点状态;所述节点状态包括主节点状态和备节点状态,其中,处于主节点状态的节点是持有分布式锁的节点;在所述至少一个节点的节点状态均为备节点状态的情况下,将所述当前节点的节点状态更新为主节点状态,以获取到所述分布式锁。6.根据权利要求5所述的方法,其中,所述响应于接收到备机切主信号,获取所述当前节点的内存级锁,包括:响应于第一等待线程接收到备机切主信号,所述第一等待线程被激活,以获取到所述当前节点的内存级锁;其中,所述第一等待线程用于等待接收备机切主信号。7.根据权利要求1

4中任一所述的方法,在将所述当前节点由备节点切换为主节点之后,还包括:将工作线程调整至第二等待线程;所述第二等待线程用于等待接收主机切备信号;所述主机切备信号用于将当前节点由主节点切换为备节点。8.根据权利要求7所述的方法,还包括:响应于接收到主机切备信号,将当前节点由主节点切换为备节点;释放所述分布式锁。9.根据权利要求8所述的方法,其中,所述释放所述分布式锁,包括:将所述当前节点的节点状态更新为备节点状态,以释放所述分布式锁。10.一种主备节点切换装置,包括:
分布式锁获取模块,用于响应于接收到备机切主信号,获取分布式锁;所述备机切主信号用于将当前节点由备节点切换为主节点;所述分布式锁用于在所述当前节点获取到分布式锁的情况下,阻塞当前节点所属应用服务中其他节点获取分布式锁的操作;第一主备切换模块,用于在所述当前节点获取到所述分布式锁的情况下,将所述当前节点由备节点切换为主节点。11.根据权利要求10所述的装置,其...

【专利技术属性】
技术研发人员:索兵王玉林刘梦博冯智屈静
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1