CN104731648A - 一种分布式系统中心节点构建、提交、监控方法及装置 - Google Patents
一种分布式系统中心节点构建、提交、监控方法及装置 Download PDFInfo
- Publication number
- CN104731648A CN104731648A CN201510150055.5A CN201510150055A CN104731648A CN 104731648 A CN104731648 A CN 104731648A CN 201510150055 A CN201510150055 A CN 201510150055A CN 104731648 A CN104731648 A CN 104731648A
- Authority
- CN
- China
- Prior art keywords
- message
- node
- election
- centroid
- distributed system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本申请实施例公开了一种分布式系统中心节点的构建方法。该方法包括:通过发送选举消息启动选举过程,接收到选举消息的节点进行选举轮次和消息请求号的比较,使用大的选举轮次和消息请求号进行更新;根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点设置为中心节点。本申请实施例还公开了一种基于分布式系统中心节点的数据请求提交方法、监控方法以及各自对应的装置。本申请实施例构建的中心节点更加稳定。
Description
本申请是申请日为2012年9月28日、申请号为201210371063.9、发明名称为“一种分布式系统中心节点构建、提交、监控方法及装置”的中国专利申请的分案申请。
技术领域
本申请涉及分布式系统技术领域,特别是涉及一种分布式系统中心节点构建方法、基于分布式系统中心节点的数据提交方法和监控方法,及其各自对应的装置。
背景技术
分布式系统(Distributed Systems)是支持分布式处理的软件系统,其主要应用是在由通信网络互连的多处理机体系结构上执行任务。分布式系统根据具有使用场景的不同,通常包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分布式文件系统和分布式数据库系统等类别。分布式系统与集中式系统相比,其稳定性较高,具有数据自动恢复能力和良好的抗单点崩溃的能力。但是,分布式系统的这些能力很大程度上取决于其中心节点的性能,尤其在网络和硬件环境不稳定的情况下,中心节点关乎整个分布式系统的正常运行。没有中心节点或中心节点的能力较弱,均不能满足现实中对分布式系统的要求。
发明内容
为解决上述技术问题,本申请实施例提供一种构建分布式中心节点的方法、基于该分布式系统中心节点的监控方法及其对应装置,以增强分布式系统中心节点的稳定性,进而提高整个分布式系统的性能。
本申请实施例提供的分布式系统中心节点的构建方法包括:
节点向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;
判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次;如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;
节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点确定为中心节点。
优选地,所述节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点确定为中心节点包括:
将发送推荐消息的节点的地址和发送推荐消息的节点推荐的中心节点的地址放入统计表,统计各被推荐作为中心节点的节点的被推荐数,将被推荐数达到预设阈值的节点确定中心节点。
优选地,选举消息通过节点的选举线程发送;接收选举消息的节点通过接收线程接收选举消息,发送推荐消息的节点通过发送线程发送推荐消息。
本申请实施例还提供了一种基于分布式系统中心节点的数据请求提交方法。该方法包括:
将非中心节点接收到的数据请求消息转发给中心节点,按照前述构建中心节点的方法构建得到;
将中心节点接收到的数据请求消息发送给分布式系统中的非中心节点;
比较非中心节点接收到的数据请求消息的ID号与非中心节点自身的ID号之间的大小,如果数据请求消息的ID号大,则向中心节点返回确认消息;
如果中心节点接收到的确认消息达到预设阈值,则将数据请求消息的数据同步到分布式系统的所有非中心节点。
本申请实施例还提供了一种基于分布式系统中心节点的监控方法。该方法包括:
在分布式系统中注册监控节点,所述监控节点包含配置目录和状态目录;
在分布式系统中心节点接收到分布式系统中的节点发生变化的消息后,比较监控节点的配置目录和状态目录下的节点,如果节点存在于配置目录且不存在于状态目录,则发送监控报警,按照前述构建中心节点的方法构建得到。
优选地,所述方法还包括:
在分布式系统中注册上报数据目录,以便节点发生变化后在该上报数据目录下建立新的报警节点;
在分布式系统中心节点接收到分布式系统中的节点发生变化的消息后,获取上报数据目录下的节点,根据获取的上报目录下的节点发送监控报警。
优选地,所述方法还包括:
在分布式系统中注册分布式锁节点目录;
获取分布式锁节点目录下的节点;
判断分布式节点目录下的节点中节点号最小的节点,向节点号最小的节点分配分布式锁。
本申请实施例提供了一种分布式系统中心节点的构建装置。该装置包括:发送单元、第一判断单元、第二判断单元、更新单元、形成单元、统计单元和设置单元,其中:
所述发送单元,用于向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;
所述第一判断单元,用于判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则触发更新单元,如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则触发第二判断单元;
所述第二判断单元,用于判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则触发更新单元;
所述更新单元,用于在选举消息的选举轮次大时,使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次,在选举消息的消息请求号大时,使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;
所述形成单元,用于根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;
所述推荐单元,用于统计推荐消息中对中心节点的推荐;
所述确定单元,用于将被推荐数达到预设阈值的节点确定为中心节点。
本申请实施例还提供了一种基于分布式系统中心节点的数据请求提交装置。该装置包括:转发单元、群发单元、第一比较单元、返回单元和同步单元,其中:
所述转发单元,用于将非中心节点接收到数据请求消息转发给中心节点,所述中心节点按照前述构建中心节点的方法构建得到;
所述群发单元,用于将中心节点接收到的数据请求消息发送给分布式系统中的非中心节点;
所述第一比较单元,用于比较非中心节点接收到的数据请求消息的ID号与非中心节点自身的ID号之间的大小,如果数据请求消息的ID号大,则触发返回单元;
所述返回单元,用于向中心节点返回确认消息;
所述同步单元,用于在中心节点接收到的确认消息达到预设阈值时,将数据请求消息的数据同步到分布式系统的所有非中心节点。
本申请实施例还提供了一种基于分布式系统中心节点的监控装置。该装置包括:注册单元、第二比较单元和监控报警单元,其中:
所述注册单元,用于在分布式系统中注册监控节点,所述监控节点包含配置目录和状态目录;
所述第二比较单元,用于在分布式系统中心节点接收到分布式系统中的节点发生变化的消息后比较监控节点的配置目录和状态目录下的节点,如果节点存在于配置目录且不存在于状态目录,则触发监控报警单元,所述中心节点按照前述构建中心节点的方法构建得到;
所述监控报警单元,用于发送监控报警。
本申请实施例将发送选举消息的节点与接收选举消息的节点的选举轮次和消息请求号大小进行比较,根据比较后的结果更新节点的选举轮次和消息请求号,更新后生成推荐消息,接收推荐消息的其他节点根据该推荐消息对被推荐作为中心节点的节点进行统计,并依据统计结果设置中心节点。与现有技术相比,本申请实施例构建的中心节点不会出现单点崩溃,在网络和硬件不稳定的情况下,更安全、更易用、更易管理。按照上述方式建立的中心节点可实现一系列的应用:通过本申请实施例构建的中心节点来接收数据请求时,由于每次数据提交均要经过预设数量的Zookeeper服务确认,较好地保证了多台Zookeeper之间的数据一致性;通过本申请实施例构建的中心节点来管理监控分布式系统,由于监控节点、监控节点以外的节点均可与Zookeeper服务进行交互,在节点状态发生变化时可发出监控提示,从而及时监控到分布式系统各节点的运行状态。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例一的分布式系统中心节点构建方法的流程图;
图2为本申请实施例二的基于分布式系统中心节点的数据请求提交方法流程图;
图3为本申请实施例三的基于分布式系统中心节点的监控方法的流程图;
图4为本申请实施例三的注册节点的类型的示意图;
图5为本申请实施例四的分布式系统中心节点的构建装置的组成框图;
图6为本申请实施例五的基于分布式系统中心节点的监控装置组成框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一
参见图1,该图示出了本申请实施例的分布式系统中心节点构建方法的流程。该实施例包括:
步骤S101:节点向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;
通过发送选举消息启动分布式系统的选举过程,以选择出中心节点(Leader)管理分布式系统。节点在受到某些触发后将向分布式系统发送选举消息启动选举过程,这里的触发包括但不限于:分布式系统的全部节点(比如Zookeeper server)刚启动,没有中心节点;分布式系统中出现新节点加入,该新节点处于初始化状态(Looking状态);分布式系统中现有的中心节点由于各种原因出现(Leader)失效等等。节点受到触发后,将通过节点的选举线程向分布式系统内的所有节点发送选举消息,以发起选举过程。
各节点通常具有至少三个类别的线程:一是选举线程,用于在分布式系统内的发起选举,并完成本节点的选举工作;二是发送线程,用于发送需要向其他节点推送的各类消息,比如通知消息、推荐消息等;三是接收线程,用于接收分布式系统内其他节点发送的各类消息。发送线程和接收线程在没有发起选举时处于阻塞状态,直到有消息到来时才解决阻塞状态并处理消息。需要说明的是:在实际应用过程中,根据分布式系统中的节点数量和消息交互量的不同,各个节点还可能设置发送队列和接收队列,发送线程发送的消息可能先送往发送队列,接收线程接收的消息也可能先进入到接收队列中,然后由节点从发送队列中读出消息完成发送操作或从接收队列中读出消息完成相关处理操作。
节点在受到触发由选举线程启动选举过程后,通过发送线程向分布式系统内的节点发送选举消息,该选举消息中包含有选举轮次和消息请求号。选举轮次(epoch)是每个节点记录的自身发起选举过程的次数,通常在选举过程发起之初自动增加1,在完成选举后又自动增加1;消息请求号(Zookeepertranstion id,Zookeeper事务ID)是选举过程中能否成为Leader的关键因素,它决定当前Server将自己的一票(推荐票)投给分布式系统中的哪一个节点。
步骤S102:判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则执行步骤S105;如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则执行步骤S103;
发起选举流程的节点将向分布式系统内的节点发送选举消息,该选举消息中包含有选举轮次和消息请求号。节点的选举轮次是上次选举后保留的选举次数(如果节点刚启动处于初始化状态时,选举轮次为1,以后每发起一次选举自身的选举轮次增加1),也就是说,每个节点维护有一个选举轮次值。接收到选举消息的节点将把自身的选举轮次与选举消息中携带的选举轮次进行比较,以判断哪个选举轮次是最新的选举轮次,从而对自身的选举轮次进行不同的处理。将接收到选举消息的节点与选举消息的选举轮次进行比较可能产生三种结果:一是前者大于后者,说明接收到选举消息的节点的选举轮次是最新的选举轮次,勿需进行任何操作处理;二是后者大于前者,说明接收到选举消息的节点维护的选举轮次是旧的选举轮次值,需要进行更新处理;三是两者相等,这种情况下还需要进行消息请求号的比较,以判断是否应当进行进一步的处理。
步骤S103:判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则进入步骤S104;如果否,则不进行任何处理,执行步骤S106;
在接收到选举消息的节点的选举轮次和选举消息中的选举轮次相等的情况下,还需要比较两者的消息请求号的大小。选举轮次相等,说明发送选举消息的节点和接收选举消息的节点处于同一轮选举过程中,进一步比较消息请求号才能确定谁将最有可能推荐为中心节点。将接收到选举消息的节点与选举消息的消息请求号进行比较可能产生两种结果:一是前者大于后者,这时不需要任何处理;一是前者小于后者,这时需要进行消息请求号的更新。
步骤S104:使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号,进入步骤S106;
步骤S105:使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次;
步骤S106:根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;
接收选举消息的节点完成前述的更新操作后,即可根据更新结果形成推荐消息,该推荐消息是接收选举消息的节点对中心节点的推荐。按照分布式系统的规则,通常将选举轮次最大、消息请求号最大的节点推荐为中心节点。
步骤S107:节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点确定为中心节点;
分布式系统内的节点将收到其他节点发送的推荐消息,根据该推荐消息可知道各节点对中心节点的推荐。具体实现时,接收到推荐消息的节点将会把发送推荐消息的节点的地址和发送推荐消息的节点推荐的中心节点的地址放入统计表,然后统计各被推荐作为中心节点的节点的被推荐数,将被推荐数达到预设阈值的节点确定中心节点。这里的预设阈值根据实际情况不同,可进行设定。通常情况采取“多数决”的方式完成投票统计,即被推荐为中心节点的节点获得(N/2+1)张票,即将被设定为中心节点,N为分布式系统包含的节点总个数。获得统计结果后,除确定出中心节点外,接收推荐消息的节点还据此设定自己的状态。在Zookeeper集群系统中,每个Server包括三种可能的状态:一是初始化状态(Looking状态),这是在Server刚启动或者分布式系统中的Leader失效后出现的状态;二是领导者状态(Leading状态),这是在选举完成后选出的中心节点的状态;三是跟随者状态(Following状态),这是分布式系统中选举中心节点后其他节点设定的自身的状态。
本申请实施例将发送选举消息的节点与接收选举消息的节点的选举轮次和消息请求号大小进行比较,根据比较后的结果更新节点的选举轮次和消息请求号,更新后生成新的通知消息,接收该通话消息的其他节点根据该消息和自身的情况来设置自身状态为中心节点或非中心节点。与现有技术相比,本申请实施例构建的中心节点不会出现单点崩溃,在网络和硬件不稳定的情况下,更安全、更易用、更易管理。
上述内容通过流程图的形式对本实施例的技术方案进行了说明,为更清楚地理解本申请,下面从不同的节点之间的数据流转关系角度进行说明。在分布式式系统启动选举过程中,将出现三种类型的节点:被动接收消息端、主动发送消息端以及主动发起选举端,不同类型的节点在完成中心节点的选举工作中发挥的作用存在差别。
对于被动接收消息端:首先检测当前Server上所被推荐的zxid,epoch是否合法,检测语句可以是:(currentServer.epoch<=currentMsg.epoch&&(currentMsg.zxid>currentServer.zxid||(currentMsg.zxid==currentServer.zxid&¤tMsg.id>currentServer.id)));如果不合法便用消息中的zxid,epoch,id更新当前Server所被推荐的值,此时将收到的消息转换成Notification消息放入接收队列中,将向对方发送确认消息。将确认消息编号放入ack队列中,检测对方的状态是否是LOOKING状态,如果不是,说明此时已经有Leader已经被选出来,将接收到的消息转发成Notification消息放入接收对队列。
对于主动发送消息端:将要发送的消息由Notification消息转换成ToSend消息,然后发送对方,并等待对方的回复,如果在等待结束没有收到对方法回复,重做三次,如果重做次还是没有收到对方的回复时检测当前的选举(epoch)是否已经改变,如果没有改变,将消息再次放入发送队列中,一直重复直到有Leader选出或者收到对方回复为止,主要将自己相关信息发送给对方。
对于主动发起选举端:首先自己的epoch加1,然后生成notification消息,并将消息放入发送队列中,系统中配置有几个Server就生成几条消息,保证每个Server都能收到此消息,如果当前Server的状态是Looking就一直循环检查接收队列是否有消息,如果有消息,根据消息中对方的状态进行相应的处理:
如果为Looking状态:首先检测消息中epoch是否合法,是否比当前Server的大,如果比较当前Server的epoch大时,更新epoch,检测是消息中的zxid,id是否比当前推荐的Server大,如果是更新相关值,并新生成notification消息放入发关队列,清空投票统计表;如果消息小的epoch则什么也不做;如果相同检测消息中zxid,id是否合法,如果消息中的zxid,id大,那么更新当前Server相关信息,并新生成notification消息放入发送队列,将收到的消息的IP和投票结果放入统计表中,并计算统计结果,根据结果设置自己相应的状态。
如果为Leading状态:将收到的消息的IP和投票结果放入统计表中(这里的统计表是独立的),并计算统计结果,根据结果设置自己相应的状态。
如果为Following状态:将收到的消息的IP和投票结果放入统计表中(这里的统计表是独立的),并计算统计结果,根据结果设置自己相应的状态。
实施例二
前述实施例提出了一种分布式系统中心节点的构建方法,通过该方法可构建出更为稳定的中心节点,基于这种中心节点可实现各种具体的应用。参见图2,该图示出了一种基于分布式系统中心节点的数据请求提交方法的流程。该流程包括:
步骤S201:启动计数器,计数器的初值设置为0;
步骤S202:将非中心节点接收到的数据请求消息转发给中心节点;
非中心节点处于从者(Following)地位,不能对接收到数据请求进行决策,因此需要将该请求转发到中心节点(Leader)。本实施例的中心节点按照前述实施例的方式进行构建,即所述中心节点按照如下方式构建:各节点向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次;如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;各节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点设置为中心节点。
步骤S203:将中心节点接收到的数据请求消息发送给分布式系统中的非中心节点;
步骤S204:比较非中心节点接收到的数据请求消息的ID号与非中心节点自身的ID号之间的大小,如果数据请求消息的ID号大,则进入步骤S205;
步骤S205:向中心节点返回确认消息;
步骤S206:如果中心节点接收到的确认消息达到预设阈值,则将数据请求消息的数据同步到分布式系统的所有非中心节点;
预设阈值的设置与分布式系统对数据同步过程的“一致性”要求程度有关,通常的情况下采用“多数决”的方式设置该阀值,即如果中心节点接收到确认消息的数量为分布式系统中全部节点的一半以上,则视为该数据提交请求被允许。获得数据提交请求允许后,中心节点将更新本地数据,并向所有非中心节点发送数据实现同步。
本实施例依赖按照前述实施例构建的中心节点保证了集群中的多个节点的数据具有强一致性。
实施例三
基于实施例一构建的分布式系统中心节点,还可以进行分布式节点的节点监控操作。参见图3、图4,其中:图3该图示出了基于分布式系统中心节点的监控方法的流程,图4示出了注册节点的类型的示意图。本实施例的流程包括:
步骤S301:在分布式系统中注册监控节点,所述监控节点配置目录和状态目录;
注册监控节点包括的配置目录和状态目录下的节点可以是域名服务节点(NameService)和数据服务节点(DataService),具体注册过程可以按照如下方式实现:
对于注册NameService:
(1)在分布式系统中建立配置目录/Conf/NameService/(NameServiceID)目录,将该目录的类型设置为Persistent类型,该类型目录为持久化目录节点,它上面存储的数据不会丢失;
(2)建立状态目录/Stat/NameService/(NameServiceID)目录,将该目录的类型设置为Ephemeral_Sequential类型,该类型目录为顺序自动编号的目录节点,属于临时目录节点,该类型的目录一旦创建,在客户端与服务器端口的会话(session)超时时,该目录节点将会被自动删除。
对于注册DataService:
(1)如果该DataService所在的Group是新建的Group,则建立配置目录/Conf/DataService/(GroupID)目录,将其类型设置为Persistent类型;
(2)如果该DataService所在的Group是新建的Group,则建立状态目录/Stat/DataService/(GroupID)目录,将其类型设置为Persistent类型;
(3)建立配置目录/Conf/DataService/(GroupID)/(DataServiceID),将其类型设置为Persistent类型;
(4)建立状态目录/Stat/DataService/(GroupID)/(DataServiceID),将其类型设置为Ephemeral_Sequential类型。
步骤S302:分布式系统中心节点接收分布式系统中的节点发生变化的消息,所述中心节点按照前述实施例的方法构建得到;
步骤S303:比较监控节点的配置目录和状态目录下的节点:
步骤S304:在节点存在于配置目录且不存在于状态目录时发送监控报警注册监控节点。
通过本实施例构建的中心节点来管理监控分布式系统,由于监控节点、监控节点以外的节点均可与Zookeeper服务进行交互,在节点状态发生变化时可发出监控提示,从而及时监控到分布式系统各节点的运行状态。
需要说明的是:在本实施例基础上还可以增加分布式锁功能,具体过程可按照如下方式实现:在分布式系统中注册分布式锁节点目录,比如建立/locknode/lock目录,将该目录的类型设置为Ephemeral_Sequential类型;然后获取分布式锁节点目录下的节点;再判断分布式节点目录下的节点中节点号最小的节点,向节点号最小的节点分配分布式锁。
实施例四
以上内容详细描述了本申请的方法实施例,相应地,本申请实施例还提供与前述方式实施例对应的装置实施例。参见图5,该图示出了分布式系统中心节点的构建装置的组成框图。该装置500包括:发送单元501、第一判断单元502、第二判断单元503、更新单元504、形成单元505、统计单元506和确定单元507,其中:
发送单元501,用于向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;
第一判断单元502,用于判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则触发更新单元,如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则触发第二判断单元;
第二判断单元503,用于判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则触发更新单元;
更新单元504,用于在选举消息的选举轮次大时,使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次,在选举消息的消息请求号大时,使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;
形成单元505,用于根据更新的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;
推荐单元506,用于统计推荐消息中对中心节点的推荐;
确定单元507,用于将被推荐数达到预设阈值的节点确定为中心节点。
上述装置实施例的工作过程是:第一发送单元向分布式系统发送包含选举轮次和消息请求号的选举消,由第一判断单元判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则触发更新单元使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次,如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则触发第二判断单元,由第二判断单元判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则触发更新单元使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;然后形成单元根据更新的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;推荐单元统计推荐消息中对中心节点的推荐,确定单元将被推荐数达到预设阈值的节点确定为中心节点。
本装置实施例将发送选举消息的节点与接收选举消息的节点的选举轮次和消息请求号大小进行比较,根据比较后的结果更新节点的选举轮次和消息请求号,更新后生成新的通知消息,接收该通话消息的其他节点根据该消息和自身的情况来设置自身状态为中心节点或非中心节点。与现有技术相比,本申请实施例构建的中心节点不会出现单点崩溃,在网络和硬件不稳定的情况下,更安全、更易用、更易管理。
需要说明的是:在完成一次中心节点的选举过程中,上述功能单元可能并不位于一个节点之中,而是由多个节点的相应的单元的共同配合完成中心节点的选举。
基于上述装置实施例可以进行各种应用,比如进行数据提交操作。该基于分布式系统中心节点的数据请求提交装置可以包括:转发单元、群发单元、第一比较单元、返回单元和同步单元,其中:所述转发单元,用于将非中心节点接收到数据请求消息转发给中心节点;所述群发单元,用于将中心节点接收到的数据请求消息发送给分布式系统中的非中心节点;所述第一比较单元,用于比较非中心节点接收到的数据请求消息的ID号与非中心节点自身的ID号之间的大小,如果数据请求消息的ID号大,则触发返回单元;所述返回单元,用于向中心节点返回确认消息;所述同步单元,用于在中心节点接收到的确认消息达到预设阈值时,将数据请求消息的数据同步到分布式系统的所有非中心节点;
该上述应用中提及的中心节点按照如下方式构建:
各节点向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;
判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次;如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;
节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点确定为中心节点。
上述数据提交装置的工作过程是:转发单元将非中心节点接收到数据请求消息转发给中心节点后,由群发单元将中心节点接收到的数据请求消息发送给分布式系统中的非中心节点;然后比较单元比较非中心节点接收到的数据请求消息的ID号与非中心节点自身的ID号之间的大小,如果数据请求消息的ID号大,则触发返回单元向中心节点返回确认消息;同步单元,在中心节点接收到的确认消息达到预设阈值时,将数据请求消息的数据同步到分布式系统的所有非中心节点。
通过本申请实施例构建的中心节点来接收数据请求时,由于每次数据提交均要经过预设数量的Zookeeper服务确认,较好地保证了多台Zookeeper之间的数据一致性。
实施例五
本申请还提供了一种基于分布式系统中心节点的监控装置。参见图6,该图示出了该监控装置的组成框图。该装置600包括:注册单元601、第二比较单元602和监控报警单元603,其中:
注册单元601,用于在分布式系统中注册监控节点,所述监控节点包含位于配置目录和状态目录;
第二比较单元602,用于在分布式系统中心节点接收到分布式系统中的节点发生变化的消息后比较监控节点的配置目录和状态目录下的节点,如果节点存在于配置目录且不存在于状态目录,则触发监控报警单元,所述中心节点按照前述实施例的方法构建得到;
监控报警单元603,用于发送监控报警。
该装置的工作过程是:注册单元在分布式系统中注册包含位于配置目录和状态目录下的域名服务节点和数据服务节点的监控节点,然后由比较单元在接收到节点的变化消息后比较监控节点的配置目录和状态目录下的节点,如果节点存在于配置目录且不存在于状态目录,则触发监控报警单元发送监控报警。
通过本申请实施例构建的中心节点来管理监控分布式系统,由于监控节点、监控节点以外的节点均可与Zookeeper服务进行交互,在节点状态发生变化时可发出监控提示,从而及时监控到分布式系统各节点的运行状态。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (8)
1.一种基于分布式系统中心节点的监控方法,其特征在于,该方法包括:
在分布式系统中注册监控节点,所述监控节点包含配置目录和状态目录;
在分布式系统中心节点接收到分布式系统中的节点发生变化的消息后,比较监控节点的配置目录和状态目录下的节点,如果节点存在于配置目录且不存在于状态目录,则发送监控报警;
所述中心节点按照如下的构建方法构建:
节点向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;
判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次;如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;
节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点确定为中心节点。
2.根据权利要求1所述的方法,其特征在于,所述节点统计推荐消息中对中心节点的推荐,并将被推荐数达到预设阈值的节点确定为中心节点包括:
将发送推荐消息的节点的地址和发送推荐消息的节点推荐的中心节点的地址放入统计表,统计各被推荐作为中心节点的节点的被推荐数,将被推荐数达到预设阈值的节点确定中心节点。
3.根据权利要求1所述的方法,其特征在于,选举消息通过节点的选举线程发送;接收选举消息的节点通过接收线程接收选举消息,发送推荐消息的节点通过发送线程发送推荐消息。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在分布式系统中注册上报数据目录,以便节点发生变化后在该上报数据目录下建立新的报警节点;
在分布式系统中心节点接收到分布式系统中的节点发生变化的消息后,获取上报数据目录下的节点,根据获取的上报目录下的节点发送监控报警。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在分布式系统中注册分布式锁节点目录;
获取分布式锁节点目录下的节点;
判断分布式节点目录下的节点中节点号最小的节点,向节点号最小的节点分配分布式锁。
6.一种基于分布式系统中心节点的监控装置,其特征在于,该装置包括:注册单元、第二比较单元和监控报警单元,其中:
所述注册单元,用于在分布式系统中注册监控节点,所述监控节点包含配置目录和状态目录;
所述第二比较单元,用于在分布式系统中心节点接收到分布式系统中的节点发生变化的消息后比较监控节点的配置目录和状态目录下的节点,如果节点存在于配置目录且不存在于状态目录,则触发监控报警单元;
所述监控报警单元,用于发送监控报警;
所述中心节点通过分布式系统中心节点的构建装置构建得到,所述构建装置包括:发送单元、第一判断单元、第二判断单元、更新单元、形成单元、统计单元和确定单元,其中:
所述发送单元,用于向分布式系统发送选举消息,所述选举消息包含选举轮次和消息请求号;
所述第一判断单元,用于判断接收到选举消息的节点的选举轮次与选举消息中的选举轮次之间的大小关系,如果选举消息的选举轮次大,则触发更新单元,如果接收到选举消息的节点的选举轮次与选举消息的选举轮次相等,则触发第二判断单元;
所述第二判断单元,用于判断接收到选举消息的节点的消息请求号与选举消息中的消息请求号之间的大小关系,如果选举消息的消息请求号大,则触发更新单元;
所述更新单元,用于在选举消息的选举轮次大时,使用选举消息的选举轮次更新接收到选举消息的节点的选举轮次,在选举消息的消息请求号大时,使用选举消息的消息请求号更新接收到选举消息的节点的消息请求号;
所述形成单元,用于根据更新后的选举轮次和消息请求号形成对中心节点的推荐消息,并向分布式系统发送推荐消息;
所述统计单元,用于统计推荐消息中对中心节点的推荐;
所述确定单元,用于将被推荐数达到预设阈值的节点确定为中心节点。
7.根据权利要求6所述的监控装置,其特征在于,所述统计单元具体用于:
将发送推荐消息的节点的地址和发送推荐消息的节点推荐的中心节点的地址放入统计表,统计各被推荐作为中心节点的节点的被推荐数;
所述确定单元具体用于:
将被推荐数达到预设阈值的节点确定中心节点。
8.根据权利要求6所述的监控装置,其特征在于,选举消息通过节点的选举线程发送;接收选举消息的节点通过接收线程接收选举消息,发送推荐消息的节点通过发送线程发送推荐消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510150055.5A CN104731648B (zh) | 2012-09-28 | 2012-09-28 | 一种分布式系统中心节点构建、提交、监控方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210371063.9A CN102929696B (zh) | 2012-09-28 | 2012-09-28 | 一种分布式系统中心节点构建、提交、监控方法及装置 |
CN201510150055.5A CN104731648B (zh) | 2012-09-28 | 2012-09-28 | 一种分布式系统中心节点构建、提交、监控方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210371063.9A Division CN102929696B (zh) | 2012-09-28 | 2012-09-28 | 一种分布式系统中心节点构建、提交、监控方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731648A true CN104731648A (zh) | 2015-06-24 |
CN104731648B CN104731648B (zh) | 2017-12-12 |
Family
ID=53455563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510150055.5A Active CN104731648B (zh) | 2012-09-28 | 2012-09-28 | 一种分布式系统中心节点构建、提交、监控方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104731648B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306583A (zh) * | 2015-11-11 | 2016-02-03 | 广州新科佳都科技有限公司 | 基于原子广播技术的分布式权限管理方法及系统 |
WO2017113057A1 (zh) * | 2015-12-28 | 2017-07-06 | 中国科学院微电子研究所 | 一种分布式测试系统的测试控制方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823382B2 (en) * | 2001-08-20 | 2004-11-23 | Altaworks Corporation | Monitoring and control engine for multi-tiered service-level management of distributed web-application servers |
CN1658106A (zh) * | 2004-02-20 | 2005-08-24 | 横河电机株式会社 | 机器管理系统以及用于机器管理的消息服务器 |
CN1913461A (zh) * | 2006-08-30 | 2007-02-14 | 北京天地互连信息技术有限公司 | 基于下一代互联网的远程视频监控系统及其实现方法 |
US20070050497A1 (en) * | 2005-08-29 | 2007-03-01 | Haley Michael R | System and method for detecting status changes in a network using virtual coordinate mapping |
CN101895429A (zh) * | 2010-07-28 | 2010-11-24 | 新太科技股份有限公司 | 一种基于消息机制的分布式监控系统设计方法 |
CN102546256A (zh) * | 2012-01-12 | 2012-07-04 | 易云捷讯科技(北京)有限公司 | 用于对云计算服务进行监控的系统及方法 |
-
2012
- 2012-09-28 CN CN201510150055.5A patent/CN104731648B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6823382B2 (en) * | 2001-08-20 | 2004-11-23 | Altaworks Corporation | Monitoring and control engine for multi-tiered service-level management of distributed web-application servers |
CN1658106A (zh) * | 2004-02-20 | 2005-08-24 | 横河电机株式会社 | 机器管理系统以及用于机器管理的消息服务器 |
US20070050497A1 (en) * | 2005-08-29 | 2007-03-01 | Haley Michael R | System and method for detecting status changes in a network using virtual coordinate mapping |
CN1913461A (zh) * | 2006-08-30 | 2007-02-14 | 北京天地互连信息技术有限公司 | 基于下一代互联网的远程视频监控系统及其实现方法 |
CN101895429A (zh) * | 2010-07-28 | 2010-11-24 | 新太科技股份有限公司 | 一种基于消息机制的分布式监控系统设计方法 |
CN102546256A (zh) * | 2012-01-12 | 2012-07-04 | 易云捷讯科技(北京)有限公司 | 用于对云计算服务进行监控的系统及方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105306583A (zh) * | 2015-11-11 | 2016-02-03 | 广州新科佳都科技有限公司 | 基于原子广播技术的分布式权限管理方法及系统 |
WO2017113057A1 (zh) * | 2015-12-28 | 2017-07-06 | 中国科学院微电子研究所 | 一种分布式测试系统的测试控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104731648B (zh) | 2017-12-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929696B (zh) | 一种分布式系统中心节点构建、提交、监控方法及装置 | |
CN110120931B (zh) | 一种信息交互方法、装置及存储介质 | |
CN101605108B (zh) | 一种即时通信的方法、系统及装置 | |
US20050108389A1 (en) | Network endpoint health check | |
TW201944236A (zh) | 任務處理方法、裝置及系統 | |
CN113282603B (zh) | 区块链共识节点校验方法、装置、设备以及存储介质 | |
CN105553740B (zh) | 数据接口监控方法和装置 | |
EP2453691A1 (en) | Conflict handling in self-organizing networks | |
CN104980298B (zh) | 一种异常提示方法、装置及系统 | |
CN109194551B (zh) | 一种实时以太网设备性能测试方法、装置及系统 | |
CN101860716B (zh) | 一种无线会议电视终端重接入的系统及方法 | |
CN102075369B (zh) | 一种监控设备的管理方法和设备 | |
CN112134762B (zh) | 针对区块链网络结构的测试方法、装置、终端和存储介质 | |
EP4006742A1 (en) | Fork processing method and blockchain node | |
CN111654395B (zh) | 投票信息处理方法、装置、设备以及存储介质 | |
JP2021103342A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
JP2006279636A (ja) | クライアント間通信ログの整合性保証管理システム | |
JP6904644B2 (ja) | ブロックチェーンの監視 | |
CN108366176A (zh) | 一种终端应用的计费方法、装置及系统 | |
CN110647583B (zh) | 一种区块链构建方法、装置、终端及介质 | |
CN104184603B (zh) | 一种用户状态统计方法、装置及系统 | |
CN104731648A (zh) | 一种分布式系统中心节点构建、提交、监控方法及装置 | |
CN101645124B (zh) | 一种解锁pin码的方法和智能密钥设备 | |
CN112699136B (zh) | 一种跨链存证方法及相关装置 | |
CN112434040A (zh) | 数据存储方法、数据获取方法及装置、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder |
Address after: 100086 12, 1201, 3 building, 2 South Road, Haidian District Academy of Sciences, Beijing. Patentee after: Beijing Sohu New Media Information Technology Co., Ltd. Address before: 100084 Beijing Haidian District Zhongguancun East Road 1 hospital 9 building Sohu cyber Building 8 floor Patentee before: Beijing Sohu New Media Information Technology Co., Ltd. |
|
CP02 | Change in the address of a patent holder |