发明内容
针对相关技术中集群管理系统采用一个管理进程和多个从进程,一旦管理进程失效,整个集群管理系统将都不能工作的问题而提出本发明,为此,本发明的主要目的在于提供一种集群管理系统及方法,以解决上述问题。
为了实现上述目的,根据本发明的一个方面,提供了一种集群管理系统。
根据本发明的集群管理系统包括:存储模块,用于保存多个进程的进程标识和多个进程的通讯地址;多个集群管理模块,与多个进程一一对应,其中,多个集群管理模块中的每个集群管理模块均用于从存储模块获取多个进程中除自身对应的进程之外的其它进程的通讯地址,并使用其它进程的通讯地址获取其它进程包含的服务;多个服务管理模块,与多个集群管理模块一一对应,其中,多个服务管理模块中的每个服务管理模块均用于从自身对应的集群管理模块获取其它进程包含的服务,并用于调用其它进程包含的服务。
进一步地,上述集群管理系统还包括:多个监听模块,与多个服务管理模块一一对应,用于记录自身对应的服务管理模块获取的其它进程包含的服务的可用信息,其中,可用信息用于指示服务可用或者不可用;多个服务管理模块中的每个服务管理模块还用于接收来自自身对应的监听模块的可用信息,并用于根据可用信息,调用其它进程包含的服务。
进一步地,上述集群管理系统还包括:多个定时器,与多个集群管理模块一一对应;多个集群管理模块中的每个集群管理模块还用于当自身对应的定时器到时,向多个集群管理模块中除自身之外的其它集群管理模块发送检测消息,其中,检测消息用于检测自身与其它集群管理模块的连接关系;以及多个集群管理模块中的每个集群管理模块还用于当检测到没有接收到来自其它集群管理模块中的一个或多个集群管理模块的响应消息时,删除一个或多个集群管理模块对应的进程。
进一步地,多个集群管理模块中的每个集群管理模块还用于向存储模块写入自身对应的进程的通讯地址。
进一步地,上述集群管理系统还包括:判断模块,用于判断存储模块是否已经保存有多个进程中的一个或多个进程的进程标识;更新模块,用于在判断结果为是时,更新一个或多个进程的通讯地址,其中,通讯地址包括以下至少之一:互联网协议IP地址、监听端口信息。
进一步地,多个集群管理模块之间通过UDP进行通讯。
进一步地,多个集群管理模块中的每个集群管理模块还用于管理自身对应的集群管理模块对应的进程包含的服务。
为了实现上述目的,根据本发明的另一个方面,提供了一种集群管理方法。
根据本发明的集群管理方法包括:集群管理模块从存储模块获取多个进程中除自身对应的进程之外的其它进程的通讯地址;集群管理模块使用其它进程的通讯地址获取其它进程包含的服务,并发送给自身对应的服务管理模块;服务管理模块调用其它进程包含的服务。
进一步地,在服务管理模块调用其它进程包含的服务之前,还包括:监听模块记录自身对应的服务管理模块获取的其它进程包含的服务的可用信息,其中,可用信息用于指示服务可用或者不可用;监听模块向服务管理模块发送可用信息;服务管理模块根据可用信息,执行调用其它进程包含的服务的操作。
进一步地,在集群管理模块从存储模块获取多个进程中除自身对应的进程之外的其它进程的通讯地址之前,还包括:集群管理模块当自身对应的定时器到时,向多个集群管理模块中除自身之外的其它集群管理模块发送检测消息,其中,检测消息用于检测自身与其它集群管理模块的连接关系;集群管理模块当检测到没有接收到来自其它集群管理模块中的一个或多个集群管理模块的响应消息时,删除一个或多个集群管理模块对应的进程。
进一步地,在集群管理模块从存储模块获取多个进程中除自身对应的进程之外的其它进程的通讯地址之前,还包括:集群管理模块向存储模块写入自身对应的进程的通讯地址。
通过本发明,采用集群的分布式设计,解决了相关技术中集群管理系统采用一个管理进程和多个从进程,一旦管理进程失效,整个集群管理系统将都不能工作的问题,保证了服务的正常使用,提高了网管的管理能力。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
根据本发明的实施例,提供了一种集群管理系统。图2是根据本发明实施例的集群管理系统的结构框图,包括存储模块22,集群管理模块24和服务管理模块26。下面对其结构进行详细描述。
存储模块22,用于保存多个进程的进程标识和多个进程的通讯地址。
多个集群管理模块24,连接至存储模块22,与多个进程一一对应,其中,多个集群管理模块24中的每个集群管理模块24均用于从存储模块22获取多个进程中除自身对应的进程之外的其它进程的通讯地址,并使用其它进程的通讯地址获取其它进程包含的服务。
多个服务管理模块26,与多个集群管理模块24一一对应,并分别连接至其对应的集群管理模块24,其中,多个服务管理模块26中的每个服务管理模块26均用于管理自身对应的集群管理模块24对应的进程包含的服务,并用于从自身对应的集群管理模块24获取其它进程包含的服务,并用于调用其它进程包含的服务。
相关技术中,集群管理系统采用一个管理进程和多个从进程,这样,一旦管理进程失效,整个集群管理系统将都不能工作。本发明实施例中,采用集群的分布式设计,每个进程可以通过集群管理模块24获取其它进程包含的服务,从而当某个进程失效时,可以选择存在该服务的其它进程,然后,通过调用该其它进程中的该服务,可以保证该服务的正常使用。
需要说明的是,上述存储模块22可以为数据库。
需要说明的是,对于上述服务管理模块26用于管理自身对应的集群管理模块24对应的进程包含的服务,其管理方式可以参考相关技术中管理进程和多个从进程的管理方式。
需要说明的是,为提高负荷,同一个服务在不同进程可能都存在,当有命令发到服务时,由服务管理模块决定发给哪个进程处理。
优选地,上述集群管理系统还包括:多个监听模块28,与多个服务管理模块26一一对应,用于记录自身对应的服务管理模块26获取的其它进程包含的服务的可用信息,其中,可用信息用于指示服务可用或者不可用;多个服务管理模块26中的每个服务管理模块26还用于接收来自自身对应的监听模块28的可用信息,并用于根据可用信息,调用其它进程包含的服务。
本优选实施例中,监听模块28记录了其它进程包含的服务的可用信息,可以为服务管理模块26调用的操作提供支持,以便服务管理模块26选择存在某一服务的其它进程,然后,通过调用该其它进程中的该服务,保证该服务的正常使用。
优选地,上述集群管理系统还包括:多个定时器,与多个集群管理模块24一一对应;多个集群管理模块24中的每个集群管理模块24还用于当自身对应的定时器到时,向多个集群管理模块24中除自身之外的其它集群管理模块24发送检测消息,其中,检测消息用于检测自身与其它集群管理模块24的连接关系;以及多个集群管理模块24中的每个集群管理模块24还用于当检测到没有接收到来自其它集群管理模块24中的一个或多个集群管理模块24的响应消息时,删除一个或多个集群管理模块24对应的进程。
本优选实施例中,集群管理模块24之间通过检测消息进行相互的通讯检测,以便准确删除通讯存在问题的一个或多个集群管理模块24对应的进程。同时,定时器可以用于控制集群管理模块24发送检测消息的频率,从而避免过度频繁的检测消息给通讯网络的冲击。
优选地,多个集群管理模块中的每个集群管理模块24还用于向存储模块22写入自身对应的进程的通讯地址。
本优选实施例中,多个集群管理模块24中的每个集群管理模块24将自身对应的进程的通讯地址写入存储模块22,以便其它集群管理模块24进行获取,有利于各个集群管理模块24对其对应的进程包含的服务进行通讯,实现两两容灾。
优选地,上述集群管理系统还包括判断模块,用于判断所述存储模块是否已经保存有多个进程中的一个或多个进程的进程标识;更新模块,用于在判断结果为是时,更新一个或多个进程的通讯地址,其中,通讯地址包括以下至少之一:互联网协议(InternetProtoco1,简称为IP)地址、监听端口信息。
优选地,多个集群管理模块之间通过用户数据协议(User DateProtocol,简称为UDP)进行通讯。
本优选实施例中,采用无连接的UDP通讯协议,可以减少资源占用。
优选地,多个集群管理模块中的每个集群管理模块还用于管理自身对应的集群管理模块对应的进程包含的服务。
本发明还提供了一个优选实施例,结合了上述多个优选实施例的技术方案,下面结合图3来详细描述。
图3是根据本发明优选实施例的集群管理系统的部署结构的示意图,如图3所示,网管进程A,B,C都连接到同一个数据库,每个网管进程中都包含有集群管理模块,服务管理模块,以及若干服务。每个进程都会监听一个UDP端口,并写入到同一个数据库中。集群管理模块从数据库中获取另外两个进程的IP和端口后,A,B,C相互通讯,获取所有的服务信息,并传给服务管理模块。服务管理模块通知监听模块,现在有a1,a2,b1,b2这些服务可用。当要调用某个服务时,以进程A为例,假定要调用服务b1,由于b1在进程B和C中都提供,服务管理模块按照一定策略调用B或者C中的一个。如有是调用服务b2,那么只能调用到进程B。
进程A,B,C之间还通过集群管理模块定时发送定时检查,如果某个进程意外退出,由服务管理模块将这个进程包含的服务去掉,并通知监听模块某些服务不可用。假定B意外退出,那么要通知监听模块b2不可用,但是b1仍然可用,因为b1在C进程中还存在,对b1的调用可以到C进程。
根据本发明的实施例,还提供了一种集群管理方法,该集群管理方法可以基于上述集群管理系统而实现。图4是根据本发明实施例的集群管理方法的流程图,包括如下的步骤S402至步骤S406。
步骤S402,集群管理模块24从存储模块22获取多个进程中除自身对应的进程之外的其它进程的通讯地址。
步骤S404,集群管理模块24使用其它进程的通讯地址获取其它进程包含的服务,并发送给自身对应的服务管理模块26。
步骤S406,服务管理模块26调用其它进程包含的服务。
相关技术中,集群管理系统采用一个管理进程和多个从进程,这样,一旦管理进程失效,整个集群管理系统将都不能工作。本发明实施例中,采用集群的分布式设计,每个进程可以通过集群管理模块24获取其它进程包含的服务,从而当某个进程失效时,可以选择存在该服务的其它进程,然后,通过调用该其它进程中的该服务,可以保证该服务的正常使用。
需要说明的是,上述存储模块22可以为数据库。
需要说明的是,对于上述服务管理模块26用于管理自身对应的集群管理模块24对应的进程包含的服务,其管理方式可以参考相关技术中管理进程和多个从进程的管理方式。
需要说明的是,上述服务管理模块26还可以管理自身对应的集群管理模块对应的进程包含的服务。
优选地,在服务管理模块26调用其它进程包含的服务之前,监听模块28记录自身对应的服务管理模块26获取的其它进程包含的服务的可用信息,其中,可用信息用于指示服务可用或者不可用;监听模块28向服务管理模块26发送可用信息;服务管理模块26根据可用信息,执行调用其它进程包含的服务的操作。
本优选实施例中,监听模块28记录了其它进程包含的服务的可用信息,可以为服务管理模块26调用的操作提供支持,以便服务管理模块26选择存在某一服务的其它进程,然后,通过调用该其它进程中的该服务,保证该服务的正常使用。
优选地,在集群管理模块24从存储模块22获取多个进程中除自身对应的进程之外的其它进程的通讯地址之前,集群管理模块24当自身对应的定时器到时,向多个集群管理模块24中除自身之外的其它集群管理模块24发送检测消息,其中,检测消息用于检测自身与其它集群管理模块24的连接关系;集群管理模块24当检测到没有接收到来自其它集群管理模块24中的一个或多个集群管理模块24的响应消息时,删除一个或多个集群管理模块24对应的进程。
本优选实施例中,集群管理模块24之间通过检测消息进行相互的通讯检测,以便准确删除通讯存在问题的一个或多个集群管理模块24对应的进程。同时,定时器可以用于控制集群管理模块24发送检测消息的频率,从而避免过度频繁的检测消息给通讯网络的冲击。
优选地,在集群管理模块24从存储模块22获取多个进程中除自身对应的进程之外的其它进程的通讯地址之前,集群管理模块24向存储模块22写入自身对应的进程的通讯地址。
本优选实施例中,多个集群管理模块24中的每个集群管理模块24将自身对应的进程的通讯地址写入存储模块22,以便其它集群管理模块24进行获取,有利于各个集群管理模块24对其对应的进程包含的服务进行通讯,实现两两容灾。
优选地,集群标识是安装的时候生成,属于同一个集群的多个进程共同提供一套网管对外的服务,它们的集群标识相同。
优选地,进程标识是安装时候生成,每个进程的标识都不一样。进程可能是重启,本进程的信息已经存在存储模块用,用进程标识判断本进程信息是否已经存在,如果存在则更新一下本进程的IP,端口信息。
本发明还提供了一个优选实施例,结合了上述多个优选实施例的技术方案,下面结合图5来详细描述。
图5是根据本发明优选实施例的集群管理方法的交互流程图,包括如下的步骤S502至步骤S516。
步骤S502,A进程启动后查询数据库,用集群标识和进程标识判断A进程信息是否存在。
其中,进程标识,集群标识都是在安装的时候生成,进程标识对于每个进程都不同,集群标识在同一个集群内相同。
如果存在则更新进程的通讯IP和进程的监听端口信息,如果不存在则将A进程的集群标识、进程标识、进程的通讯IP和进程的监听端口信息写入数据库,并获取本集群的其它进程的信息。
具体地,数据库表可按照下表1进行设计,以便A进程的写入。
表1用于写入集群标识、进程标识、进程的通讯IP和进程的监听端口的数据库的示意表
CLUSTERID |
集群标识(字符串) |
NODEID |
进程标识(字符串) |
IP |
进程的通讯IP(字符串) |
PORT |
进程的监听端口(数值) |
步骤S504,A进程向本集群内其它进程发送请求消息。
需要说明的是,本优选实施例中假定是A进程向B进程发送UDP请求消息。
如果采用TCP连接,进程两两建立连接,连接总数为n*(n-1),在进程数比较多的情况下连接总数太多,会消耗很多系统资源,所以这里无连接的UDP方式传送命令。UDP带来的问题是消息可能在传送中丢失,解决方式是重传数据包,即发送一个包后等待对方确认才发送下一包,若到一定时间仍然未收到确认,重传这一包数据,若重传几次仍然没有收到确认,认为对方不通,放弃发送。下面的命令都是假定UDP传送,其处理方式相同,不再重述。
步骤S506,如果B进程正常,那么B进程会发送一个响应消息,该响应消息的内容为B进程包含的服务信息。
步骤S508,A进程向B进程发送自身包含的服务信息。
步骤S510,A进程通知监听模块,B进程中的这些服务可用。
步骤S512,B进程通知监听模块,A进程中的这些服务可用。
步骤S514,A进程向B进程发送定时检查命令。
步骤S516,B进程向A进程返回定时检查响应。
如果A进程连续几次发送定时检查命令都没有收到定时检查响应,则A进程先判定B进程已经意外退出,然后从服务管理模块将B进程包含的服务删除,并通知监听模块这些B进程包含的服务不可用。
需要说明的是,在上述A进程连续几次发送定时检查命令都没有收到定时检查响应的情况下,还可能是A进程和B进程之间的网络断开。对于这种情况,B进程也会出现连续几次发送定时检查命令都没有收到来自A进程的定时检查响应的情况,则B进程也判定A进程不可用。此时,A进程和B进程事实上都存在,都可能单独提供部分服务功能,但彼此之间孤立,不能互相调用。
需要说明的是,本优选实施例仅仅描述了两个进程之间的交互情况。实际应用中,多个进程之间的交互情况都可以参照上述两个进程之间的交互情况,从而实现多个进程共同完成整个集群的管理。
因此,本优选实施例可以实现如下的技术效果:
1)进程间两两互相通讯,任一进程出现问题,其它进程还可以正常工作,集群中的其它服务还可以使用。
2)可以在运行期间,加入新进程,做到动态扩容。可以增加新的服务功能,也可以增加与现有相同的服务,对现有服务分担负荷。
3)服务变为可用和不可用,上层应用都能得到通知,因此上层应用可以做处理,如重传服务不可用期间数据,以保证数据完整性。
4)集群内进程间通讯采用UDP通讯,与另外一种采用广播消息通讯的集群技术相比,广播消息要求各个机器在一个子网内,而本方案不受限制。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
综上所述,根据本发明的上述实施例,提供了一种集群管理系统及方法,采用集群的分布式设计,解决了相关技术中集群管理系统采用一个管理进程和多个从进程,一旦管理进程失效,整个集群管理系统将都不能工作的问题,保证了服务的正常使用,提高了网管的管理能力。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。