一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种QPID集群控制方法及系统与流程

2022-02-21 07:30:27 来源:中国专利 TAG:

一种qpid集群控制方法及系统
技术领域
1.本发明属于qpid集群系统技术领域,具体涉及一种qpid集群控制方法。本发明还涉及一种qpid集群控制系统。


背景技术:

2.amqp是advanced message queuing protocol,即高级消息队列协议。amqp是一个标准化的消息中间件协议。它的目标是让不同语言、不同系统的应用互相通信,并提供一个简单统一的模型和编程接口。这样,人们就可以采用各种语言和平台来实现自己的应用,当需要和其他系统通信时,只要采用amqp协议即可。
3.qpid是apache foundation的一个开源项目,是一个amqp实现。它提供了c 和java两个版本的broker,并支持多种语言的客户端,它还包括一个配置工具集。除了完全实现了amqp的基本功能之外,qpid还采用集群方案并提供了安全认证。
4.常规的qpid的集群方案有:1)rhcs是red hat cluster suite(红帽子集群套件)方案;2)corosync pacemaker方案。两种方案原理类似,都是通过管理qpidd-primary服务,始终保证qpidd-primary在集群的一个节点上运行,实现qpid集群运行方案。其中,运行qpidd-primary的节点上的qpid服务状态为active,其余非active。
5.这两种方案都使用了成熟技术实现了qpid集群方案,但对于某些应用场景,仍然存在一些缺陷,比如在大型航天测控软件系统中应用qpid集群方案实现分布式系统的消息通信,这样的应用场景需要高度自动化、高可靠性、易维护。但是无论是rhcs还是corosync pacemaker,维护都比较复杂,不易维护;而且qpidd-primary服务不能保证100%切换成功,可能导致qpid集群无active节点,不能正常工作,可靠性大打折扣,影响系统的自动化运行。有些航天测控软件系统采用双节点机制,无论是rhcs还是corosync pacemaker方案,都使用了投票机制,使用投票机制的集群系统至少需要三个节点,对于只有两个节点的集群,可能存在“脑裂”现象,不能正常使用。


技术实现要素:

6.本发明的目的在于提供一种qpid集群控制方法,解决了现有qpid集群方案适用性不强的问题。
7.本发明的另一目的在于提供一种qpid集群控制系统。
8.本发明所采用的第一种技术方案是:一种qpid集群控制方法,包括以下步骤:
9.步骤1、获取本节点qpid服务状态,状态包括是否在运行以及运行时的状态,根据状态确定本节点qpid角色,并将角色状态写入分布式缓存;
10.步骤2、获取master节点状态,获取方式为从分布式缓存读取并判断其持续改变性;
11.步骤3、控制qpid服务,如果本节点qpid角色为master,且master状态中的节点标识与本节点一致,则不改变本节点qpid服务状态,并将master状态写入分布式缓存,否则将
本节点切换为slave;如果本节点qpid角色为slave,且没有master或master状态中节点标识与本节点一致,则将qpid角色切换为active;如果qpid角色为invalid,且master状态中的节点标识与本节点一致,则从分布式缓存将master节点状态删除。
12.本发明第一种技术方案的特点还在于,
13.步骤1中获取本节点qpid服务状态的方式为:判断qpid服务的pid文件是否存在,如果不存在则本节点qpid未运行,本节点qpid角色为invalid;否则,读取pid文件内容,获取qpid服务进程标识,通过进程标识获取/proc下的该进程目录是否存在,如果目录存在,则本节点qpid运行,否则本节点qpid未运行,则本节点qpid角色为invalid;若果本节点运行,通过“qpid-ha status”命令查询状态,如果状态为active,则本节点qpid角色为master,否则为slave。
14.步骤2中获取master节点状态的获取方式为:如果从分布式缓存获取master节点状态失败,或状态连续不改变,则认为master节点不存在。
15.步骤2中获取的master节点状态包括:节点标识、时间戳、运行计数以及连续运行时间;其中,节点标识为可唯一标识qpid节点的内容,运行计数为该master节点上一次被切换为master后的累加计数,连续运行时间为该master节点上一次被切换为master后的累计运行时间。
16.步骤3中将本节点切换为slave的方式为:读取qpid服务的pid文件内容,获取进程标识,kill该进程,删除pid文件。
17.将qpid角色切换为active的方式为:将master节点状态写到分布式缓存中,其中节点标识为本节点标识、时间戳为当前时间、运行计数为1、连续运行时间为0;执行状态切换为active的命令“qpid-ha promote
‑‑
cluster-manager”,并判断命令执行结果,如果执行不成功,或本节点qpid实际状态不为active,则从分布式缓存删除master节点状态,读取qpid服务的pid文件内容,获取进程标识,kill该进程,删除pid文件。
18.步骤3中将master状态写入分布式缓存,master状态中的节点标识为本节点标识、时间戳为当前时间、运行计数为上一次的计数加1、连续运行时间为本节点上一次被切换为master后的累计运行时间。
19.本发明所采用的第二种技术方案是:一种执行上述qpid集群控制方法的系统,包括不少于两个qpid集群节点,每个节点上有qpid服务和qpid监控服务;分布式缓存服务器;连接所有集群节点和分布式缓存服务器的网络。
20.本发明第二种技术方案的特点还在于,
21.qpid服务和qpid监控服务均以系统服务的方式运行,qpid监控服务为实现qpid集群控制方法的应用程序。
22.本发明的有益效果是:
23.1)本发明提出的系统,不需要rhcs或corosync pacemaker等专业集群管理套件,qpid服务和qpid监控服务均由操作系统的服务管理方式管理,不再需要额外的集群管理套件,安装维护简单,高效可靠,易维护;
24.2)本发明提出的系统,不使用投票机制,在只有两个节点的集群上,也可以稳定正常运行,扩充了qpid集群的适用范围;
25.3)本发明提出的系统,提高了容错机制,,规避了执行切换为active不成功的问
题,提高了可靠性。
附图说明
26.图1是本发明一种qpid集群控制系统的结构示意图;
27.图2是本发明一种qpid集群控制方法的流程示意图;
28.图3是本发明一种qpid集群控制方法中获取本节点qpid服务状态的流程示意图;
29.图4是本发明一种qpid集群控制方法中获取master节点状态的流程示意图;
30.图5是本发明一种qpid集群控制方法中根据本节点角色和master状态控制qpid服务的流程示意图。
具体实施方式
31.下面结合附图以及具体实施方式对本发明进行详细说明。
32.本发明提供了一种qpid集群控制系统100,如图1所示,包括节点1(101)、节点2(102)、节点3(103),节点1、节点2、节点3通过网络交换机104相连,节点1上运行qpid服务1(105)、qpid监控服务1(106),节点2上运行redis服务器(107),节点3上运行qpid服务2(108)、qpid监控服务2(109)。qpid服务1、qpid服务2、qpid监控服务1、qpid监控服务2以系统服务systemd的方式运行管理。redis服务器是系统所用的分布式缓存服务器。节点1和节点3均运行linux操作系统。qpid监控服务1、qpid监控服务2执行本技术实施例公开的qpid集群控制方法。
33.对于图1所示的实施例,只是示例性的,具体实施时不限于节点数量,分布式缓存服务器不限于redis,redis服务器运行的节点能与qpid服务所在节点相同。
34.本发明还提供了一种qpid集群控制方法200,如图2所示,步骤如下:
35.步骤201:获取本节点qpid服务状态,所述状态包括是否在运行、以及运行时的状态,根据状态确定本节点qpid角色,并将角色状态写入分布式缓存,转步骤202;
36.获取本节点qpid服务状态的详细步骤见图3及其相关描述。
37.步骤202:获取master节点状态,获取方式为从分布式缓存读取并判断其持续改变性,转步骤203;
38.本步骤的详细步骤见图4及其相关描述。
39.步骤203:根据本节点角色和master状态进行角色处理,转步骤201。
40.本步骤的详细描述见图5及其相关描述。
41.master节点指的是qpid服务状态为active的节点,slave节点是qpid服务状态为非active的节点。
42.需要说明的是,流程200是循环执行的,qpid监控服务实现是以服务形式存在的进程。
43.图3给出了根据本发明一种qpid集群控制方法获取本节点qpid服务状态的流程300。流程如下:
44.步骤301:判断qpid服务进程的pid文件/var/run/qpidd.pid是否存在,不存在转步骤302,存在转步骤303;
45.步骤302:置本节点qpid角色为invalid,返回;
46.步骤303:读取qpid服务进程的pid文件/var/run/qpidd.pid中的pid值,转步骤304;
47.步骤304:通过pid获取/proc下的qpid服务进程目录是否存在,不存在转步骤302,存在转步骤305;
48.步骤305:执行“qpid-ha status”命令获取qpid服务状态,转步骤306;
49.步骤306:判断qpid服务状态是否为active,是active转步骤307,不是active转步骤308;
50.步骤307:置本节点qpid角色为master,返回;
51.步骤308:置本节点qpid角色为slave,返回。
52.需要说明的是,流程300是步骤201的执行过程,/var/run/qpidd.pid是可配置的,可以根据实际情况设置。
53.图4是根据本发明一种qpid集群控制方法获取获取master节点状态的流程400。流程如下:
54.步骤401:判断redis中键qpidmasternode是否存在,不存在转步骤402,存在转步骤403;
55.步骤402:置master状态为不存在,返回;
56.步骤403:从redis中读取键qpidmasternode的值,转步骤404;
57.步骤404:值无效或读取失败,转步骤402,否则转步骤405;
58.步骤405:计算读取值的hash值,转步骤406;
59.步骤406:判断计算所得hash值是否与上一次读取的值计算所得hash值一致,一致转步骤407,否则转步骤408;
60.步骤407:master状态不变计数加1,转步骤409;
61.步骤408:master状态不变计数为0,返回;
62.步骤409:master状态不变计数是否大于5,如果大于5,则转步骤402,否则返回。
63.需要说明的是,流程400的步骤是202的执行过程。qpidmasternode是表示master状态的redis键。master状态不变计数是表示master状态连续变化的参数,如果master状态一直变化,表示master存在,则置其值为0;如果连续5次读取的值不变化,则认为已经不存在master。其中master状态内容包括:节点标识、时间戳、运行计数、连续运行时间。其中节点标识为可唯一标识qpid节点的内容,运行计数为该master节点上一次被切换为master后的累加计数,连续运行时间为该master节点上一次被切换为master后的累计运行时间。
64.图5是根据本发明一种qpid集群控制方法根据本节点角色和master状态控制qpid服务流程500,流程如下:
65.步骤501:判断本节点qpid角色是否为master,如果为master转步骤502,否则转步骤505;
66.步骤502:判断master状态中的节点标识是否与本节点标识一致,如果一致转步骤503,否则转步骤504;
67.步骤503:将master状态写入redis,返回;
68.步骤504:读取qpid服务的pid文件内容,获取进程标识,kill该进程,删除pid文件,返回;
69.步骤505:判断本节点qpid角色是否为slave,如果为slave转步骤506,否则转步骤508;
70.步骤506:判断master状态中的节点标识是否与本节点标识一致,如果一致转步骤507,否则返回;
71.步骤507:将master节点状态写到redis中,其中节点标识为本节点标识、时间戳为当前时间、运行计数为1、连续运行时间为0;执行状态切换为active的命令“qpid-ha promote
‑‑
cluster-manager”,转步骤510;
72.步骤508:判断master状态中的节点标识是否与本节点标识一致,如果一致转步骤509,否则返回;
73.步骤509:从redis中删除键qpidmasternode,返回;
74.步骤510:判断步骤507中的命令“qpid-ha promote
‑‑
cluster-manager”是否执行成功,成功转步骤511,否则转步骤512;
75.步骤511:判断本节点qpid实际状态是否为active,是active则返回,不是active则转步骤512;
76.步骤512:从redis删除qpidmasternode,读取qpid服务pid文件内容,获取进程标识,kill该进程,删除pid文件,返回。
77.步骤504和步骤512中的实际上是相当于重启qpid服务的过程,因为qpid服务通过service及systemd管理时,通过kill命令停止其执行后,操作系统会自动重启该服务。
78.对于步骤503中的将master状态写入redis的过程,写入的内容为:节点标识为本节点标识、时间戳为当前时间、运行计数为上一次的计数加1、连续运行时间为本节点上一次被切换为master后的累计运行时间。注意该步骤和步骤507中的将master节点状态写到redis中的过程的不同。
79.流程500的执行过程是步骤203的处理过程。
80.根据本技术的实施例,上文参考实施例图和流程图描述过程及实施例可以被实现为计算机软件部件。本技术的全部或部分可被应用为计算机程序产品的一部分,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本技术的方法或技术方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献