双流互备高可用方法、装置、电子设备及存储介质与流程

文档序号:33279352发布日期:2023-02-24 20:33阅读:30来源:国知局
双流互备高可用方法、装置、电子设备及存储介质与流程

1.本技术涉及大数据技术领域,特别涉及一种双流互备高可用方法、装置、电子设备及存储介质。


背景技术:

2.flink是apache开源的一款用于大数据流处理计算的分布式计算框架。它主要有两个组件组成,分别为jobmanager和taskmanager,flink架构也遵循master-slave架构设计原则,jobmanager为master节点,taskmanager为worker(slave)节点。
3.客户端通过jobmanager提交任务到集群,并负责集群任务调度以及资源管理。从客户端获取提交的应用然后根据集群中taskmanager上的taskslot的使用情况,为提交的应用分配资源。jobmanager相关于整个集群的master节点,且整个集群有且只有一个活跃的jobmanager,负责整个集群资源和资源管理。
4.flink on yarn是使用yarn来管理jobmanager,yarn为jobmanager提供一个container,jobmanager在container内运行,如果container挂掉后,yarn会再重启一个container来来运行jobmanager。通过这种方式来保证高可用。
5.然而,虽然该方法可以保证一个集群内flink中jobmanager的无单点,但在机房停机维护、机房机器重启、机器组件升级情况下必须面临运行在flink集群上的任务重新下线,导致业务中断;而流计算以实时高效著称,一些核心业务容忍不了这种机房维护、机器重启等业务中断操作,亟待解决。
6.申请内容
7.本技术提供一种双流互备高可用方法、装置、电子设备及存储介质,以解决相关技术中在机房停机维护、机房机器重启、机器组件升级情况下必须面临运行在flink集群上的任务重新下线,导致业务中断的问题,实现了双流互备高可用并保持流中间计算状态继续计算,可以对流计算的flink集群进行热更新,包括发布代码,升级flink组件版本,集群机器故障维护升级或者两地三中心问题。
8.本技术第一方面实施例提供一种双流互备高可用方法,所述方法应用于至少两个flink集群,其中,所述方法包括以下步骤:
9.根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定所述至少两个flink集群中的主集群;
10.在所述主集群执行计算任务的同时,检测所述主节点是否下线;以及
11.在所述主节点下线时,从其他flink集群在所述zookeeper的抢占注册结果确定新的主节点,并基于所述新的节点及对应的flink集群继续执行所述计算任务的同时,和/或执行新的计算任务。
12.可选地,在检测所述主节点是否下线之前,还包括:
13.识别客户端的当前意图;
14.如果所述当前意图为机房维护意图、机器重启意图或者组件升级意图,则控制所
述主节点下线。
15.可选地,在所述主集群执行所述计算任务时,还包括:
16.将所述主集群的实际消费便宜量存储在所述zookeeper中;
17.利用分布式锁锁止所述其他flink集群的消费动作,并每隔预设时长执行抢占注册动作,获取新的抢占注册结果。
18.可选地,在所述主节点下线后,还包括:
19.判断所述主节点是否完成当前消费动作;
20.如果未完成所述当前消费动作,则控制所述主节点继续执行所述当前消费动作,否则直接下线所述主节点。
21.可选地,所述基于所述新的节点及对应的flink集群继续执行所述计算任务的同时,和/或执行新的计算任务,包括:
22.从所述zookeeper获取所述主集群存储的实际消费便宜量;
23.释放所述分布式锁,并基于所述实际消费便宜量继续执行剩余的消费动作。
24.本技术第二方面实施例提供一种双流互备高可用装置,所述装置应用于至少两个flink集群,其中,所述装置包括:
25.确定模块,用于根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定所述至少两个flink集群中的主集群;
26.检测模块,用于在所述主集群执行计算任务的同时,检测所述主节点是否下线;以及
27.执行模块,用于在所述主节点下线时,从其他flink集群在所述zookeeper的抢占注册结果确定新的主节点,并基于所述新的节点及对应的flink集群继续执行所述计算任务的同时,和/或执行新的计算任务。
28.可选地,在检测所述主节点是否下线之前,所述检测模块,还用于:
29.识别客户端的当前意图;
30.如果所述当前意图为机房维护意图、机器重启意图或者组件升级意图,则控制所述主节点下线。
31.可选地,在所述主集群执行所述计算任务时,所述执行模块,还用于:
32.将所述主集群的实际消费便宜量存储在所述zookeeper中;
33.利用分布式锁锁止所述其他flink集群的消费动作,并每隔预设时长执行抢占注册动作,获取新的抢占注册结果。
34.可选地,在所述主节点下线后,所述检测模块,还用于:
35.判断所述主节点是否完成当前消费动作;
36.如果未完成所述当前消费动作,则控制所述主节点继续执行所述当前消费动作,否则直接下线所述主节点。
37.可选地,所述执行模块,具体用于:
38.从所述zookeeper获取所述主集群存储的实际消费便宜量;
39.释放所述分布式锁,并基于所述实际消费便宜量继续执行剩余的消费动作。
40.本技术第三方面实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序,以实现如上述
实施例所述的双流互备高可用方法。
41.本技术第四方面实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行,以用于实现上述的双流互备高可用方法。
42.由此,可以根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定至少两个flink集群中的主集群,并在主集群执行计算任务的同时,检测主节点是否下线,并在主节点下线时,从其他flink集群在zookeeper的抢占注册结果确定新的主节点,并基于新的节点及对应的flink集群继续执行计算任务的同时,和/或执行新的计算任务。由此,解决了相关技术中在机房停机维护、机房机器重启、机器组件升级情况下必须面临运行在flink集群上的任务重新下线,导致业务中断的问题,实现了双流互备高可用并保持流中间计算状态继续计算,可以对流计算的flink集群进行热更新,包括发布代码,升级flink组件版本,集群机器故障维护升级或者两地三中心问题。
43.本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。
附图说明
44.本技术上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
45.图1为根据本技术实施例提供的一种双流互备高可用方法的流程图;
46.图2为根据本技术一个实施例的两个集群抢占注册的示例图;
47.图3为根据本技术一个实施例的两个集群抢占注册后的示例图;
48.图4为根据本技术一个实施例的主节点下线确定新的主节点的示例图;
49.图5为根据本技术实施例的双流互备高可用装置的示例图;
50.图6为根据本技术实施例的电子设备的示例图。
具体实施方式
51.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本技术,而不能理解为对本技术的限制。
52.下面参考附图描述本技术实施例的双流互备高可用方法、装置、电子设备及存储介质。针对上述背景技术中心提到的相关技术中在机房停机维护、机房机器重启、机器组件升级情况下必须面临运行在flink集群上的任务重新下线,导致业务中断的问题,本技术提供了一种双流互备高可用方法,在该方法中,可以根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定至少两个flink集群中的主集群,并在主集群执行计算任务的同时,检测主节点是否下线,并在主节点下线时,从其他flink集群在zookeeper的抢占注册结果确定新的主节点,并基于新的节点及对应的flink集群继续执行计算任务的同时,和/或执行新的计算任务。由此,解决了相关技术中在机房停机维护、机房机器重启、机器组件升级情况下必须面临运行在flink集群上的任务重新下线,导致业务中断的问题,实现了双流互备高可用并保持流中间计算状态继续计算,可以对流计算的flink集群进行热更新,包括发布代码,升级flink组件版本,集群机器故障维护升级或者两地三
中心问题。
53.具体而言,图1为本技术实施例所提供的一种双流互备高可用方法的流程示意图。
54.如图1所示,该方法应用于至少两个flink集群,该双流互备高可用方法包括以下步骤:
55.在步骤s101中,根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定至少两个flink集群中的主集群。
56.具体地,如图2和图3所示,本技术实施例的组件不少天两个flink集群,并且开发代码使两个集群分别去zookeeper抢占注册,使自己成为主节点,注册成功的则为主节点,没抢占成功的则为从节点。
57.需要说明的是,主集群可以正常消费kafka,并把kafka的offset(消费便宜量)、定时checkpoint(存储)在zookeeper中。从集群中使用zookeeper分布式锁,使kafkafetcher夯住集群不让消费并定时去抢占主。此时只有主集群正常工作。
58.在步骤s102中,在主集群执行计算任务的同时,检测主节点是否下线。
59.可选地,在一些实施例中,在检测主节点是否下线之前,还包括:识别客户端的当前意图;如果当前意图为机房维护意图、机器重启意图或者组件升级意图,则控制主节点下线。
60.可以理解的是,在出现机房维护、机器重启或者组件升级等需求时,本技术实施例可以对主节点手动进行下线,等kafkafetcher再次抢主时,成为新一轮主节点后。在步骤s103中,在主节点下线时,从其他flink集群在zookeeper的抢占注册结果确定新的主节点,并基于新的节点及对应的flink集群继续执行计算任务的同时,和/或执行新的计算任务。
61.可选地,在一些实施例中,基于新的节点及对应的flink集群继续执行计算任务的同时,和/或执行新的计算任务,包括:从zookeeper获取主集群存储的实际消费便宜量;释放分布式锁,并基于实际消费便宜量继续执行剩余的消费动作。
62.可选地,在一些实施例中,在主集群执行计算任务时,还包括:将主集群的实际消费便宜量存储在zookeeper中;利用分布式锁锁止其他flink集群的消费动作,并每隔预设时长执行抢占注册动作,获取新的抢占注册结果。
63.其中,预设时长可以是用户预先设定的时长,可以是通过有限次实验获取的时长,也可以是通过有限次计算机仿真得到的时长,在此不做具体限定。
64.具体而言,如图4所示,被重新选举为新的主节点会从zookeeeper获取上一个集群checkpoint的offset,并释放该节点夯住的kafkafetcher从获取的offset继续消费接管后续计算。这样平滑切换使已经进入到flink集群中但并没有计算完的数据不会因为断网、机器重启等丢失掉。
65.可选地,在一些实施例中,在主节点下线后,还包括:判断主节点是否完成当前消费动作;如果未完成当前消费动作,则控制主节点继续执行当前消费动作,否则直接下线主节点。
66.也就是说,下线的节点变为从节点,且不继续消费数据,但会继续计算已经消费但还没计算完的数据直至计算完,然后下线。
67.根据本技术实施例提出的双流互备高可用方法,可以根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定至少两个flink集群中
的主集群,并在主集群执行计算任务的同时,检测主节点是否下线,并在主节点下线时,从其他flink集群在zookeeper的抢占注册结果确定新的主节点,并基于新的节点及对应的flink集群继续执行计算任务的同时,和/或执行新的计算任务。由此,解决了相关技术中在机房停机维护、机房机器重启、机器组件升级情况下必须面临运行在flink集群上的任务重新下线,导致业务中断的问题,实现了双流互备高可用并保持流中间计算状态继续计算,可以对流计算的flink集群进行热更新,包括发布代码,升级flink组件版本,集群机器故障维护升级或者两地三中心问题。
68.其次参照附图描述根据本技术实施例提出的双流互备高可用装置。
69.图5是本技术实施例的双流互备高可用装置的方框示意图。
70.如图5所示,双流互备高可用装置应用于至少两个flink集群,该双流互备高可用装置10包括:确定模块100、检测模块200和执行模块300。
71.其中,确定模块100用于根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定至少两个flink集群中的主集群;
72.检测模块200用于在主集群执行计算任务的同时,检测主节点是否下线;以及
73.执行模块300用于在主节点下线时,从其他flink集群在zookeeper的抢占注册结果确定新的主节点,并基于新的节点及对应的flink集群继续执行计算任务的同时,和/或执行新的计算任务。
74.可选地,在检测主节点是否下线之前,检测模块200还用于:
75.识别客户端的当前意图;
76.如果当前意图为机房维护意图、机器重启意图或者组件升级意图,则控制主节点下线。
77.可选地,在主集群执行计算任务时,执行模块300还用于:
78.将主集群的实际消费便宜量存储在zookeeper中;
79.利用分布式锁锁止其他flink集群的消费动作,并每隔预设时长执行抢占注册动作,获取新的抢占注册结果。
80.可选地,在主节点下线后,检测模块200还用于:
81.判断主节点是否完成当前消费动作;
82.如果未完成当前消费动作,则控制主节点继续执行当前消费动作,否则直接下线主节点。
83.可选地,执行模块300具体用于:
84.从zookeeper获取主集群存储的实际消费便宜量;
85.释放分布式锁,并基于实际消费便宜量继续执行剩余的消费动作。
86.需要说明的是,前述对双流互备高可用方法实施例的解释说明也适用于该实施例的双流互备高可用装置,此处不再赘述。
87.根据本技术实施例提出的双流互备高可用装置,可以根据每个flink集群在zookeeper的抢占注册结果确定主节点和一个或多个从节点,并确定至少两个flink集群中的主集群,并在主集群执行计算任务的同时,检测主节点是否下线,并在主节点下线时,从其他flink集群在zookeeper的抢占注册结果确定新的主节点,并基于新的节点及对应的flink集群继续执行计算任务的同时,和/或执行新的计算任务。由此,解决了相关技术中在
机房停机维护、机房机器重启、机器组件升级情况下必须面临运行在flink集群上的任务重新下线,导致业务中断的问题,实现了双流互备高可用并保持流中间计算状态继续计算,可以对流计算的flink集群进行热更新,包括发布代码,升级flink组件版本,集群机器故障维护升级或者两地三中心问题。
88.图6为本技术实施例提供的电子设备的结构示意图。该电子设备可以包括:
89.存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序。
90.处理器602执行程序时实现上述实施例中提供的双流互备高可用方法。
91.进一步地,电子设备还包括:
92.通信接口603,用于存储器601和处理器602之间的通信。
93.存储器601,用于存放可在处理器602上运行的计算机程序。
94.存储器601可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
95.如果存储器601、处理器602和通信接口603独立实现,则通信接口603、存储器601和处理器602可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
96.可选的,在具体实现上,如果存储器601、处理器602及通信接口603,集成在一块芯片上实现,则存储器601、处理器602及通信接口603可以通过内部接口完成相互间的通信。
97.处理器602可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
98.本实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上的双流互备高可用方法。
99.在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本技术的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
100.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本技术的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
101.流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更n个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部
分,并且本技术的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本技术的实施例所属技术领域的技术人员所理解。
102.在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或n个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
103.应当理解,本技术的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,n个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
104.本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
105.此外,在本技术各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
106.上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本技术的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本技术的限制,本领域的普通技术人员在本技术的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1