一种节点变更通知方法及装置与流程

文档序号:12067824阅读:366来源:国知局
一种节点变更通知方法及装置与流程

本申请涉及计算机技术领域,尤其涉及一种节点变更通知方法及装置。



背景技术:

在分布式系统中,多个应用系统可以通过计算机网络访问相同的共享资源。为了使各个应用系统能够正确有效地运行,必须要控制多个应用系统对同一共享资源的并发访问,以防止不同应用系统之间彼此干扰而破坏资源数据的一致性。

为了控制多个应用系统对同一共享资源的并发访问,可以使用分布式应用程序协调服务(也即ZooKeeper)提供的分布式锁服务。具体实现流程主要包括:客户端向ZooKeeper服务器请求为该客户端创建待访问的共享资源名下的临时节点后,判断该客户端的临时节点是否是待访问的共享资源名下的所有临时节点中节点序号最小的临时节点,若是,则认为客户端获取到分布式锁,可以进行资源访问,否则,进入等待状态,并向ZooKeeper服务器注册节点变更事件;当节点变更事件到来的时候,再判断自己的临时节点是否是当前对应待访问的共享资源的序号最小的临时节点。

在上面的流程中,节点变更事件不仅包括获得分布式锁的客户端释放锁、删除对应的临时节点,还包括其它没获得分布式锁的客户端由于与ZooKeeper服务器断开连接而造成对应临时节点被动删除,这就导致客户端会无端接收很多的节点变更事件,从而每次都会执行判断是否获得分布式锁,增加了很多不必要的系统开销。如此,在大规模集群环境下,将会对系统性能造成很大的影响。



技术实现要素:

本申请实施例提供一种节点变更通知方法及装置,用以解决现有的分布式系统中的节点变更方式增加了很多不必要的系统开销,对系统性能造成很大的影响的问题。

本申请实施例提供一种节点变更通知方法,包括:

分布式系统中的客户端在需要访问共享资源时,向协调服务器发送临时节点创建请求,用于请求协调服务器为所述客户端创建等待获取所述共享资源的分布式锁的临时节点;

所述客户端根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件;

若否,则向所述协调服务器发送针对前一个临时节点的节点变更事件的注册请求,用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端;其中,所述前一个临时节点为在等待获取所述共享资源的分布式锁的多个临时节点中,能够在所述客户端的临时节点之前获取所述分布式锁的最后一个临时节点。

可选地,所述满足获取所述分布式锁的条件具体包括:

在当前等待获取所述共享资源的分布式锁的多个临时节点中节点序号最小。

可选地,所述客户端在确定所述客户端的临时节点满足获取所述分布式锁的条件之后,包括:

所述客户端使用获取的分布式锁,访问所述共享资源,并在访问完成后,向所述协调服务器请求删除所述客户端的临时节点。

可选地,所述客户端根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件,包括:

所述客户端获取在所述共享资源对应的锁目录下的多个临时节点的节点 信息;

所述客户端基于获取的所述锁目录下的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件。

可选地,所述客户端根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件,包括:

所述客户端接收所述协调服务器发送的为所述客户端创建的临时节点的节点信息,以及其它等待获取所述共享资源的分布式锁的临时节点的节点信息;

所述客户端基于所述协调服务器发送的所述客户端的临时节点的节点信息,以及所述其它等待获取所述共享资源的分布式锁的临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件。

可选地,所述客户端向所述协调服务器发送针对前一个临时节点的节点变更事件的注册请求之后,还包括:

所述客户端在接收到节点变更事件后,返回判断所述客户端的临时节点当前能否获取所述分布式锁的步骤。

本申请另一实施例提供一种节点变更通知方法,包括:

分布式系统中的协调服务器接收客户端在需要请求共享资源时,发送的临时节点创建请求;

所述协调服务器为所述客户端创建等待获取所述共享资源的分布式锁的临时节点;

所述协调服务器接收所述客户端发送的针对前一个临时节点的节点变更事件的注册请求,该注册请求用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端;其中,所述前一个临时节点为在等待获取所述共享资源的分布式锁的多个临时节点中,能够在所述客户端的临时节点之前获取所述分布式锁的最后一个临时节点;

所述协调服务器在确定所述前一个临时节点被删除后,向所述客户端发送节点变更事件,用以指示所述客户端所述前一个临时节点已被删除。

可选地,所述协调服务器为所述客户端创建等待获取所述共享资源的分布式锁的临时节点之后,还包括:

所述协调服务器将为所述客户端创建的临时节点的节点信息添加在所述共享资源对应的锁目录下。

可选地,所述协调服务器为所述客户端创建等待获取所述共享资源的分布式锁的临时节点之后,还包括:

所述协调服务器将为所述客户端创建的临时节点的节点信息,以及其它等待获取所述共享资源的分布式锁的临时节点的节点信息发送给所述客户端。

本申请实施例提供一种节点变更通知装置,包括:

第一发送模块,用于在客户端需要访问共享资源时,向协调服务器发送临时节点创建请求,用于请求协调服务器为客户端创建等待获取所述共享资源的分布式锁的临时节点;

判断模块,用于根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件;

第二发送模块,用于在确定所述客户端的临时节点不满足获取所述分布式锁的条件后,向所述协调服务器发送针对前一个临时节点的节点变更事件的注册请求,用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端;其中,所述前一个临时节点为在等待获取所述共享资源的分布式锁的多个临时节点中,能够在所述客户端的临时节点之前获取所述分布式锁的最后一个临时节点。

本申请另一实施例提供一种节点变更通知装置,包括:

第一接收模块,用于接收客户端在需要请求共享资源时,发送的临时节点创建请求;

创建模块,用于为所述客户端创建等待获取所述共享资源的分布式锁的临时节点;

第二接收模块,用于接收所述客户端发送的针对前一个临时节点的节点变更事件的注册请求,该注册请求用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端;其中,所述前一个临时节点为在等待获取所述共享资源的分布式锁的多个临时节点中,能够在所述客户端的临时节点之前获取所述分布式锁的最后一个临时节点;

发送模块,用于在确定所述前一个临时节点被删除后,向所述客户端发送节点变更事件,用以指示所述客户端所述前一个临时节点已被删除。

本申请实施例中,分布式系统中的客户端在需要访问共享资源时,向协调服务器发送临时节点创建请求;根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件;若否,则向协调服务器发送针对前一个临时节点的节点变更事件的注册请求,用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端。采用本申请实施例,客户端只有在前一个临时节点被删除后,才会接收到节点变更事件,并且不会影响客户端及时获取分布式锁,这样,可以避免收到很多不必要的节点变更事件,从而可以节省系统开销,提供系统性能。

附图说明

图1为本申请实施例一提供的节点变更通知方法流程图;

图2为本申请实施例二提供的节点变更通知方法流程图;

图3为本申请实施例三提供的节点变更通知装置结构示意图;

图4为本申请实施例四提供的节点变更通知装置结构示意图。

具体实施方式

本申请实施例中,分布式系统中的客户端在需要访问共享资源时,向协调 服务器发送临时节点创建请求;根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件;若否,则向协调服务器发送针对前一个临时节点的节点变更事件的注册请求,用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端。采用本申请实施例,客户端只有在前一个临时节点被删除后,才会接收到节点变更事件,并且不会影响客户端及时获取分布式锁,这样,可以避免收到很多不必要的节点变更事件,从而可以节省系统开销,提供系统性能。

下面结合说明书附图对本申请实施例作进一步详细描述。

实施例一

如图1所示,为本申请实施例一提供的节点变更通知方法流程图,包括以下步骤:

S101:分布式系统中的客户端在需要访问共享资源时,向协调服务器发送临时节点创建请求,用于请求协调服务器为所述客户端创建等待获取所述共享资源的分布式锁的临时节点。

该步骤中,当客户端需要访问共享资源时,首先向协调服务器如ZooKeeper服务器发送临时节点创建请求,其中可以包括需要请求的共享资源的信息,以便ZooKeeper服务器为其创建相应共享资源名下的临时节点。该临时节点用于排序等待获取分布式锁,以便对应的客户端拥有访问共享资源的权限。

S102:客户端根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件,若满足,则进入S103,否则,进入S104。

在具体实施中,客户端首先获取等待获取所述共享资源的分布式锁的所有临时节点的节点信息,其中可以包括节点序号或节点值count等,根据这些临时节点的节点信息判断客户端的临时节点当前能否获取分布式锁。在具体实施中,协调服务器可以按照节点序号由小到大的顺序依次为先后创建的各临时节点分配节点序号,在这种情况下,按照先创建先获取的原则,客户端可以判断 自己的临时节点是否是其中节点序号最小的节点,若是,则确认可以获取到需要访问的共享资源的分布式锁。也即,当客户端的临时节点是在当前等待获取所述共享资源的分布式锁的多个临时节点中节点序号最小的节点时,视为满足获取所述分布式锁的条件。相应地,若协调服务器按照节点序号由大到小的顺序依次为先后创建的各临时节点分配节点序号,在这种情况下,客户端则需要判断自己的临时节点是否是其中节点序号最大的节点,若是,则确认可以获取到需要访问的共享资源的分布式锁。

S103:客户端使用获取的分布式锁,访问所述共享资源,并在访问完成后,向所述协调服务器请求删除所述客户端的临时节点。

这里,客户端在确认自己的临时节点是等待获取所述共享资源的分布式锁的所有临时节点中,节点序号最小的节点后,使用获取的分布式锁访问共享资源,并在访问完成后,释放分布式锁,也即向所述协调服务器指示删除该客户端的临时节点。

S104:客户端向所述协调服务器发送针对前一个临时节点的节点变更事件的注册请求,用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端;其中,所述前一个临时节点为在等待获取所述共享资源的分布式锁的多个临时节点中,能够在所述客户端的临时节点之前获取所述分布式锁的最后一个临时节点。

这里,客户端只向ZooKeeper服务器注册前一个临时节点的节点变更事件,只有在前一个临时节点被删除时,客户端才会收到通知,然后返回S103执行判断步骤,因为只有在前一个临时节点被删除后,该客户端才会有机会获取到分布式锁。这样,可以避免收到很多不必要的节点变更事件,可以节省系统开销。这里的前一个临时节点为能够在该客户端的临时节点之前获取分布式锁的最后一个临时节点,比如若协调服务器按照节点序号从小到大的顺序,依次为创建的各临时节点分配节点序号,则该前一个临时节点是节点序号比该客户端的临时节点的节点序号小1的节点;再比如,若协调服务器按照节点序号从大 到小的顺序,依次为创建的各临时节点分配节点序号,则该前一个临时节点是节点序号比该客户端的临时节点的节点序号大1的节点。

下面通过一个具体的实施例对本申请实施例的思想作进一步说明。

实施例二

如图2所示,为本申请实施例二提供的节点变更通知方法流程图,包括以下步骤:

S201:分布式系统中的客户端在需要访问共享资源时,向协调服务器发送临时节点创建请求,用于请求协调服务器为所述客户端创建等待获取所述共享资源的分布式锁的临时节点。

S202:协调服务器为所述客户端创建等待获取所述共享资源的分布式锁的临时节点。

这里,协调服务器在为所述客户端创建临时节点后,可以将该临时节点的节点信息添加在相应共享资源的锁目录(/lock)下。

S203:客户端判断在等待获取所述共享资源的分布式锁的所有临时节点中,所述客户端的临时节点是否是其中节点序号最小的节点,若是,则进入S204,否则,进入S205。

这里,客户端可以在向协调服务器发送临时节点创建请求后,基于预知的访问路径,主动访问协调服务器存储在所述共享资源对应的锁目录下的多个临时节点的节点信息;也即,客户端获取在所述共享资源对应的锁目录下的多个临时节点的节点信息;基于获取的该锁目录下的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件,在该实施例中,也即判断所述客户端的临时节点是否是所述多个临时节点中节点序号最小的节点;若是,则确定该客户端的临时节点能够获取所述分布式锁,否则,确定该客户端的临时节点不能获取所述分布式锁。

或者,客户端在向协调服务器发送临时节点创建请求后,协调服务器在为该客户端创建临时节点后,可以直接将为该客户端创建的临时节点及该客户端 请求访问的共享资源名下的其它临时节点的节点信息一起发送给该客户端。也即,客户端在发送临时节点创建请求后,接收所述协调服务器发送的为所述客户端创建的临时节点的节点信息,以及其它等待获取所述共享资源的分布式锁的临时节点的节点信息;基于协调服务器发送的所述客户端的临时节点的节点信息,以及所述其它等待获取所述共享资源的分布式锁的临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件,这里也即判断所述客户端的临时节点是否是等待获取所述共享资源的分布式锁的多个临时节点中节点序号最小的节点;若是,则确定该客户端的临时节点能够获取所述分布式锁,否则,确定该客户端的临时节点不能获取所述分布式锁。

S204:客户端使用获取的分布式锁,访问所述共享资源,并在访问完成后,向所述协调服务器请求删除所述客户端的临时节点。

这里,客户端在完成资源访问后,可以向ZooKeeper服务器发送删除临时节点的命令来释放获取的分布式锁,以便其它客户端使用。

S205:客户端向所述协调服务器发送针对前一个临时节点的节点变更事件的注册请求,用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端,该前一个临时节点为在等待获取所述共享资源的分布式锁的所有临时节点中,节点序号比所述客户端的临时节点的节点序号小1的节点。

该步骤中,客户端在自己的临时节点不是当前节点序号最小的临时节点时,进入等待,并向协调服务器(ZooKeeper服务器)注册前一个临时节点的节点变更事件,也即指示ZooKeeper服务器在前一个临时节点被删除后通知该客户端。

比如,客户端的临时节点的节点序号为n,客户端向ZooKeeper服务器注册节点序号为n-1的临时节点的节点变更事件,此时,不论其它临时节点是否有变更,客户端只会接收到节点n-1的变更事件。

S206:协调服务器在确定所述前一个临时节点被删除后,向所述客户端发送节点变更事件,用以指示所述客户端所述前一个临时节点已被删除。

这里的节点变更事件可以包括前一个临时节点完成资源访问后释放分布式锁(也即删除该前一个临时节点)的事件,也可以包括前一个临时节点与所述协调服务器断开连接后被删除的事件。

S207:客户端在接收到节点变更事件后,返回S203。

基于同一发明构思,本申请实施例中还提供了一种与节点变更通知方法对应的节点变更通知装置,由于该装置解决问题的原理与本申请实施例节点变更通知方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。

实施例三

如图3所示,为本申请实施例三提供的节点变更通知装置结构示意图,包括:

第一发送模块31,用于在客户端需要访问共享资源时,向协调服务器发送临时节点创建请求,用于请求协调服务器为客户端创建等待获取所述共享资源的分布式锁的临时节点;

判断模块32,用于根据当前等待获取所述共享资源的分布式锁的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件;

第二发送模块33,用于在确定所述客户端的临时节点不满足获取所述分布式锁的条件后,向所述协调服务器发送针对前一个临时节点的节点变更事件的注册请求,用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端;其中,所述前一个临时节点为在等待获取所述共享资源的分布式锁的多个临时节点中,能够在所述客户端的临时节点之前获取所述分布式锁的最后一个临时节点。

可选地,所述满足获取所述分布式锁的条件具体包括:

在当前等待获取所述共享资源的分布式锁的多个临时节点中节点序号最小。

可选地,所述装置还包括:

访问模块34,用于在所述判断模块32确定所述客户端的临时节点满足获取所述分布式锁的条件之后,使用获取的分布式锁,访问所述共享资源,并在访问完成后,向所述协调服务器请求删除所述客户端的临时节点。

可选地,所述判断模块32具体用于:

获取在所述共享资源对应的锁目录下的多个临时节点的节点信息;基于获取的所述锁目录下的多个临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件。

可选地,所述判断模块32具体用于:

接收所述协调服务器发送的为所述客户端创建的临时节点的节点信息,以及其它等待获取所述共享资源的分布式锁的临时节点的节点信息;基于所述协调服务器发送的所述客户端的临时节点的节点信息,以及所述其它等待获取所述共享资源的分布式锁的临时节点的节点信息,判断所述客户端的临时节点是否满足获取所述分布式锁的条件。

可选地,所述判断模块32还用于,在第二发送模块33向所述协调服务器发送针对前一个临时节点的节点变更事件的注册请求之后,若接收到节点变更事件,则返回判断所述客户端的临时节点当前能否获取所述分布式锁的步骤。

实施例四

如图4所示,为本申请实施例四提供的节点变更通知装置结构示意图,包括:

第一接收模块41,用于接收客户端在需要请求共享资源时,发送的临时节点创建请求;

创建模块42,用于为所述客户端创建等待获取所述共享资源的分布式锁的临时节点;

第二接收模块43,用于接收所述客户端发送的针对前一个临时节点的节点变更事件的注册请求,该注册请求用于请求协调服务器在所述前一个临时节点被删除后通知所述客户端;其中,所述前一个临时节点为在等待获取所述共享 资源的分布式锁的多个临时节点中,能够在所述客户端的临时节点之前获取所述分布式锁的最后一个临时节点;

发送模块44,用于在确定所述前一个临时节点被删除后,向所述客户端发送节点变更事件,用以指示所述客户端所述前一个临时节点已被删除。

可选地,所述发送模块44还用于:

将所述创建模块42为所述客户端创建的临时节点的节点信息添加在所述共享资源对应的锁目录下。

可选地,所述发送模块44还用于:

将所述创建模块42为所述客户端创建的临时节点的节点信息,以及其它等待获取所述共享资源的分布式锁的临时节点的节点信息发送给所述客户端。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1