一种主节点的切换方法以及计算机可读存储介质与流程

文档序号:25086842发布日期:2021-05-18 20:10阅读:107来源:国知局
一种主节点的切换方法以及计算机可读存储介质与流程

1.本申请属于中间件的技术领域,尤其涉及一种主节点的切换方法以及计算机可读存储介质。


背景技术:

2.消息中间件是分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。
3.随着消息中间件应用范围的扩大,基于消息中间件通信的第三方系统越来越多。为了保证系统的可用性,消息中间件一般都部署为集群方式,避免主节点退出而导致系统无法运行。其中,传统技术对于主节点切换的处理方式为:通过各个节点之间共同商讨当前主节点。然而每个副节点之间的交互过程较为复杂,导致切换主节点的效率较低。


技术实现要素:

4.有鉴于此,本申请实施例提供了一种主节点的切换方法、装置、第一设备、第二设备、第三设备、消息中间件系统以及计算机可读存储介质,可以解决每个副节点之间的交互过程较为复杂,导致切换主节点的效率较低的技术问题。
5.本申请实施例的第一方面提供了一种主节点的切换方法,所述切换方法应用于第一设备,所述第一设备为第一副节点,所述方法包括:
6.接收仲裁节点发送的仲裁请求;所述仲裁请求是仲裁节点在检测到历史主节点退出后,向多个副节点发送的请求;
7.根据所述仲裁请求,向所述仲裁节点发送当前竞选请求;所述当前竞选请求用于竞选当前主节点;
8.接收所述仲裁节点根据所述当前竞选请求返回的第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点;
9.向所述其他副节点发送通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述其他副节点是指所有副节点中除了所述第一副节点以外的副节点。
10.本申请实施例的第二方面提供了一种主节点的切换方法,所述切换方法应用于第二设备,所述第二设备为仲裁节点,所述方法包括:
11.当检测到历史主节点退出后,向多个副节点发送的仲裁请求;
12.接收所述多个副节点根据所述仲裁请求返回的当前竞选请求;
13.根据预设条件在所述多个副节点中选择当前主节点;所述预设条件包括分布式锁;
14.向所述当前主节点发送第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点。
15.本申请实施例的第三方面提供了一种主节点的切换方法,所述切换方法应用于第三设备,所述第三设备为其他副节点,所述其他副节点是指所有副节点中除了第一副节点
以外的副节点,所述方法包括:
16.接收当前主设备发送的通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述通知报文是其他副节点与第一副节点通过仲裁节点共同竞争主节点后,第一副节点成功竞选为当前主节点后发送的报文;
17.根据所述通知报文,确定第一副节点为当前主节点。
18.本申请实施例的第四方面提供了一种主节点的切换装置,所述装置包括:
19.第一接收组件,用于接收仲裁节点发送的仲裁请求;所述仲裁请求是仲裁节点在检测到历史主节点退出后,向多个副节点发送的请求;
20.第一发送组件,用于根据所述仲裁请求,向所述仲裁节点发送当前竞选请求;所述当前竞选请求用于竞选当前主节点;
21.第二接收组件,用于接收所述仲裁节点根据所述当前竞选请求返回的第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点;
22.第一同步组件,用于向所述其他副节点发送通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述其他副节点是指所有副节点中除了所述第一副节点以外的副节点。
23.本申请实施例的第五方面提供了一种主节点的切换装置,所述装置包括:
24.第二发送组件,用于当检测到历史主节点退出后,向多个副节点发送的仲裁请求;
25.第三接收组件,用于接收所述多个副节点根据所述仲裁请求返回的当前竞选请求;
26.选择组件,用于根据预设条件在所述多个副节点中选择当前主节点;所述预设条件包括分布式锁;
27.第三发送组件,用于向所述当前主节点发送第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点。
28.本申请实施例的第六方面提供了一种主节点的切换装置,所述装置包括:
29.第二同步组件,用于接收当前主设备发送的通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述通知报文是其他副节点与第一副节点通过仲裁节点共同竞争主节点后,第一副节点成功竞选为当前主节点后发送的报文;
30.确认组件,用于根据所述通知报文,确定第一副节点为当前主节点。
31.本申请实施例的第七方面提供了一种第一设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
32.本申请实施例的第八方面提供了一种第二设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第二方面所述方法的步骤。
33.本申请实施例的第九方面提供了一种第三设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第三方面所述方法的步骤。
34.本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面、第二方面以
及第三方面所述方法的步骤。
35.本申请实施例与现有技术相比存在的有益效果是:本申请通过,接收仲裁节点发送的仲裁请求;根据所述仲裁请求,向所述仲裁节点发送当前竞选请求;所述当前竞选请求用于竞选当前主节点;接收所述仲裁节点根据所述当前竞选请求返回的第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点;向所述其他副节点发送通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述其他副节点是指所有副节点中除了所述第一副节点以外的副节点。上述方案,副节点仅需与仲裁节点交互,即可竞选当前主节点,并在选举成功后,通知其他副节点,以完成主节点切换的整个流程,避免了传统技术中不同副节点之间的繁杂交互,提高了切换主节点的效率。
附图说明
36.为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
37.图1示出了本申请提供的四端交互示意性流程图;
38.图2示出了本申请提供的一种主节点的切换方法的示意性流程图;
39.图3示出了本申请提供的另一种主节点的切换方法的示意性流程图;
40.图4示出了本申请提供的另一种主节点的切换方法的示意性流程图;
41.图5示出了本申请提供的一种主节点的切换方法的示意性流程图;
42.图6示出了本申请提供的另一种主节点的切换方法的示意性流程图;
43.图7示出了本申请提供的一种主节点的切换方法的示意性流程图;
44.图8示出了本申请提供的另一种主节点的切换方法的示意性流程图;
45.图9示出了本申请提供的另一种主节点的切换方法的示意性流程图;
46.图10示出了本申请提供的一种主节点的切换装置的示意图;
47.图11是本发明一实施例提供的一种终端设备的示意图。
具体实施方式
48.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
49.中间件位于客户机/服务器的操作系统之上,管理计算机资源和网络通讯非底层操作系统软件。不能直接给用户带来价值的软件统称中间件。
50.而消息中间件是分布式系统中一个子系统,关注于数据的发送和接收,利用高效可靠的异步消息传递机制对分布式系统中的其余各个子系统进行集成。
51.在消息中间件中包括一个主节点和若干个副节点,主节点用于控制若干个副节点进行消息同步推送。当历史主节点发生故障或正常退出时,需要在若干个副节点中选取当前主节点,以保证消息同步推送。然而,由于传统技术对于主节点切换的处理方式为:通过
各个节点之间共同商讨当前主节点。然而每个副节点之间的交互过程较为复杂,需耗费较多时间,切换主节点的效率低,进而无法保证消息同步的实时性,且存在切换时消息丢失的情况。
52.有鉴于此,本申请实施例提供了一种主节点的切换方法、装置、第一设备、第二设备、第三设备、消息中间件系统以及计算机可读存储介质,可以解决上述技术问题。
53.本实施例提供了一种消息中间件系统,所述消息中间件系统包括第一设备、第二设备、第三设备以及第四设备。
54.其中,所述第一设备为第一副节点(即当前主节点),所述第二设备为仲裁节点,所述第三设备为其他副节点(其他副节点是指所有副节点中除了第一副节点以外的副节点),所述第四设备为历史主节点。
55.所述第一设备用于实现如权利要求1至3任一项所述方法的步骤,所述第二设备用于实现如权利要求4至5任一项所述方法的步骤,所述第三设备用于实现如权利要求6至8任一项所述方法的步骤。
56.值得注意的是,为了更好地解释本申请的技术方案,故上述每个节点都承载于单独的硬件之下(即一个节点对应一个实体设备)。其中,每个节点与实体设备之间的关系不限于一一对应的关系,每个节点也可以是同一实体设备下的不同软件实现上述方式的步骤,可根据实际应用场景而定,在此不做任何限定。
57.基于上述软硬件环境,本申请提供了一种主节点的切换方法,所述方法为四端交互流程。为了更好得解释技术方案,本申请针对四端交互的流程进行整体性解释说明后,再逐一针对每端的执行步骤进行详细说明。请参见图1,图1示出了本申请提供的四端交互示意性流程图。
58.如图1所示,消息中间件系统包括仲裁节点、历史主节点、当前主节点以及第二幅节点。其中,对于第二幅节点的数量可以更多,为了更好地解释本申请的技术方案,故以单个第二幅节点(即第二幅节点作为多个幅节点的代表)为例进行解释说明。
59.四端交互流程分为四个阶段:初始启动阶段、运行阶段、主节点切换阶段(历史主节点退出阶段)以及副节点退出阶段。四个阶段层层递进,依次执行,本实施例按照四个阶段的执行顺序进行依次解释说明:
60.①
初始启动阶段:在初始阶段,历史主节点、第一副节点以及第二副节点的身份相同(即都可视为副节点)。在每个阶段启动后,历史主节点、第一副节点以及第二副节点各自向仲裁节点发送历史竞选请求,通过历史竞选请求竞选主节点(当前的历史主节点的身份为副节点)。仲裁节点在接收到多个节点的历史竞选请求后,根据预设条件(例如:分布式锁)在多个节点中选择主节点。仲裁节点向历史主节点发送竞选成功的消息,向第一副节点和第二副节点发送竞选失败的消息以及历史主节点的节点号。第一副节点和第二副节点根据历史主节点的节点号,向历史主节点发送第一连接请求。历史主节点根据第一连接请求,与第一副节点、第二副节点建立连接。在建立连接的基础上,历史主节点、第一副节点以及第二副节点相互发送校验数据包,若校验成功,则执行后续步骤,若校验失败,则断开连接。历史主节点开始订阅发布端发送的历史待发送消息,并向第一副节点和第二副节点发送第一通知。第一副节点和第二副节点根据第一通知后,开始订阅发布端发送的历史待发送消息。
61.②
运行阶段:历史主节点对历史待发送消息进行排列,得到第三排序信息,并将第三排序信息以及关键信息发送至第一副节点和第二副节点。第一副节点和第二副节点根据关键信息,确定本地中的历史待发送消息是否与历史主节点中的历史待发送消息一致,若确定一致,则向历史主节点发送同步成功的消息。
62.历史主节点在接收到同步成功的消息后,开始推送历史待发送消息,并向第一副节点和第二副节点发送推送通知。第一副节点和第二副节点根据推送通知,推送历史待发送消息。
63.③
主节点切换阶段(主节点切换阶段可发生在上述任一一个阶段中):历史主节点向仲裁节点发送退出通知。仲裁节点在接受到退出通知后,向第一副节点和第二副节点发送仲裁请求。第一副节点和第二副节点根据仲裁请求,发送当前竞选请求。仲裁节点在接收到第一副节点和第二副节点的历史竞选请求后,根据预设条件(例如:分布式锁)在第一副节点和第二副节点中选择主节点(将第一副节点作为主节点)。仲裁节点向第一副节点发送竞选成功的消息,向第二副节点发送竞选失败的消息以及当前主节点的节点号。第二幅节点根据当前主节点的节点号,向当前主节点发送第二连接请求。当前主节点根据第二连接请求与第二副节点建立连接。当前主节点与第二副节点互相校验数据包。在校验通过后,当前主节点向第二副节点通知主节点易主。当前主节点和第二副节点执行上述“运行阶段”,在此不再赘述。
64.④
副节点退出阶段(副节点退出阶段可发生在上述任一一个阶段中):第二副节点向仲裁节点发送退出通知。仲裁节点向当前主节点以及剩余的副节点通知第二副节点退出。当前主节点不再与第二副节点进行交互,与剩余的副节点的交互过程正常执行。
65.在上述整体性解释说明的情况下,本实施例针对当前主节点的执行流程进行详细说明。请参见图2,图2示出了本申请提供的一种主节点的切换方法的示意性流程图。所述切换方法执行主体为第一设备,所述第一设备为第一副节点,如图2所示,该方法可以包括如下步骤(值得注意的是,该方法的执行流程对应于上述主节点切换阶段):
66.步骤201,接收仲裁节点发送的仲裁请求;所述仲裁请求是仲裁节点在检测到历史主节点退出后,向多个副节点发送的请求。
67.由于消息中间件系统中是主节点用于消息同步推送的控制。若主节点空缺,则无法实现消息同步推送。故仲裁节点在历史主节点退出后,向多个副节点发送仲裁请求。
68.消息中间件中的每个节点包括如下组件:订阅组件、排队组件、缓存组件、持久化组件、同步组件以及推送组件。
69.第一副节点通过同步组件接收到仲裁节点发送的仲裁请求后,执行步骤202。
70.步骤202,根据所述仲裁请求,向所述仲裁节点发送当前竞选请求;所述当前竞选请求用于竞选当前主节点。
71.第一副节点在接收到仲裁请求后,向仲裁节点发送当前竞选请求,以与其他副节点竞选主节点。
72.步骤203,接收所述仲裁节点根据所述当前竞选请求返回的第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点。
73.步骤204,向所述其他副节点发送通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述其他副节点是指所有副节点中除了所述第一副节点以外的副节点。
74.仲裁节点根据预设条件,将第一副节点确认为当前主节点,并向第一副节点发送第一回复报文(用于表示竞选成功),向其他副节点发送第二回复报文(用于表示竞选失败)。第一副节点在接收到第一回复报文后,确定本节点为当前主节点,并以当前主节点的身份与第二副节点进行交互,进而确立主副关系。在确立主副关系之后,进行后续消息同步推送的流程(详见后续实施例)。
75.本实施例通过,接收仲裁节点发送的仲裁请求;根据所述仲裁请求,向所述仲裁节点发送当前竞选请求;所述当前竞选请求用于竞选当前主节点;接收所述仲裁节点根据所述当前竞选请求返回的第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点;向所述其他副节点发送通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述其他副节点是指所有副节点中除了所述第一副节点以外的副节点。上述方案,副节点仅需与仲裁节点交互,即可竞选当前主节点,并在选举成功后,通知其他副节点,以完成主节点切换的整个流程,避免了传统技术中不同副节点之间的繁杂交互,提高了切换主节点的效率。
76.可选地,在上述图2所示的实施例基础上,若节点中还存在未推送的历史待发送消息,则在步骤204之后,还包括如下步骤,请参见图3,图3示出了本申请提供的另一种主节点的切换方法的示意性流程图。
77.步骤301,与所述其他副节点连接。
78.当前主节点在和其他副节点连接后,通过同步组件通知其他副节点启动工作状态,以控制其他副节点通过订阅组件订阅发布端发送的待发送消息或控制其他副节点进行消息同步推送。
79.步骤302,将当前队列中的历史待发送消息进行排序,得到第一排序信息。
80.由于在主节点切换过程,每个节点中可能还存在未推送的历史待发送消息。故当前主节点需要对未推送的历史待发送消息进行排序,得到第一排序信息。
81.其中,在历史主节点切换前,历史待发送消息存储在每个节点的缓存组件和/或持久化组件中。在历史主节点切换时,若每个节点的缓存组件中历史待发送消息丢失,则可在持久化组件中拉取历史待发送消息,以防止历史待发送消息丢失。
82.步骤303,将所述第一排序信息以及历史待发送消息的关键信息发送至所述其他副节点;所述关键信息包括源地址信息以及信息标识。
83.由于消息同步推送,需要推送相同的消息,而每个节点存储的消息可能存在错误。故当前主节点将第一排序信息以及关键信息发送至所述其他副节点,以使其他副节点根据关键信息确定本地中的历史待发送消息与当前主节点中的历史待发送消息是否一致。其中,关键信息包括但不限于源地址信息以及信息标识等用于区分待发送消息的信息。
84.步骤304,接收所述其他副节点根据所述关键信息返回的第一同步消息。
85.当前主节点通过同步组件接收第一同步消息,并执行步骤305。
86.步骤305,若根据所述第一同步消息确定同步成功,则向所述其他副节点发送第一推送报文;所述第一推送报文用于控制所述其他副节点向目的终端发送所述历史待发送消息。
87.步骤306,向目的终端发送所述历史待发送消息。
88.当同步成功,则表示可以进行同步推送。当前主节点在通过推送组件推送历史待
发送消息的同时,通过同步组件发送第一推送报文。以控制其他副节点通过推送组件向目的终端发送所述历史待发送消息,进而实现同步推送。
89.本实施例通过,与所述其他副节点连接。将当前队列中的历史待发送消息进行排序,得到第一排序信息。将所述第一排序信息以及历史待发送消息的关键信息发送至所述其他副节点。接收所述其他副节点根据所述关键信息返回的第一同步消息。若根据所述第一同步消息确定同步成功,则向所述其他副节点发送第一推送报文。向目的终端发送所述历史待发送消息。通过上述方式,防止在切换主节点的过程中待发送消息丢失。
90.可选地,在上述图3所示的实施例基础上,若节点中不存在未推送的历史待发送消息或在执行步骤301至步骤306的过程中接收到当前待发送消息(即新的待发送消息),则所述切换方法,还包括如下步骤,请参见图4,图4示出了本申请提供的另一种主节点的切换方法的示意性流程图。
91.步骤401,接收发布端发送的当前待发送消息。
92.发布端是消息的产生节点,即向消息中间件发送待发送消息,以通过消息中间件向不同的目的终端推送待发送消息。
93.当前主节点和其他副节点通过订阅组件共同接收发布端发送的当前待发送消息。
94.步骤402,将所述当前待发送消息进行排序,得到第二排序信息。
95.当前主节点将所述当前待发送消息进行排序,得到第二排序信息,以通过第二排序信息控制本地以及其他副节点推送消息的顺序。
96.当前主节点将当前待发送消息按照第二排序信息,存储至缓存组件。
97.步骤403,将所述第二排序信息以及所述当前待发送消息的关键信息发送至其他副节点;所述关键信息包括源地址信息以及信息标识。
98.当前主节点通过同步组件将第二排序信息以及当前待发送消息的关键信息发送至其他副节点。
99.步骤404,接收所述其他副节点根据所述第二排序信息以及所述关键信息返回的第二同步消息。
100.其他副节点根据关键信息确定本地中的当前待发送消息与当前主节点中的当前待发送消息是否一致。若确定一致,则其他副节点通过同步组件向当前主节点发送第二同步消息,并根据第二排序信息将缓存中的当前待发送消息进行排序。主节点通过同步组件接收其他副节点返回的第二同步消息。
101.步骤405,若根据所述第二同步消息确定同步成功,则向所述其他副节点发送第二推送报文;所述第二推送报文用于控制所述其他副节点向目的终端发送当前待发送消息。
102.在当前主节点在确定同步成功后,通过同步组件向其他副节点发送第二推送报文。
103.其他副节点通过同步组件接收第二推送报文,通过推送组件向目的终端发送当前待发送消息。
104.步骤406,向目的终端发送所述当前待发送消息。
105.当前主节点通过推送组件向目的终端发送当前待发送消息。
106.当前主节点和其他副节点通过持久化组件将当前待发送消息进行异步存储,并擦除缓存组件中的当前待发送消息,以持久化保存当前待发送消息,防止数据丢失,或在推送
失败时进行重传。
107.本实施例通过,接收发布端发送的当前待发送消息。将所述当前待发送消息进行排序,得到第二排序信息。将所述第二排序信息以及所述当前待发送消息的关键信息发送至其他副节点;所述关键信息包括源地址信息以及信息标识。接收所述其他副节点根据所述第二排序信息以及所述关键信息返回的第二同步消息。若根据所述第二同步消息确定同步成功,则向所述其他副节点发送第二推送报文;所述第二推送报文用于控制所述其他副节点向目的终端发送当前待发送消息。向目的终端发送所述当前待发送消息。通过上述方式,控制多个节点之间的同步消息推送。
108.在上述整体性解释说明的情况下,本实施例针对仲裁节点的执行流程进行详细说明。请参见图5,图5示出了本申请提供的一种主节点的切换方法的示意性流程图。所述切换方法执行主体为第二设备,所述第二设备为仲裁节点,如图5所示,该方法可以包括如下步骤(值得注意的是,该方法的执行流程对应于上述主节点切换阶段):
109.步骤501,当检测到历史主节点退出后,向多个副节点发送的仲裁请求。
110.其中,多个副节点包括第一副节点以及第二副节点。
111.步骤502,接收所述多个副节点根据所述仲裁请求返回的当前竞选请求。
112.步骤503,根据预设条件在所述多个副节点中选择当前主节点;所述预设条件包括分布式锁。
113.预设条件包括但不限于分布式锁,预设条件还可以是:根据每个节点的硬件资源以及占用率等参数,以选择硬件资源较好或占用率较低的节点。
114.步骤504,向所述当前主节点发送第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点。
115.仲裁节点向第二副节点发送第一回复报文,第一回复报文用于传递竞选失败的信息以及当前主节点的节点号。
116.本实施例通过,当检测到历史主节点退出后,向多个副节点发送的仲裁请求。接收所述多个副节点根据所述仲裁请求返回的当前竞选请求。根据预设条件在所述多个副节点中选择当前主节点。向所述当前主节点发送第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点。上述方案,副节点仅需与仲裁节点交互,即可竞选当前主节点,以完成主节点切换的整个流程,避免了传统技术中不同副节点之间的繁杂交互,提高了切换主节点的效率。
117.可选地,在上述图5所示的实施例基础上,在步骤501之前,还包括如下步骤(初始启动阶段),请参见图6,图6示出了本申请提供的另一种主节点的切换方法的示意性流程图。
118.步骤601,接收所有节点发送的历史竞选请求;所述所有节点包括历史主节点以及副节点。
119.在初始启动阶段,所有节点向仲裁节点发送历史竞选请求。其中,所有节点包括历史主节点、第一幅节点以及第二副节点等。
120.步骤602,根据预设条件在所有节点中选择历史主节点;所述预设条件包括分布式锁。
121.步骤603,向历史主节点发送第二回复报文;第二回复报文用于表示竞选成功。
122.步骤604,向副节点发送第三回复报文;第三回复报文用于表示竞选失败。
123.步骤602至步骤604与图5所示的实施例的类似,详情请参照图5所示的实施例,在此不再赘述。
124.本实施例通过,接收所有节点发送的历史竞选请求;所述所有节点包括历史主节点以及副节点。根据预设条件在所有节点中选择历史主节点;所述预设条件包括分布式锁。向历史主节点发送第二回复报文;第二回复报文用于表示竞选成功。向副节点发送第三回复报文;第三回复报文用于表示竞选失败。上述方案,副节点仅需与仲裁节点交互,即可竞选当前主节点,以完成主节点切换的整个流程,避免了传统技术中不同副节点之间的繁杂交互,提高了切换主节点的效率。
125.在上述整体性解释说明的情况下,本实施例针对其他幅节点的执行流程进行详细说明。请参见图7,图7示出了本申请提供的一种主节点的切换方法的示意性流程图。所述切换方法执行主体为第三设备,所述第三设备为其他副节点,如图5所示,该方法可以包括如下步骤(值得注意的是,该方法的执行流程对应于上述主节点切换阶段):
126.步骤701,接收当前主设备发送的通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述通知报文是其他副节点与第一副节点通过仲裁节点共同竞争主节点后,第一副节点成功竞选为当前主节点后发送的报文。
127.步骤702,根据所述通知报文,确定第一副节点为当前主节点。
128.本实施例通过,接收当前主设备发送的通知报文。根据所述通知报文,确定第一副节点为当前主节点。上述方案,副节点仅需与仲裁节点交互,即可竞选当前主节点,以完成主节点切换的整个流程,避免了传统技术中不同副节点之间的繁杂交互,提高了切换主节点的效率。
129.可选地,在上述图7所示的实施例基础上,若节点中存在未推送的历史待发送消息,在步骤702之后,还包括如下步骤,请参见图8,图8示出了本申请提供的另一种主节点的切换方法的示意性流程图。
130.步骤801,与所述当前主节点连接。
131.其他副节点通过同步组件与当前主节点连接。
132.步骤802,接收所述当前主节点发送的第一排序信息以及历史待发送消息的关键信息;所述关键信息包括源地址信息以及信息标识。
133.步骤803,若根据所述关键信息确定主节点和本地中的历史待发送消息一致,则向所述当前主节点发送第一同步消息。
134.其他副节点通过同步组件接收当前主节点发送的第一排序信息以及历史待发送消息的关键信息。根据关键信息确定本地中的历史待发送消息与当前主节点中的历史待发送消息是否一致。若确定一致,则根据第一排序信息将缓存组件中的历史待发送消息进行排序。
135.其他副节点通过同步组件向当前主节点发送第一同步消息,以表示同步成功。
136.步骤804,接收所述当前主节点根据所述第一同步消息返回的第一推送报文。
137.步骤805,响应于所述第一推送报文,根据所述第一排序信息依次向目的终端发送所述历史待发送消息。
138.其他副节点通过同步组件接收当前主节点返回的第一推送报文。并根据第一推送
报文,利用推送组件依次向目的终端发送所述历史待发送消息。
139.本实施例通过,与所述当前主节点连接。接收所述当前主节点发送的第一排序信息以及历史待发送消息的关键信息。若根据所述关键信息确定主节点和本地中的历史待发送消息一致,则向所述当前主节点发送第一同步消息。接收所述当前主节点根据所述第一同步消息返回的第一推送报文。响应于所述第一推送报文,根据所述第一排序信息依次向目的终端发送所述历史待发送消息。通过上述方式,防止在切换主节点的过程中待发送消息丢失。
140.可选地,在上述图8所示的实施例基础上,若节点中不存在未推送的历史待发送消息或在执行步骤801至步骤805的过程中接收到当前待发送消息(即新的待发送消息),则所述切换方法,还包括如下步骤,请参见图9,图9示出了本申请提供的另一种主节点的切换方法的示意性流程图。
141.步骤901,接收所述主设备发送的第二排序信息以及当前待发送消息的关键信息;所述关键信息包括源地址信息以及信息标识;所述第二排序信息是当前主节点和其他副节点都接收到当前待发送消息后,当前主节点发送的当前待发送消息对应的排序信息。
142.步骤902,若根据所述关键信息确定主节点和本地中的当前待发送消息一致,则向所述当前主节点发送第二成功同步消息。
143.其他副节点通过同步组件接收当前待发送消息后,将当前待发送消息存储至缓存组件。其他副节点通过同步组件接收第二排序信息以及当前待发送消息的关键信息。根据关键信息确定本地中的当前待发送消息与当前主节点中的当前待发送消息是否一致。若确定一致,则根据第二排序信息将缓存组件中的当前待发送消息进行排序。并通过同步组件向当前主节点发送第二成功同步消息。
144.步骤903,接收主节点根据所述第二成功同步消息返回的第二推送报文。
145.其他副节点通过同步组件接收第二推送报文。
146.步骤904,响应于所述第二推送报文,根据所述第二排序信息依次向目的终端发送所述当前待发送消息。
147.其他副节点通过推送组件依次向目的终端发送所述当前待发送消息。并将当前待发送消息通过持久化组件存储至磁盘,以防止数据丢失或用于数据重传。
148.本实施例通过,接收所述主设备发送的第二排序信息以及当前待发送消息的关键信息。所述第二排序信息是当前主节点和其他副节点都接收到当前待发送消息后,当前主节点发送的当前待发送消息对应的排序信息。若根据所述关键信息确定主节点和本地中的当前待发送消息一致,则向所述当前主节点发送第二成功同步消息。接收主节点根据所述第二成功同步消息返回的第二推送报文。响应于所述第二推送报文,根据所述第二排序信息依次向目的终端发送所述当前待发送消息。通过上述方式,实现多个节点之间的同步消息推送。
149.如图10本申请提供了一种主节点的切换装置10,请参见图10,图10示出了本申请提供的一种主节点的切换装置的示意图,如图10所示一种主节点的切换装置可以是第一切换装置、第二切换装置或第三切换装置:
150.第一切换装置用于实现权利要求1至3的步骤,第二切换装置用于实现4至5的步骤,第三切换装置用于实现6至8的步骤。
151.其中,第一切换装置包括:
152.第一接收组件101,用于接收仲裁节点发送的仲裁请求;所述仲裁请求是仲裁节点在检测到历史主节点退出后,向多个副节点发送的请求;
153.第一发送组件102,用于根据所述仲裁请求,向所述仲裁节点发送当前竞选请求;所述当前竞选请求用于竞选当前主节点;
154.第二接收组件103,用于接收所述仲裁节点根据所述当前竞选请求返回的第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点;
155.第一同步组件104,用于向所述其他副节点发送通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述其他副节点是指所有副节点中除了所述第一副节点以外的副节点。
156.第二切换装置包括:
157.第二发送组件105,用于当检测到历史主节点退出后,向多个副节点发送的仲裁请求;
158.第三接收组件106,用于接收所述多个副节点根据所述仲裁请求返回的当前竞选请求;
159.选择组件107,用于根据预设条件在所述多个副节点中选择当前主节点;所述预设条件包括分布式锁;
160.第三发送组件108,用于向所述当前主节点发送第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点。
161.第三切换装置包括:
162.第二同步组件109,用于接收当前主设备发送的通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述通知报文是其他副节点与第一副节点通过仲裁节点共同竞争主节点后,第一副节点成功竞选为当前主节点后发送的报文;
163.确认组件100,用于根据所述通知报文,确定第一副节点为当前主节点。
164.本申请提供的一种主节点的切换装置,仅需副节点与仲裁节点交互,即可竞选当前主节点,并在选举成功后,通知其他副节点,以完成主节点切换的整个流程,避免了传统技术中不同副节点之间的繁杂交互,提高了切换主节点的效率。
165.图11是本发明一实施例提供的一种终端设备的示意图。终端设备可以是第一设备、第二设备或第三设备中的任意一个设备。如图11所示,该实施例的一种终端设备11包括:处理器111、存储器112以及存储在所述存储器112中并可在所述处理器111上运行的计算机程序113,例如一种主节点的切换程序。所述处理器111执行所述计算机程序113时实现上述各个一种主节点的切换方法实施例中的步骤,例如图2所示的步骤201至步骤204,或图5所示的步骤501至步骤504,或图7所示的步骤701至步骤702(第一设备对应于图2所示的步骤201至步骤204,第二设备对应于图5所示的步骤501至步骤504,第三设备对应于图7所示的步骤701至步骤702),所述处理器111执行所述计算机程序113时实现上述各装置实施例中各组件的功能,例如图10所示组件101至组件104、组件105至组件108或组件109至组件100的功能(第一设备对应于组件101至组件104,第二设备对应于组件105至组件108,第三设备对应于组件109至组件100)。
166.示例性的,所述计算机程序113可以被分割成一个或多个组件,所述一个或者多个
组件被存储在所述存储器112中,并由所述处理器111执行,以完成本发明。所述一个或多个组件可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序113在所述一种终端设备11中的执行过程。例如,所述计算机程序113可以被分割成获取组件和计算组件各组件具体功能如下:
167.第一接收组件,用于接收仲裁节点发送的仲裁请求;所述仲裁请求是仲裁节点在检测到历史主节点退出后,向多个副节点发送的请求;
168.第一发送组件,用于根据所述仲裁请求,向所述仲裁节点发送当前竞选请求;所述当前竞选请求用于竞选当前主节点;
169.第二接收组件,用于接收所述仲裁节点根据所述当前竞选请求返回的第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点;
170.第一同步组件,用于向所述其他副节点发送通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述其他副节点是指所有副节点中除了所述第一副节点以外的副节点。
171.或,
172.第二发送组件,用于当检测到历史主节点退出后,向多个副节点发送的仲裁请求;
173.第三接收组件,用于接收所述多个副节点根据所述仲裁请求返回的当前竞选请求;
174.选择组件,用于根据预设条件在所述多个副节点中选择当前主节点;所述预设条件包括分布式锁;
175.第三发送组件,用于向所述当前主节点发送第一回复报文;第一回复报文用于表示所述第一副节点成为当前主节点。
176.或,
177.第二同步组件,用于接收当前主设备发送的通知报文;所述通知报文用于表示所述第一幅节点为当前主节点;所述通知报文是其他副节点与第一副节点通过仲裁节点共同竞争主节点后,第一副节点成功竞选为当前主节点后发送的报文;
178.确认组件,用于根据所述通知报文,确定第一副节点为当前主节点。
179.所述一种终端设备可包括,但不仅限于,处理器111、存储器112以及存储在所述存储器112中并可在所述处理器111上运行的计算机程序113。本领域技术人员可以理解,图11仅仅是一种终端设备11的示例,并不构成对一种终端设备11的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述一种终端设备还可以包括输入输出设备、网络接入设备、总线等。
180.所述处理器111可以是中央处理组件(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
181.所述存储器112可以是所述一种终端设备11的内部存储组件,例如一种终端设备11的硬盘或内存。所述存储器112也可以是所述一种终端设备11的外部存储设备,例如所述
一种终端设备11上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,所述存储器112还可以既包括所述一种终端设备11的内部存储组件也包括外部存储设备。所述存储器112用于存储所述计算机程序以及所述一种终端设备所需的其他程序和数据。所述存储器112还可以用于暂时地存储已经输出或者将要输出的数据。
182.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
183.需要说明的是,上述装置/组件之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
184.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能组件、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能组件、模块完成,即将所述装置的内部结构划分成不同的功能组件或模块,以完成以上描述的全部或者部分功能。实施例中的各功能组件、模块可以集成在一个处理组件中,也可以是各个组件单独物理存在,也可以两个或两个以上组件集成在一个组件中,上述集成的组件既可以采用硬件的形式实现,也可以采用软件功能组件的形式实现。另外,各功能组件、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中组件、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
185.本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
186.本申请实施例提供了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时实现可实现上述各个方法实施例中的步骤。
187.所述集成的组件如果以软件功能组件的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(read

only memory,rom)、随机存取存储器(random access memory,ram)、电载波信号、电信信号以及软件分发介质。例如u盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
188.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
189.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的组件及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟
以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
190.在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或组件的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个组件或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或组件的间接耦合或通讯连接,可以是电性,机械或其它的形式。
191.所述作为分离部件说明的组件可以是或者也可以不是物理上分开的,作为组件显示的部件可以是或者也可以不是物理组件,即可以位于一个地方,或者也可以分布到多个网络组件上。
192.应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
193.还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
194.如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于监测到”。类似地,短语“如果确定”或“如果监测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦监测到[所描述条件或事件]”或“响应于监测到[所描述条件或事件]”。
[0195]
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0196]
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0197]
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1