CN104636437B - 一种事件通知方法、监听器的处理方法及装置 - Google Patents
一种事件通知方法、监听器的处理方法及装置 Download PDFInfo
- Publication number
- CN104636437B CN104636437B CN201410856662.9A CN201410856662A CN104636437B CN 104636437 B CN104636437 B CN 104636437B CN 201410856662 A CN201410856662 A CN 201410856662A CN 104636437 B CN104636437 B CN 104636437B
- Authority
- CN
- China
- Prior art keywords
- vnode
- monitor
- catalogue
- monitoring
- mark
- 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.)
- Active
Links
Abstract
本申请提供一种事件通知方法、监听器的处理方法及装置,该方法包括:当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;完成所述操作后,确定各级目录的vnode中监听器计数不为零的vnode所对应的第一目录;根据第一目录的标识在多个NS中确定出第一目录的监听器所注册的NS;所注册的NS上保存有第一目录的监听器的属性信息,属性信息包括第一目录的标识、监听掩码与注册监听器的CA的标识;向所注册的NS发送事件通知,事件通知包括第一目录的标识、监听掩码以及与所述操作对应的事件内容。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种事件通知方法、监听器的处理方法及装置。
背景技术
通知(Notify)是一种文件系统的变化通知机制。通过该机制,如文件增加、删除等事件可以立刻让用户态得知。服务器信息块协议版本2(英文:Server Message BlockProtocol Version 2,简称:SMB2.0)中定义了客户端(英文:Client Agent,简称:CA)和文件服务器之间监听请求和响应消息。CA发送监听消息去修改目录/文件的监听类型,同时可以设置多个监听掩码。当文件服务器中被监控的目录/文件有修改操作的时候,并且和监听掩码匹配,服务器会把操作事件通过监听响应消息发送给CA。
现有技术提供的创建监听器的流程请参考图1a所示。该创建流程包括:用户通过协议发送增加监听器(watch)的消息给CA,该消息中携带监听的目录/文件。CA获取监听的目录/文件的标识(id)。CA向元数据服务器(英文:Metadata Service,简称:MDS)发送增加监听器的消息,该消息中除了携带监听的目录/文件的标识之外,还携带CA的标识以及监听掩码(mask)。其中,监听掩码表示监听的事件类型,例如删除事件、创建事件的。MDS在该监听的目录/文件的节点(Inode)信息中创建监听器。然后MDS向CA返回创建成功的消息。CA再回调协议接口向用户返回创建成功的消息。其中,在图1a中,CA(1,2,3)表示多个CA的处理流程相同。
接下来请参考图1b所示,为现有技术中监听事件通知的流程示意图。具体来说,当采用如图1a所示的方法在MDS注册了监听器之后,MDS对监听的目录/文件进行监听。当监听的目录/文件发生了监听掩码所代表的事件变化时,MDS就遍历该目录/文件的节点信息中的所有CA的监听器,假设该所有的CA为CA2,那么然后向CA2发送事件变化通知。CA2回调协议接口把事件变化通知发送给用户。
然而,上述方法在设置有目录树的情况下,因为需要监控指定目录下的所有文件和递归目录下的所有文件,所以会存在这样的问题:当目录树中的某个目录/文件有变化时,就要回溯各级父目录,经多次路由才能回溯到注册了监听器的父目录。举例来说,请参考图2所示,假设根目录(Dir1)的节点(Inode1)信息中,CA注册了一个监听器。当文件6有操作变化时,就需要通知在文件6的父目录中注册了监听器的CA,所以就需要回溯文件6的各级父目录中看哪级被注册了监听器。然而,有时候每一级目录的Inode不在同一个MDS上,所以就要发送消息给其他MDS进行查询。由此可见,现有技术中的方法存在需要多次路由才能回溯到注册了监听器的父目录的问题。
发明内容
本申请实施例提供一种事件通知方法、监听器的处理方法及装置,用于解决现有技术中的在事件通知时需要多次路由才能回溯到注册了监听器的父目录的技术问题。
本申请第一方面提供了一种事件通知方法,包括:
当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;
所述CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录;
所述CA根据所述第一目录的标识在多个通知服务器NS中确定出所述第一目录的监听器所注册的NS;其中,所述多个NS的数量与所有CA的数量相同;所述所注册的NS上保存有所述第一目录的监听器的属性信息,所述属性信息包括所述第一目录的标识、监听掩码与注册所述监听器的CA的标识;所述监听掩码用于表示监听的事件类型;
所述CA向所述所注册的NS发送事件通知,所述事件通知包括所述第一目录的标识、监听掩码以及与所述操作对应的事件内容;以使所述所注册的NS能够在所述事件通知中的监听掩码和所述属性信息中的监听掩码匹配时,向所述注册所述监听器的CA发送事件通知。
结合第一方面,在第一方面的第一种可能的实现方式中,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的,包括:
当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;
当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;
当所述标记信息表示所述vnode无效时,所述CA向元数据服务器MDS获取所述无效的vnode所对应的目录的监听器信息,并根据所述监听器信息更新所述无效的vnode信息为有效的vnode;
当所述各级目录中的目录不存在vnode时,所述CA向元数据服务器MDS获取所述不存在vnode的目录的监听器信息,并根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,当所述标记信息表示所述vnode无效时,在查看所述vnode的标记信息之前,所述方法还包括:
所述CA接收锁服务器发送的广播消息,所述广播消息用于通知所述CA所述无效的vnode所对应的目录的元数据将要发生变化;
所述CA将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
本申请第二方面提供一种事件通知方法,包括:
通知服务器NS接收发送事件变化的CA发送的第一事件通知;所述第一事件通知包括第一目录的标识、监听掩码以及事件内容;所述监听掩码用于表示监听的事件类型;
所述NS根据所述第一目录的标识获得注册的用于监听所述第一目录的监听器;所述监听器的属性信息包括所述第一目录的标识、监听掩码以及注册所述监听器的CA的标识;
所述NS确定所述第一事件通知中的监听掩码和所述监听器的属性信息中的监听掩码匹配;
所述NS向注册所述监听器的CA发送第二事件通知;所述第二事件通知包括所述第一目录的标识、所述监听掩码以及所述事件内容。
本申请第三方面提供一种监听器的处理方法,包括:
客户端CA接收用于处理监听器的第一消息,所述第一消息中携带监听的目录/文件以及监听掩码;其中,所述监听掩码用于表示监听的事件类型;
所述CA获取所述监听的目录/文件的标识;
所述CA根据所述监听的目录/文件的标识在多个通知服务器NS中确定出本次处理的NS;其中,所述多个NS的数量与所述CA的数量相同;
所述CA向确定出的所述本次处理的NS发送用于处理监听器的第二消息,所述第二消息中携带所述CA的标识、所述监听的目录/文件的标识以及所述监听掩码。
结合第三方面,在第三方面的第一种可能的实现方式中,在所述CA向确定出的所述本次处理的NS发送用于处理监听器的第二消息之后,所述方法还包括:
所述CA向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求;以使所述锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的节点信息vnode无效;
所述CA接收所述锁服务器返回的拿锁成功的消息。
结合第三方面或第三方面的第一种可能的实现方式中,在第三方面的第二种可能的实现方式中,所述方法还包括:
所述CA向元数据服务器MDS发送所述监听的目录/文件的标识和所述监听掩码。
本申请第四方面提供一种事件通知装置,包括:
处理单元,用于当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;当所述CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录;根据所述第一目录的标识在多个通知服务器NS中确定出所述第一目录的监听器所注册的NS;其中,所述多个NS的数量与所有CA的数量相同;所述所注册的NS上保存有所述第一目录的监听器的属性信息,所述属性信息包括所述第一目录的标识、监听掩码与注册所述监听器的CA的标识;所述监听掩码用于表示监听的事件类型;
发送单元,用于向所述所注册的NS发送事件通知,所述事件通知包括所述第一目录的标识、监听掩码以及与所述操作对应的事件内容;以使所述所注册的NS能够在所述事件通知中的监听掩码和所述属性信息中的监听掩码匹配时,向所述注册所述监听器的CA发送事件通知。
结合第四方面,在第四方面的第一种可能的实现方式中,所述处理单元具体用于:当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;
当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;
所述发送单元还用于:当所述标记信息表示所述vnode无效时,向元数据服务器MDS获取所述无效的vnode所对应的目录的监听器信息,所述处理单元还用于根据所述监听器信息更新所述无效的vnode信息为有效的vnode;
所述发送单元还用于当所述各级目录中的目录不存在vnode时,向元数据服务器MDS获取所述不存在vnode的目录的监听器信息,所述处理单元还用于根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
结合第四方面的第一种可能的实现方式中,在第四方面的第二种可能的实现方式中,所述装置还包括接收单元,用于当所述标记信息表示所述vnode无效时,在所述处理单元查看所述vnode的标记信息之前,接收锁服务器发送的广播消息,所述广播消息用于通知所述装置所述无效的vnode所对应的目录的元数据将要发生变化;
所述处理单元还用于:将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
本申请第五方面提供一种事件通知装置,包括:
接收单元,用于接收发送事件变化的CA发送的第一事件通知;所述第一事件通知包括第一目录的标识、监听掩码以及事件内容;所述监听掩码用于表示监听的事件类型;
处理单元,用于根据所述第一目录的标识获得注册的用于监听所述第一目录的监听器;所述监听器的属性信息包括所述第一目录的标识、监听掩码以及注册所述监听器的CA的标识;确定所述第一事件通知中的监听掩码和所述监听器的属性信息中的监听掩码匹配;
发送单元,用于向注册所述监听器的CA发送第二事件通知;所述第二事件通知包括所述第一目录的标识、所述监听掩码以及所述事件内容。
本申请第六方面提供一种监听器的处理装置,包括:
接收单元,用于接收用于处理监听器的第一消息,所述第一消息中携带监听的目录/文件以及监听掩码;其中,所述监听掩码用于表示监听的事件类型;
处理单元,用于获取所述监听的目录/文件的标识;根据所述监听的目录/文件的标识在多个通知服务器NS中确定出本次处理的NS;其中,所述多个NS的数量与所有装置的数量相同;
发送单元,用于向确定出的所述本次处理的NS发送用于处理监听器的第二消息,所述第二消息中携带所述装置的标识、所述监听的目录/文件的标识以及所述监听掩码。
结合第六方面,在第六方面的第一种可能的实现方式中,所述发送单元还用于:向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求;以使所述锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的节点信息vnode无效;
所述接收单元还用于:接收所述锁服务器返回的拿锁成功的消息。
结合第六方面或第六方面的第一种可能的实现方式,在第六方面的第二种可能的实现方式中,所述发送单元还用于:向元数据服务器MDS发送所述监听的目录/文件的标识和所述监听掩码。
本申请第七方面提供一种客户端,包括:
处理器,用于当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;当所述CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录;根据所述第一目录的标识在多个通知服务器NS中确定出所述第一目录的监听器所注册的NS;其中,所述多个NS的数量与所有CA的数量相同;所述所注册的NS上保存有所述第一目录的监听器的属性信息,所述属性信息包括所述第一目录的标识、监听掩码与注册所述监听器的CA的标识;所述监听掩码用于表示监听的事件类型;
发送器,用于向所述所注册的NS发送事件通知,所述事件通知包括所述第一目录的标识、监听掩码以及与所述操作对应的事件内容;以使所述所注册的NS能够在所述事件通知中的监听掩码和所述属性信息中的监听掩码匹配时,向所述注册所述监听器的CA发送事件通知。
结合第七方面,在第七方面的第一种可能的实现方式中,所述处理器具体用于:当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;
当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;
所述发送器还用于:当所述标记信息表示所述vnode无效时,向元数据服务器MDS获取所述无效的vnode所对应的目录的监听器信息,所述处理器还用于根据所述监听器信息更新所述无效的vnode信息为有效的vnode;
所述发送器还用于当所述各级目录中的目录不存在vnode时,向元数据服务器MDS获取所述不存在vnode的目录的监听器信息,所述处理器还用于根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
结合第七方面的第一种可能的实现方式中,在第七方面的第二种可能的实现方式中,所述客户端还包括接收器,用于当所述标记信息表示所述vnode无效时,在所述处理器查看所述vnode的标记信息之前,接收锁服务器发送的广播消息,所述广播消息用于通知所述CA所述无效的vnode所对应的目录的元数据将要发生变化;
所述处理器还用于:将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
本申请第八方面提供一种通知服务器,包括:
接收器,用于接收发送事件变化的CA发送的第一事件通知;所述第一事件通知包括第一目录的标识、监听掩码以及事件内容;所述监听掩码用于表示监听的事件类型;
处理器,用于根据所述第一目录的标识获得注册的用于监听所述第一目录的监听器;所述监听器的属性信息包括所述第一目录的标识、监听掩码以及注册所述监听器的CA的标识;确定所述第一事件通知中的监听掩码和所述监听器的属性信息中的监听掩码匹配;
发送器,用于向注册所述监听器的CA发送第二事件通知;所述第二事件通知包括所述第一目录的标识、所述监听掩码以及所述事件内容。
本申请第九方面提供一种客户端CA,包括:
接收器,用于接收用于处理监听器的第一消息,所述第一消息中携带监听的目录/文件以及监听掩码;其中,所述监听掩码用于表示监听的事件类型;
处理器,用于获取所述监听的目录/文件的标识;根据所述监听的目录/文件的标识在多个通知服务器NS中确定出本次处理的NS;其中,所述多个NS的数量与所有CA的数量相同;
发送器,用于向确定出的所述本次处理的NS发送用于处理监听器的第二消息,所述第二消息中携带所述CA的标识、所述监听的目录/文件的标识以及所述监听掩码。
结合第九方面,在第九方面的第一种可能的实现方式中,所述发送器还用于:向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求;以使所述锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的节点信息vnode无效;
所述接收器还用于:接收所述锁服务器返回的拿锁成功的消息。
结合第九方面或第九方面的第一种可能的实现方式,在第九方面的第二种可能的实现方式中,所述发送器还用于:向元数据服务器MDS发送所述监听的目录/文件的标识和所述监听掩码。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
在本申请实施例中,因为在发生事件变化时,CA可以根据发生事件变化的目录/文件的全路径上的各级目录的vnode的监听器计数快速得知各级目录中哪个目录注册了监听器,而无需像现有技术中那样,由MDS逐级查询各级目录的Inode中是否注册有监听器,因为每一级目录的Inode可能不在同一MDS上,所以需要发送消息给其他MDS进行查询,因此,需要多次路由才能回溯到注册了监听器的父目录。
附图说明
图1a-图1b为现有技术中监听器的注册方法和事件通知方法的流程图;
图2为现有技术中的目录树的示意图;
图3为本申请实施例提供的一种分布式文件系统的结构图;
图4为本申请实施例提供的一种监听器的处理方法的流程图;
图5为本申请实施例提供的一种监听器的处理方法的进一步流程图;
图6为本申请实施例提供的一种事件通知方法的流程图;
图7为本申请实施例提供的另一种事件通知方法的流程图;
图8为本申请实施例提供的一种目录树的示意图;
图9为本申请实施例提供的事件通知方法的实例示意图;
图10为本申请实施例提供的第一例的事件通知装置的功能框图;
图11为本申请实施例提供的第一例的客户端的系统框图;
图12为本申请实施例提供的第二例的事件通知装置的功能框图;
图13为本申请实施例提供的NS的系统框图;
图14为本申请实施例提供的监听器的处理装置的功能框图;
图15为本申请实施例提供的第二例的客户端的系统框图。
具体实施方式
本申请实施例提供一种事件通知方法、监听器的处理方法及装置,用以解决现有技术中在事件通知时需要多次路由才能回溯到注册了监听器的父目录的技术问题。
本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先请参考图3所示,为本申请实施例提供的一种分布式文件系统的系统结构图。如图3所示,该系统包括多个客户端(英文:Client Agent,简称:CA),如图3中的CA1、CA2和CA3。本实施例中的客户端可以对外提供可移植操作系统接口(英文:Portable OperatingSystem Interface,简称:POSIX),上层可以对接连接式网络存储(英文:Network-AttachedStorage,简称:NAS)服务或者对接瘦客户端。NAS拥有自己的文件系统,可以通过网络文件系统(英文:Network File System,简称:NFS)或者公共互联网文件系统(英文:CommonInternet File System,简称:CIFS)对外提供文件访问服务。图3中的协议表示CIFS协议或者SMB协议。CA可以通过SMB协议或CIFS协议与其他网元进行消息交互。
该系统还包括与多个客户端数量相同的通知服务器(英文:Notify Server,简称NS),如NS1、NS2、NS3。NS是逻辑处理模块,在物理上可以是与客户端相互独立的设备,也可以是每个CA的一部分,即NS集成在CA上。
进一步,注册的监听器信息也可以保存在元数据服务器(英文:MetadataService,简称:MDS)上,通常是由CA将监听的目录/文件对应的监听器信息发送给监听的目录/文件所在的主MDS。在监听器存续期间,MDS将永久保存监听器信息。这部分将在下文进行详细描述。
在如图3所示的分布式文件系统中,CA会根据需要监听的目录/事件的标识来确定本次处理的NS,然后向确定的本次处理的NS发送处理消息。而NS则保存哪些CA处理了监听器。以下将详细描述监听器的处理过程。其中,处理包括注册监听器、修改监听器、注销监听器等。
请一并参考图4所示,为本申请实施例提供的一种监听器的处理方法的流程图,该方法包括以下内容:
步骤101:CA接收用于处理监听器的第一消息,第一消息中携带监听的目录/文件以及监听掩码;其中,监听掩码用于表示监听的事件类型;
步骤102:CA获取所述监听的目录/文件的标识;
步骤103:CA根据所述监听的目录/文件的标识在多个NS中确定出本次处理的NS;
步骤104:CA向确定出的所述本次处理的NS发送用于处理监听器的第二消息,第二消息中携带所述CA的标识、所述监听的目录/文件的标识以及监听掩码。
其中,在步骤101中,CA例如通过协议接口接收用于处理监听器的第一消息。如果“处理”是注册监听器的话,第一消息例如为Add Notify Watch消息。如果“处理”是修改监听器的话,第一消息就是修改消息。
接下来执行步骤102,即获取监听的目录/文件的标识。具体来说,CA根据缓存中的信息获取到监听的目录/文件的标识(FID)。通常,在CA的缓存中会保存目录和文件的dentry信息和vnode信息。dentry信息主要保存其文件名等信息。vnode主要保存FID、时间等文件属性信息,以及该文件所在的主MDS的标识信息。因此,CA通过查询vnode信息,即可获得FID。
接下来执行步骤103,CA根据监听的目录/文件的标识在多个NS中确定出本次处理的NS。具体来说,可以将所述标识(FID)作为关键词(key),采用分布式哈希表(英文:Distributed Hash Table,简称:DHT)算法计算本次处理的NS的标识(ID)。或者,也可以是先将所述标识(FID)转换为另一个唯一标识监听的目录/文件的值,在本实施例中称为通知标识(NotifyID)。然后再将NotifyID作为key,采用DHT算法计算本次处理的NS的标识。
当然,在实际运用中,也可以采用其他算法计算本次处理的NS,本申请不作限定。较佳的,所选择的算法尽量使得每个NS所保存的监听器的数量均匀分布。
当确定了本次处理的NS之后,接下来执行步骤104,即CA向确定出的本次处理的NS发送用于处理监听器的第二消息。其中,第二消息中需要携带请求处理监听器的CA的标识,例如CA1。第二消息还携带所述监听的目录/文件的标识以及监听掩码(mask)。其中,监听掩码用于表示监听的事件类型。举例来说,例如需要监听所述监听的目录/文件的删除事件、创建事件、修改事件。只有与监听掩码匹配的事件发生,才会通知用户态。而所述监听的目录/文件的其它事件不需要监听,即不需要在发生其它事件变化时通知用户态。
请继续参考图4所示,当在步骤104中,CA发送第二消息给本次处理的NS之后,本次处理的NS侧的对应的处理方法包括:
步骤201:NS接收CA发送的用于处理监听器的所述第二消息;
步骤202:NS根据所述第二消息处理监听器,所述监听器的属性信息包括所述CA的标识、所述监听的目录/文件的标识以及所述监听掩码。
对于第二消息是注册监听器的情况而言,具体来说,步骤202的一种可能的实现方式为:NS创建一个新的监听器。在本实施例中,NS不用考虑之前是否已经注册过所述监听的目录/文件、并且与监听掩码匹配的监听器。
步骤202的另一种可能的实现方式为:NS查询是否已注册过所述监听的目录/文件、并且与监听掩码匹配的监听器;如果否,则注册一个新的监听器;如果是,则将所述CA的标识添加在已注册的监听器的属性信息中。
对于第二消息是修改监听器的情况而言,NS先查找到所述监听的目录/文件的监听器,然后根据实际需要修改该监听器的属性信息即可。
对于第二消息是注销监听器的情况而言,NS先查找到所述监听的目录/文件的监听器,如果该监听器的注册CA有多个,那么将该监听器的属性信息中的所述CA的标识删除掉即可。如果该监听器的注册CA只有所述CA,那么就将整个监听器删除即可。
对于注册监听器的情况而言,举例来说,请同时参考图3所示,假设CA1和CA2均已经在NS3上注册了用于监听标识为FID3的目录/文件的与监听掩码为mask3匹配的事件类型的监听器3。而此时CA3也需要监听标识为FID3的目录/文件的与监听掩码为mask3的事件类型,所以就向NS3发送用于注册监听器的第二消息,第二消息中包括CA的标识CA3、监听的目录/文件的标识FID3、监听掩码mask3。NS3在接收到第二消息后,根据FID3和mask3查询是否已经注册有监听器,在本实施例中,因为已经注册用于监听标识为FID3的目录/文件的与监听掩码为mask3匹配的事件类型的监听器3,所以只要在监听器3的属性信息中增加CA3即可。增加完之后,该监听器3的属性信息为(FID3,mask3,CA1,CA2,CA3)。
按照前述图4的处理方法,假设CA1在NS1上注册了用于监听标识为FID1的目录/文件的与监听掩码mask1匹配的事件类型的监听器1。假设CA1在NS2上注册了用于监听标识为FID2的目录/文件的与监听掩码mask2匹配的事件类型的监听器2。CA1、CA2和CA3均在NS3上注册了用于监听标识为FID3的目录/文件的与监听掩码mask3匹配的事件类型的监听器3。请参考图3所示。
需要说明的是,在实际运用中,每个NS上均可以保存多个监听器。
进一步,在步骤202中处理监听器成功之后,NS还可以向对应的CA发送处理成功的响应消息。那么对应的,CA会接收到本次处理的NS发送的所述监听器处理成功的响应消息。
在进一步的实施例中,CA能够感知到NS是否故障,如果故障的话,CA需要重新向新的NS处理监听器。
在进一步的实施例中,请参考图5所示,CA可以将监听的目录/文件的标识和监听掩码发送给MDS,具体来说,是发送给监听的目录/文件的主MDS。如前所述,监听的目录/文件的vnode信息中保存有该目录/文件的主MDS的标识信息,所以CA通过查询vnode信息,即可获知需要将监听的目录/文件的标识和监听掩码发送给哪个MDS。当主MDS发生变化时,CA可以通过重定向进行全系统搜索,获取到目录/文件的主MDS。该部分为本领域技术人员所熟知的内容,所以在此不再赘述。较佳的,CA在接收到处理成功的响应消息之后,才向MDS发送监听的目录/文件的标识和监听掩码。
主MDS可以将目录/文件的标识和监听掩码下盘,即目录/文件的标识和监听掩码永久被保存在存储器中。其中,永久的时间是指在该监听器存在期间。如图3所示,左边的MDS中保存了(FID1:mask1)和(FID2:mask2)的信息。右边的MDS保存了(FID3:mask3)的信息。如此一来,当主MDS因故障或者其它原因需要被其它MDS替代时,即可直接从存储器中获取到监听器的信息,而无需CA再次发送一次。另外,保存在MDS上的监听的目录/文件的标识和监听掩码,在事件通知时,也可能会被用到,这部分内容将在后面进行详细描述。
在进一步的实施例中,在监听器处理成功之后,CA还修改监听的目录/文件的vnode中的监听器的计数值,例如,在注册所述监听器之前,所述监听的目录/文件的vnode中的监听器的计数值为0,则表示该CA之前还未注册过所述监听的目录/文件的监听器,那么就将监听器的计数值修改为1。假设之前该CA或者其他CA已经注册过所述监听的目录/文件的监听器,那么监听器的计数值可能不为零,例如为2,那么此时只要将计数值修改为3即可。
因此,当在后续事件通知时,只要查询某个目录/文件的vnode中的监听器的计数值,即可得知该目录/文件是否被注册监听器。
进一步,在步骤104之后,较佳的,在CA接收到本次处理的NS发送的处理成功的响应消息之后,CA向锁服务器请求获取所述监听的目录/文件的元数据的锁,以使锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的vnode无效。CA接收锁服务器返回的拿锁成功的消息。
具体来说,请再参考图5所示,所述CA向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求。锁服务器在接收到该请求之后,向所有其它CA发送广播消息,以通知所述监听的目录/文件的元数据将要发生变化。而其它CA在接收到广播消息之后,检查所述监听的目录/文件的vnode是否存在,如果存在的话,就设置该vnode无效。如果不存在,或者是在设置该vnode无效之后,还向锁服务器返回响应消息。
当锁服务器接收到所有其它CA的响应消息之后,则向所述CA返回拿锁成成的消息。
进一步,所述CA在接收到拿锁成功的消息之后,向MDS发送监听的目录/文件的标识和监听掩码。然后待收到MDS保存完成的情况下,向锁服务器请求释放锁,以便于下一个CA能够对所述监听的目录/文件的元数据进行操作。然后接收锁服务器返回的释放成功消息。
可选的,所述CA向锁服务器请求锁的步骤和向MDS发送需要监听的目录/文件的标识和监听掩码的步骤可以同时进行,也可以先后进行。在先后进行时,不特别限定先后顺序。
然后所述CA可以调用协议接口,向用户态返回监听器处理成功的响应消息。
接下来描述当发生事件变化时,如何进行事件通知。请参考图6所示,为本申请实施例提供的一种事件通知方法的流程图。该方法包括:
步骤301:当CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的vnode是有效的;
步骤302:CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录;
步骤303:CA根据第一目录的标识在多个NS中确定出第一目录的监听器所注册的NS;
步骤304:CA向所述所注册的NS发送事件通知,其中,所述事件通知中携带第一目录的标识、监听掩码以及与所述操作对应的事件内容。事件内容例如:创建新文件/Dir1/Dir2/Dir4/Dir6/文件8。
其中,在步骤301中,CA确定所述目录/文件的全路径上的各级目录的vnode是有效的,包括:当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;当所述标记信息表示所述vnode无效时,所述CA向元数据服务器MDS获取所述无效的vnode所对应的目录的监听器信息,并根据所述监听器信息更新所述无效的vnode信息为有效的vnode。当所述各级目录中的目录不存在vnode时,所述CA向元数据服务器MDS获取所述不存在vnode的目录的监听器信息,并根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
具体来说,假设全路径上的各级目录为/Dir1/Dir2/Dir4/Dir6/。CA查看各级目录是否存在vnode。假设目录Dir1、Dir2和Dir4存在vnode,那么就再确定目录Dir1、Dir2和Dir4存在vnode是否有效。因为可能为了释放内存空间,当定时超过一定时间,目录的vnode就会被设置为无效。或者是因为例如前述所描述的,接收到了锁服务器的广播消息,所以将该目录的vnode信息设置为无效。因此,在这种情况下,该方法还包括:CA接收锁服务器发送的广播消息,所述广播消息用于通知所述CA所述无效的vnode所对应的目录的元数据将要发生变化;所述CA将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
举例来说,假设所述CA在查看各级目录是否存在vnode之前,接收到了锁服务器发送的广播消息,得知有CA新注册了目录Dir2和Dir4的监听器,所以所述CA内存中的目录Dir2和Dir4的vnode已经不是最新的了,所以就设置目录Dir2和Dir4的vnode为无效的。因此,根据目录Dir2和Dir4的vnode的标记信息确定目录Dir2和Dir4的vnode是无效的,那么就通过Getattr接口向目录Dir2和Dir4的主MDS获取目录Dir2和Dir4的监听器信息,主MDS查询之后,返回目录Dir2的标识和监听掩码,Dir4未注册监听器。然后所述CA得知目录Dir2被注册了监听器,而Dir4未被注册监听器,所以就更新目录Dir2和Dir4的vnode中的监听器计数值,并设置目录Dir2和Dir4的vnode为有效的。
假设所述CA查询到了目录Dir1的vnode之后,并且发现标记信息标识该vnode有效,那么就可以确定目录Dir1的vnode是有效的。
另外,因为CA可能从没操作过包括某个目录的路径,所以内存中就没有该某个目录的vnode。在本实施例中,假设所述CA查询到目录Dir6的vnode不存在,那么所述CA就可以通过lookup接口向目录Dir6的主MDS获取目录Dir6的监听器信息,例如:主MDS返回的未查找到监听器。那么所述CA就根据监听器信息创建目录Dir6的vnode,在该vnode中,监听器计数值为零。并设置该vnode为有效的vnode。
接下来执行步骤302,即确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录。其中,第一目录可能包括多个目录,例如:目录Dir1和Dir2的vnode中的监听器计数不为零,而目录Dir4和目录Dir6的监听器计数为零。因此,在本实施例中,第一目录包括目录Dir1和目录Dir2。
接下来执行步骤303,即根据第一目录的标识确定出第一目录的监听器所注册的NS。该步骤中的确定方法与前述注册流程中的步骤103相同,在此不再赘述。假设确定出目录Dir1的监听器所注册的NS为NS1,目录Dir2的监听器所注册的NS为NS2。
接下来执行步骤304,即所述CA向NS1和NS2发送事件通知。在给NS1的事件通知中包括目录Dir1的标识、监听掩码和事件内容。在给NS2的事件通知中包括目录Dir2的标识、监听掩码和事件内容。其中,事件内容为创建新文件/Dir1/Dir2/Dir4/Dir6/文件8。
对应的,在监听器所注册的NS一侧,请参考图7所示,该方法包括:
步骤401:NS接收发生事件变化的CA发送的第一事件通知;第一事件通知包括第一目录的标识、监听掩码以及事件内容;
步骤402:NS根据第一目录的标识获得注册的用于监听第一目录的监听器;所述监听器的属性信息包括所述第一目录的标识、监听掩码以及注册所述监听器的CA的标识;
步骤403:NS确定第一事件通知中的监听掩码和所述属性信息中的监听掩码匹配;
步骤404:NS向注册监听器的CA发送第二事件通知,其中,所述第二事件通知包括第一目录的标识、监听掩码以及所述事件内容。
注册监听器的CA在接收到第二事件通知后,直接回调协议接口,通过SMB2.0打包消息通知用户态。
举例来说,请参考图8所示,为注册的监听器的目录树。假设目录Dir1被注册了监听器,目录Dir1的标识为FID1。该监听器注册在NS1上。监听注册者有CA1。监听掩码为mask1。假设目录Dir2被注册了监听器,目录Dir2的标识为FID2。该监听器的注册在NS2上。监听注册者有CA1和CA2。监听掩码为mask2。
接下来请参考图9所示,当CA3上进行创建新文件(文件8)时,确定新文件的全路径(Dir1/Dir2/Dir4/Dir6/文件8)上个各级目录(Dir1/Dir2/Dir4/Dir6/)的vnode是有效的,其中,MDS(1,2,3)表示根据目录的不同,可能需要从不同的MDS上获取监听器信息,然后根据监听器信息设置各级目录的vnode有效,具体确定方法如前所述,在此不再赘述。当CA3创建新文件(文件8)成功后,CA3就确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录。在本实施例中,目录Dir1和目录Dir2上注册了监听器,因此,第一目录为目录Dir1和目录DIR2。因此,CA3根据目录Dir1和目录Dir2的标识分别确定目录Dir1和目录Dir2的监听器注册在哪个NS上。在本实施例中为目录Dir1和目录Dir2的监听器分别注册在NS1和NS2上。因此,CA3分别向NS1和NS2发送第一事件通知。发给NS1的第一事件通知中包括目录Dir1的标识、监听掩码、事件的内容。发给NS2的第一事件通知中包括目录Dir2的标识、监听掩码、事件内容。那么NS1和NS2在接收到CA3的第一事件通知之后,NS1根据目录Dir1的标识查找到注册的监听器,发现CA1注册了目录Dir1的监听器,CA1和CA2注册了目录Dir2的监听器。因此,NS1给CA1发送第二事件通知;NS2分别给CA1和CA2发送第二事件通知。NS1向CA1发送的第二事件通知中包括目录Dir1的标识、监听掩码和事件内容。NS2向CA1和CA2发送的第二事件通知中包括目录Dir2的标识、监听掩码和事件内容。当CA1和CA2接收到事件通知之后,就回调协议接口将事件通知给用户态。
由以上描述可以看出,在本申请实施例中,因为在发生事件变化时,CA可以根据发生事件变化的目录/文件的全路径上的各级目录的vnode的监听器计数快速得知各级目录中哪个目录注册了监听器,而无需像现有技术中那样,由MDS逐级查询各级目录的Inode中是否注册有监听器,因为每一级目录的Inode可能不在同一MDS上,所以需要发送消息给其他MDS进行查询,因此,需要多次路由才能回溯到注册了监听器的父目录。
进一步,在本申请实施例中,进行事件通知的为CA和NS,而不需要MDS进行事件通知,所以这样就不需要考虑元数据采用的什么分布方式和迁移方式。换言之,本申请实施例中的事件通知方法不依赖于元数据的布局方式和迁移方式。
基于同一发明构思,请参考图10所示,为本申请实施例提供的一种事件通知装置的功能框图。该装置用于实现如图6及其实施例所述的事件通知方法。如图10所示,该装置包括:处理单元501,用于当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;当所述CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录;根据所述第一目录的标识在多个NS中确定出所述第一目录的监听器所注册的NS;其中,所述多个NS的数量与所有CA的数量相同;所述所注册的NS上保存有所述第一目录的监听器的属性信息,所述属性信息包括所述第一目录的标识、监听掩码与注册所述监听器的CA的标识;所述监听掩码用于表示监听的事件类型;发送单元502,用于向所述所注册的NS发送事件通知,所述事件通知包括所述第一目录的标识、监听掩码以及与所述操作对应的事件内容;以使所述所注册的NS能够在所述事件通知中的监听掩码和所述属性信息中的监听掩码匹配时,向所述注册所述监听器的CA发送事件通知。
可选的,处理单元501具体用于:当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;
当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;
发送单元502还用于:当所述标记信息表示所述vnode无效时,向元数据服务器MDS获取所述无效的vnode所对应的目录的监听器信息,处理单元501还用于根据所述监听器信息更新所述无效的vnode信息为有效的vnode;
发送单元502还用于当所述各级目录中的目录不存在vnode时,向MDS获取所述不存在vnode的目录的监听器信息,处理单元501还用于根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
可选的,所述装置还包括接收单元,用于当所述标记信息表示所述vnode无效时,在处理单元501查看所述vnode的标记信息之前,接收锁服务器发送的广播消息,所述广播消息用于通知所述装置所述无效的vnode所对应的目录的元数据将要发生变化;
处理单元501还用于:将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
前述图6实施例中的事件通知方法中的各种变化方式和具体实例同样适用于本实施例的事件通知装置,通过前述对事件通知方法的详细描述,本领域技术人员可以清楚的知道本实施例中事件通知装置的实施方法,所以为了说明书的简洁,在此不再详述。
基于同一发明构思,请参考图11所示,为本申请实施例提供的一种CA的系统框图。用于实现如图6及其实施例所述的事件通知方法。如图11所示,该CA包括:处理器602,用于当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;当所述CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录;根据所述第一目录的标识在多个通知服务器NS中确定出所述第一目录的监听器所注册的NS;其中,所述多个NS的数量与所有CA的数量相同;所述所注册的NS上保存有所述第一目录的监听器的属性信息,所述属性信息包括所述第一目录的标识、监听掩码与注册所述监听器的CA的标识;所述监听掩码用于表示监听的事件类型;发送器603,用于向所述所注册的NS发送事件通知,所述事件通知包括所述第一目录的标识、监听掩码以及与所述操作对应的事件内容;以使所述所注册的NS能够在所述事件通知中的监听掩码和所述属性信息中的监听掩码匹配时,向所述注册所述监听器的CA发送事件通知。
可选的,处理器602具体用于:当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;
当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;
发送器603还用于:当所述标记信息表示所述vnode无效时,向MDS获取所述无效的vnode所对应的目录的监听器信息,处理器602还用于根据所述监听器信息更新所述无效的vnode信息为有效的vnode;
发送器603还用于当所述各级目录中的目录不存在vnode时,向MDS获取所述不存在vnode的目录的监听器信息,处理器602还用于根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
进一步,客户端还包括接收器601,用于当所述标记信息表示所述vnode无效时,在处理器602查看所述vnode的标记信息之前,接收锁服务器发送的广播消息,所述广播消息用于通知所述CA所述无效的vnode所对应的目录的元数据将要发生变化;
处理器602还用于:将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
进一步,在图11中,总线架构(用总线600来代表),总线600可以包括任意数量的互联的总线和桥,总线600将包括由处理器602代表的一个或多个处理器和存储器604代表的存储器的各种电路链接在一起。总线600还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口605在总线600和处理器602、接收器601、发送器603之间提供接口。接收器601和发送器603用于CA与外部设备进行数据通信。
处理器602负责管理总线600和通常的处理。存储器604可以被用于存储处理器602在执行操作时所使用的数据。
前述图6实施例中的事件通知方法中的各种变化方式和具体实例同样适用于本实施例的CA,通过前述对事件通知方法的详细描述,本领域技术人员可以清楚的知道本实施例中CA的实施方法,所以为了说明书的简洁,在此不再详述。
基于同一发明构思,请参考图12所示,为本申请实施例提供的一种事件通知装置的功能框图。该装置用于实现如图7及其实施例所述的事件通知方法。如图12所示,该装置包括:接收单元701,用于接收发送事件变化的CA发送的第一事件通知;所述第一事件通知包括第一目录的标识、监听掩码以及事件内容;所述监听掩码用于表示监听的事件类型;处理单元702,用于根据所述第一目录的标识获得注册的用于监听所述第一目录的监听器;所述监听器的属性信息包括所述第一目录的标识、监听掩码以及注册所述监听器的CA的标识;确定所述第一事件通知中的监听掩码和所述监听器的属性信息中的监听掩码匹配;发送单元703,用于向注册所述监听器的CA发送第二事件通知;所述第二事件通知包括所述第一目录的标识、所述监听掩码以及所述事件内容。
前述图7实施例中的事件通知方法中的各种变化方式和具体实例同样适用于本实施例的事件通知装置,通过前述对事件通知方法的详细描述,本领域技术人员可以清楚的知道本实施例中事件通知装置的实施方法,所以为了说明书的简洁,在此不再详述。
基于同一发明构思,请参考图13所示,为本申请实施例提供的一种NS的系统框图。用于实现如图7及其实施例所述的事件通知方法。如图13所示,该NS包括:接收器801,用于接收发送事件变化的CA发送的第一事件通知;所述第一事件通知包括第一目录的标识、监听掩码以及事件内容;所述监听掩码用于表示需要监听的事件类型;处理器803,用于根据所述第一目录的标识获得注册的用于监听所述第一目录的监听器;所述监听器的属性信息包括所述第一目录的标识、监听掩码以及注册所述监听器的CA的标识;确定所述第一事件通知中的监听掩码和所述监听器的属性信息中的监听掩码匹配;发送器802,用于向注册所述监听器的CA发送第二事件通知;所述第二事件通知包括所述第一目录的标识、所述监听掩码以及所述事件内容。
进一步,在图13中,总线架构(用总线800来代表),总线800可以包括任意数量的互联的总线和桥,总线800将包括由处理器803代表的一个或多个处理器和存储器804代表的存储器的各种电路链接在一起。总线800还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口805在总线800和处理器803、接收器801、发送器802之间提供接口。接收器801和发送器802用于NS与外部设备进行数据通信。
处理器803负责管理总线800和通常的处理。存储器804可以被用于存储处理器803在执行操作时所使用的数据。
在实际运用中,NS和前述实施例中的CA在物理上为一个设备。两者也可以相互独立的设备。
前述图7实施例中的事件通知方法中的各种变化方式和具体实例同样适用于本实施例的CA,通过前述对事件通知方法的详细描述,本领域技术人员可以清楚的知道本实施例中CA的实施方法,所以为了说明书的简洁,在此不再详述。
基于同一发明构思,请参考图14所示,为本申请实施例提供的一种监听器的处理装置的功能框图。该处理装置用于实施图3及其实施例所描述的处理方法。如图14所示,该处理装置包括:接收单元901,用于接收用于处理监听器的第一消息,所述第一消息中携带监听的目录/文件以及监听掩码;其中,所述监听掩码用于表示监听的事件类型;处理单元902,用于获取所述监听的目录/文件的标识;根据所述监听的目录/文件的标识在多个通知服务器NS中确定出本次处理的NS;其中,所述多个NS的数量与所有装置的数量相同;发送单元903,用于向确定出的所述本次处理的NS发送用于处理监听器的第二消息,所述第二消息中携带所述装置的标识、所述监听的目录/文件的标识以及所述监听掩码。
可选的,发送单元903还用于:向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求;以使所述锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的节点信息vnode无效;
接收单元901还用于:接收所述锁服务器返回的拿锁成功的消息。
可选的,发送单元903还用于:向MDS发送所述监听的目录/文件的标识和所述监听掩码。
前述图3实施例中的处理方法中的各种变化方式和具体实例同样适用于本实施例的处理装置,通过前述对处理方法的详细描述,本领域技术人员可以清楚的知道本实施例中处理装置的实施方法,所以为了说明书的简洁,在此不再详述。
基于同一发明构思,请参考图15所示,为本申请实施例提供的一种CA的系统框图。该CA用于实施图3及其实施例所描述的处理方法。如图15所示,该CA包括:接收器1001,用于接收用于处理监听器的第一消息,所述第一消息中携带监听的目录/文件以及监听掩码;其中,所述监听掩码用于表示监听的事件类型;处理器1002,用于获取所述监听的目录/文件的标识;根据所述监听的目录/文件的标识在多个NS中确定出本次处理的NS;其中,所述多个NS的数量与所有CA的数量相同;发送器1003,用于向确定出的所述本次处理的NS发送用于处理监听器的第二消息,所述第二消息中携带所述CA的标识、所述监听的目录/文件的标识以及所述监听掩码。
可选的,发送器1003还用于:向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求;以使所述锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的节点信息vnode无效;
接收器1001还用于:接收所述锁服务器返回的拿锁成功的消息。
可选的,发送器1003还用于:向MDS发送所述监听的目录/文件的标识和所述监听掩码。
进一步,在图15中,总线架构(用总线1000来代表),总线1000可以包括任意数量的互联的总线和桥,总线1000将包括由处理器1002代表的一个或多个处理器和存储器1004代表的存储器的各种电路链接在一起。总线1000还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口1005在总线1000和处理器1002、接收器1001、发送器1003之间提供接口。接收器1001和发送器1003用于CA与外部设备进行数据通信。
处理器1002负责管理总线1000和通常的处理。存储器1004可以被用于存储处理器1002在执行操作时所使用的数据。
前述图3实施例中的处理方法中的各种变化方式和具体实例同样适用于本实施例的CA,通过前述对处理方法的详细描述,本领域技术人员可以清楚的知道本实施例中CA的实施方法,所以为了说明书的简洁,在此不再详述。
申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
在本申请实施例中,因为在发生事件变化时,CA可以根据发生事件变化的目录/文件的全路径上的各级目录的vnode的监听器计数快速得知各级目录中哪个目录注册了监听器,而无需像现有技术中那样,由MDS逐级查询各级目录的Inode中是否注册有监听器,因为每一级目录的Inode可能不在同一MDS上,所以需要发送消息给其他MDS进行查询,因此,需要多次路由才能回溯到注册了监听器的父目录。
进一步,在本申请实施例中,进行事件通知的为CA和NS,而不需要MDS进行事件通知,所以这样就不需要考虑元数据采用的什么分布方式和迁移方式。换言之,本申请实施例中的事件通知方法不依赖于元数据的布局方式和迁移方式。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (12)
1.一种事件通知方法,其特征在于,包括:
当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;
所述CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录,其中,目录的vnode中监听器计数不为零表示存在CA注册所述目录的监听器;
所述CA根据所述第一目录的标识在多个通知服务器NS中确定出所述第一目录的监听器所注册的NS;其中,所述多个NS的数量与所有CA的数量相同;所述所注册的NS上保存有所述第一目录的监听器的属性信息,所述属性信息包括所述第一目录的标识、监听掩码与注册所述监听器的CA的标识;所述监听掩码用于表示监听的事件类型;
所述CA向所述所注册的NS发送事件通知,所述事件通知包括所述第一目录的标识、监听掩码以及与所述操作对应的事件内容;以使所述所注册的NS能够在所述事件通知中的监听掩码和所述属性信息中的监听掩码匹配时,向所述注册所述监听器的CA发送事件通知。
2.如权利要求1所述的方法,其特征在于,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的,包括:
当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;
当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;
当所述标记信息表示所述vnode无效时,所述CA向元数据服务器MDS获取所述无效的vnode所对应的目录的监听器信息,并根据所述监听器信息更新所述无效的vnode信息为有效的vnode;
当所述各级目录中的目录不存在vnode时,所述CA向元数据服务器MDS获取所述不存在vnode的目录的监听器信息,并根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
3.如权利要求2所述的方法,其特征在于,当所述标记信息表示所述vnode无效时,在查看所述vnode的标记信息之前,所述方法还包括:
所述CA接收锁服务器发送的广播消息,所述广播消息用于通知所述CA所述无效的vnode所对应的目录的元数据将要发生变化;
所述CA将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
4.一种监听器的处理方法,其特征在于,包括:
客户端CA接收用于处理监听器的第一消息,所述第一消息中携带监听的目录/文件以及监听掩码;其中,所述监听掩码用于表示监听的事件类型;
所述CA获取所述监听的目录/文件的标识;
所述CA根据所述监听的目录/文件的标识在多个通知服务器NS中确定出本次处理的NS;其中,所述多个NS的数量与所述CA的数量相同;
所述CA向确定出的所述本次处理的NS发送用于处理监听器的第二消息,所述第二消息中携带所述CA的标识、所述监听的目录/文件的标识以及所述监听掩码;
在监听器处理成功之后,所述CA修改所述监听的目录/文件的vnode中的监听器计数,其中,目录的vnode中监听器计数不为零表示存在CA注册所述目录的监听器。
5.如权利要求4所述的方法,其特征在于,在所述CA向确定出的所述本次处理的NS发送用于处理监听器的第二消息之后,所述方法还包括:
所述CA向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求;以使所述锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的节点信息vnode无效;
所述CA接收所述锁服务器返回的拿锁成功的消息。
6.如权利要求4或5所述的方法,其特征在于,所述方法还包括:
所述CA向元数据服务器MDS发送所述监听的目录/文件的标识和所述监听掩码。
7.一种事件通知装置,其特征在于,包括:
处理单元,用于当客户端CA进行使得目录/文件发生变化的操作时,确定所述目录/文件的全路径上的各级目录的节点信息vnode是有效的;当所述CA完成所述操作后,确定所述各级目录的vnode中监听器计数不为零的vnode所对应的第一目录,其中,目录的vnode中监听器计数不为零表示存在CA注册所述目录的监听器;根据所述第一目录的标识在多个通知服务器NS中确定出所述第一目录的监听器所注册的NS;其中,所述多个NS的数量与所有CA的数量相同;所述所注册的NS上保存有所述第一目录的监听器的属性信息,所述属性信息包括所述第一目录的标识、监听掩码与注册所述监听器的CA的标识;所述监听掩码用于表示监听的事件类型;
发送单元,用于向所述所注册的NS发送事件通知,所述事件通知包括所述第一目录的标识、监听掩码以及与所述操作对应的事件内容;以使所述所注册的NS能够在所述事件通知中的监听掩码和所述属性信息中的监听掩码匹配时,向所述注册所述监听器的CA发送事件通知。
8.如权利要求7所述的装置,其特征在于,所述处理单元具体用于:当所述各级目录中的目录存在vnode时,查看所述vnode的标记信息;
当所述标记信息表示所述vnode有效时,确定所述vnode是有效的;
所述发送单元还用于:当所述标记信息表示所述vnode无效时,向元数据服务器MDS获取所述无效的vnode所对应的目录的监听器信息,所述处理单元还用于根据所述监听器信息更新所述无效的vnode信息为有效的vnode;
所述发送单元还用于当所述各级目录中的目录不存在vnode时,向元数据服务器MDS获取所述不存在vnode的目录的监听器信息,所述处理单元还用于根据所述监听器信息创建所述目录的vnode并设置为有效的vnode。
9.如权利要求8所述的装置,其特征在于,所述装置还包括接收单元,用于当所述标记信息表示所述vnode无效时,在所述处理单元查看所述vnode的标记信息之前,接收锁服务器发送的广播消息,所述广播消息用于通知所述装置所述无效的vnode所对应的目录的元数据将要发生变化;
所述处理单元还用于:将所述目录的vnode的标记信息设置为表示所述目录的vnode无效的信息。
10.一种监听器的处理装置,其特征在于,包括:
接收单元,用于接收用于处理监听器的第一消息,所述第一消息中携带监听的目录/文件以及监听掩码;其中,所述监听掩码用于表示监听的事件类型;
处理单元,用于获取所述监听的目录/文件的标识;根据所述监听的目录/文件的标识在多个通知服务器NS中确定出本次处理的NS;其中,所述多个NS的数量与所有装置的数量相同;
发送单元,用于向确定出的所述本次处理的NS发送用于处理监听器的第二消息,所述第二消息中携带所述装置的标识、所述监听的目录/文件的标识以及所述监听掩码;
所述处理单元还用于:在监听器处理成功之后,修改所述监听的目录/文件的vnode中的监听器计数,其中,目录的vnode中监听器计数不为零表示存在CA注册所述目录的监听器。
11.如权利要求10所述的装置,其特征在于,所述发送单元还用于:向锁服务器发送获取所述监听的目录/文件的元数据的锁的请求;以使所述锁服务器根据所述请求通知其它CA所述元数据将要发生变化,所述其它CA中所述监听的目录/文件的节点信息vnode无效;
所述接收单元还用于:接收所述锁服务器返回的拿锁成功的消息。
12.如权利要求10或11所述的装置,其特征在于,所述发送单元还用于:向元数据服务器MDS发送所述监听的目录/文件的标识和所述监听掩码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410856662.9A CN104636437B (zh) | 2014-12-31 | 2014-12-31 | 一种事件通知方法、监听器的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410856662.9A CN104636437B (zh) | 2014-12-31 | 2014-12-31 | 一种事件通知方法、监听器的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104636437A CN104636437A (zh) | 2015-05-20 |
CN104636437B true CN104636437B (zh) | 2018-06-05 |
Family
ID=53215183
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410856662.9A Active CN104636437B (zh) | 2014-12-31 | 2014-12-31 | 一种事件通知方法、监听器的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104636437B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933932B (zh) * | 2015-12-31 | 2020-11-06 | 华为技术有限公司 | 数据处理方法、装置及应用服务器 |
CN106789307B (zh) * | 2016-12-30 | 2019-12-03 | 腾讯科技(深圳)有限公司 | 配置数据处理方法、装置及系统 |
CN110881055A (zh) * | 2018-09-05 | 2020-03-13 | 易保网络技术(上海)有限公司 | 基于Redis的微服务处理方法和设备 |
CN110109882A (zh) * | 2019-04-02 | 2019-08-09 | 北京大麦地信息技术有限公司 | 一种在线协作处理文件的方法、装置、电子设备及服务器 |
CN110069221B (zh) * | 2019-04-30 | 2020-03-06 | 北京华三通信技术有限公司 | 数据释放方法及装置 |
CN110941591A (zh) * | 2019-11-22 | 2020-03-31 | 浪潮电子信息产业股份有限公司 | 一种文件删除方法、装置、设备及可读存储介质 |
CN111756836B (zh) * | 2020-06-23 | 2022-09-23 | 深圳平安医疗健康科技服务有限公司 | 一种基于事件管理模型的信息发送方法及装置 |
CN113688106B (zh) * | 2021-10-27 | 2022-04-15 | 广东睿江云计算股份有限公司 | 文件监听方法及装置 |
CN115687168B (zh) * | 2023-01-05 | 2023-04-25 | 北京志翔科技股份有限公司 | 文件操作通知系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051267A (zh) * | 2006-05-26 | 2007-10-10 | 华为技术有限公司 | 一种可扩展文档模型及管理文档模型的方法 |
US7809776B1 (en) * | 2007-11-30 | 2010-10-05 | Netapp, Inc. | System and method for supporting change notify watches for virtualized storage systems |
US8266136B1 (en) * | 2009-04-13 | 2012-09-11 | Netapp, Inc. | Mechanism for performing fast directory lookup in a server system |
CN103001926A (zh) * | 2011-09-09 | 2013-03-27 | 华为技术有限公司 | 一种订阅通知的方法、装置和系统 |
CN103051721A (zh) * | 2012-12-26 | 2013-04-17 | 华为技术有限公司 | 一种事件通知方法及装置 |
-
2014
- 2014-12-31 CN CN201410856662.9A patent/CN104636437B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051267A (zh) * | 2006-05-26 | 2007-10-10 | 华为技术有限公司 | 一种可扩展文档模型及管理文档模型的方法 |
US7809776B1 (en) * | 2007-11-30 | 2010-10-05 | Netapp, Inc. | System and method for supporting change notify watches for virtualized storage systems |
US8266136B1 (en) * | 2009-04-13 | 2012-09-11 | Netapp, Inc. | Mechanism for performing fast directory lookup in a server system |
CN103001926A (zh) * | 2011-09-09 | 2013-03-27 | 华为技术有限公司 | 一种订阅通知的方法、装置和系统 |
CN103051721A (zh) * | 2012-12-26 | 2013-04-17 | 华为技术有限公司 | 一种事件通知方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104636437A (zh) | 2015-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104636437B (zh) | 一种事件通知方法、监听器的处理方法及装置 | |
US11177999B2 (en) | Correlating computing network events | |
CN107231402B (zh) | Http请求处理方法、装置及系统 | |
CN111399756B (zh) | 一种数据存储方法、数据下载方法及装置 | |
CN108683668B (zh) | 内容分发网络中的资源校验方法、装置、存储介质及设备 | |
JP2007012077A (ja) | ネットワークを介したコンテンツをアドレス可能なデータに対するアクセス | |
CN108650519A (zh) | 基于区块链的发布信息的方法及装置 | |
CN108289034B (zh) | 一种故障发现方法和装置 | |
JP2009193250A (ja) | 分散ディレクトリサーバ、分散ディレクトリシステム、分散ディレクトリ方法、およびプログラム | |
CN108847952A (zh) | 请求链路上下文的处理方法、装置及系统 | |
CN104346426B (zh) | 共享数据去重复的方法和系统 | |
CN108282525A (zh) | 基于对等网络的视频资源管理系统和方法 | |
CN108737586B (zh) | 一种域名查询服务的灾备切换方法和装置 | |
KR102009020B1 (ko) | 검색 엔진으로 웹 사이트 인증 데이터를 제공하기 위한 방법 및 장치 | |
CN104580428A (zh) | 一种数据路由方法、数据管理装置和分布式存储系统 | |
CN106657360A (zh) | 一种Linux系统下NIS服务器的同步方法和系统 | |
CN107103034A (zh) | 基于ldap的tfas数据信息目录服务方法 | |
CN115617781A (zh) | 数字对象创建、数据管理方法及装置 | |
CN109697036A (zh) | 一种信息处理方法及装置 | |
CN109495319A (zh) | Cdn节点的故障信息确定方法、装置及设备 | |
US9917738B2 (en) | Intelligent device data router | |
US20190155790A1 (en) | Event-based synchronization in a file sharing environment | |
Dai et al. | A method of UDDI service subscription implementation | |
JP2020095434A (ja) | 通信装置、通信方法、および通信プログラム | |
KR20100046090A (ko) | 인터넷 정보 검색 시스템 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211223 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: Super fusion Digital Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |