使用层次数据结构节点上递归式事件监听器的方法和系统的制作方法_2

文档序号:9252413阅读:来源:国知局
生的事件的列表;并且
[0048]由新服务器将事件的列表发送至客户端。
[0049]在本发明的实施方式中,还要求保护一种装置,包括:
[0050]服务器;
[0051]接收器模块,被配置为与服务器设备协作,以从客户端接收在源节点上注册事件监听器的请求,源节点是层级中连接至彼此的多个节点中的一个,每个节点均代表存储单元的逻辑分区;
[0052]注册模块,被配置为与接收器模块协作,以在源节点上注册事件监听器,事件监听器被配置为向客户端通知源节点中第一事件的发生;
[0053]层级确定模块,被配置为与注册模块协作,用于确定源节点在层级中是否具有下代节点;以及
[0054]层级事件处理器模块,被配置为与层级确定模块协作,以响应于确定源节点在层级中具有下代节点,将事件监听器设置为向客户端通知下代节点中第二事件的发生,而不需要在下代节点上注册另一事件监听器。
[0055]事件监听器可被进一步配置为与注册模块协作,以在源节点中发生第一事件或者下代节点中发生第二事件中的至少一个时,将向客户端通知发生第一事件或者第二事件中的至少一个。
[0056]事件监听器模块可被进一步配置为:
[0057]监听第一事件的发生,其中,监听第一事件的发生包括:由服务器确定是否将对应于源节点的服务器的内存中的比特设置为指示在源节点上注册事件监听器的预定值;
[0058]监听第二事件的发生,而不需要确定是否将对应于源节点的服务器的内存中的比特设置为指示在后代节点上注册事件监听器的预定值;并且
[0059]将向客户端通知源节点中发生的第一事件或者后代节点中发生的第二事件。
[0060]事件监听器可被进一步配置为通知发生了预定类型的事件,预定类型的事件包括
(i)创建新的节点、Qi)删除现有节点、或者Qi)修改现有节点中的至少一个。
[0061]存储单元可包括多个逻辑分区,每个逻辑分区均包含存储单元中包含的数据的单独非重叠子集。
[0062]在本发明的进一步实施方式中,一种或者多种计算机可读的非易失性存储介质体现在被执行时可操作为执行根据本发明或者上述所述实施方式中任一种所述的方法的软件。
[0063]在本发明的进一步实施方式中,一种系统包括:一个或者多个处理器;和内存,内存耦接至包括由处理器执行的指令的处理器,处理器在执行指令时可操作为执行根据本发明或者上述所述实施方式中任一种所述的方法。
【附图说明】
[0064]图1示出了本发明的实施方式可在其中运行的环境。
[0065]图2是示出了层次数据结构中的节点上的递归式事件监听器的框图。
[0066]图3是用于在层次数据结构中的节点上注册递归式事件监听器的流程图。
[0067]图4是用于通知层次数据结构的节点中是否发生事件的流程图。
[0068]图5提供示出了在图1的协调服务中注册递归式事件监听器的实施例。
[0069]图6是示出了响应于客户端与服务器之间的通信失败而由客户端重新注册递归式事件监听器的过程的流程图。
[0070]图7是可执行各种操作并且存储通过该操作产生和/或使用的各种信息的装置的框图。
【具体实施方式】
[0071]在本说明书中,参考“实施方式”、“一种实施方式”等指本发明的至少一种实施方式中包括所描述的具体特征、功能、或者特性。在本说明书中出现的该等短语并不一定必须全部指同一实施方式,也不一定必须相互排斥。
[0072]公开了一种用于在层次数据结构中的节点上注册递归式事件监听器的方法和系统。本公开技术的实施方式包括从客户端接收在源节点上注册事件监听器的请求。源节点是层级中彼此相关的多个节点中的一个并且每个节点均代表(例如)存储设备的逻辑分区。服务器在源节点上注册事件监听器,并且事件监听器被配置为向客户端通知源节点中发生第一事件。此外,服务器确定源节点在层级中是否具有后代节点并且响应于确定源节点在层级中具有后代节点,服务器将事件监听器设置为向客户端通知后代节点中发生第二事件,而不需要在后代节点上注册另一事件监听器。
[0073]此后,除非另有注释,否则,术语“事件监听器”也指“递归式事件监听器”。非递归式事件监听器被称之为“非递归式事件监听器”。
[0074]环培
[0075]图1示出了本公开技术的实施方式可在其中运行的环境100。如图所示,环境100包括协调服务125,例如,协调服务可以是从马里兰,森林山(Forest Hill, Maryland)的阿帕奇软件基金会(Apache Software Foundat1n)获得的ZooKeeper?服务的实现方式。在另一实施方式中,环境100可包括为分布式系统或者分布式应用提供协调服务的其他相似服务。协调服务125提供诸如用于分布式应用的同步、配置维护、分组、以及命名等协调服务。在称为集合体的一组服务器105上复制协调服务125。(在下文中,服务器120的组105也被称之为“组”或者“集合体”)。只要组105中的大多数服务器可用,则可使用协调服务125。组105中的每个服务器均具有诸如每个其他服务器的状态等信息。
[0076]在集合体105中,一个服务器可用作主导器115,主导器的任务是经由共识接受交易并且协调交易(诸如,写)。在该集合体中,除主导器115之外的服务器可用作跟随器,其是主导器115的直接、只读复制品。在协调服务125中,将来自客户端的一些写请求转发至主导器115。跟随器从主导器115接收提议并且可同意或者不同意服务来自客户端的请求。此外,在协调服务125中,如果主导器115出现故障或者通过其他方式变得不可用,则任何其他跟随器可经由共识而变成新的主导器并且可继续服务请求。跟随器的其余部分可与新的主导器同步。
[0077]环境100包括存储介质,诸如包含由使用协调服务125的应用(未示出)所使用的数据的数据库(未示出)。例如,在诸如社交网络环境的应用中,数据库可包含用户简档数据。数据库被划分成多个逻辑分区,也被称为“碎片”,其中每个逻辑分区均可包含数据库中的数据的子集。例如,在社交网络应用中,如果数据库包含100000个用户的用户简档数据,则第一碎片可包含用户I至10000的用户简档数据,第二碎片可包含用户1001至20000的用户简档数据等。数据库中的每个碎片均包含数据库中的数据的单独非重叠子集。
[0078]数据库中的碎片可表示为层次数据结构(诸如树结构130)中的节点的集合。例如,在服务器120的内存中创建树结构130。客户端110通过访问服务器120的树结构130中的对应节点而访问数据库的碎片中的数据。树结构130中的根节点“A”可代表用户数据库,节点“B”可代表具有用户I至10000的用户数据的碎片,节点“C”可代表具有用户10001至20000的用户数据的碎片,并且节点“D”可代表具有用户20001至30000的用户数据的碎片。
[0079]客户端110可订阅树结构130中的任一节点中发生事件的通知。为了使客户端110订阅节点中发生事件的通知,客户端110可请求服务器120在具体节点上注册事件监听器。例如,客户端110请求服务器120在树结构130中的节点A上注册事件监听器。事件监听器可以是递归式事件监听器或者非递归式事件监听器。
[0080]非递归式事件监听器仅监控事件监听器注册在其上的节点中发生的事件。例如,如果客户端110已经在节点A上注册非递归式事件监听器,则仅在节点A中发生事件时才向客户端Il0通知发生事件。不向客户端110通知节点A的后代节点中发生的事件。(在一些实施方式中,如果节点的子代改变,则可通知客户端,但是,仅通知一次,例如,第一次。)另一方面,如果客户端110在节点A上注册递归式事件监听器,则向客户端110通知节点A或者在树结构130中的节点A的后代节点中发生的事件。例如,如果客户端110已经在节点A上注册递归式事件监听器,则向客户端110通知在节点A和/或节点A的任一后代节点(即,节点B至F)中发生的事件。同样,如果在节点B上注册递归式事件监听器,则向客户端110通知在节点B或者其后代节点E和F中的任一个中发生的事件。
[0081]因为在节点上注册递归式事件监听器将在该节点或者其后代节点中发生的事件通知给订户,所以本技术消除了使客户端在该节点的后代节点上注册事件监听器的需求。从而减少了在所有后代节点上注册非递归式事件监听器所消耗的时间和网络带宽。此外,因为可以存储用于监控节点及其后代节点的单个注册,所以还可减少用于存
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1