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

文档序号:9252413阅读:来源:国知局
储递归式事件监听器注册所消耗的内存。另一方面,在非递归式注册中,通常,存在与客户端100希望监控的节点的数目一样多的注册。因此,至少就具有层次数据结构的应用中的目前非递归式事件监听器所消耗的时间、内存、以及网络带宽方面而言,递归式事件监听器允许明显改善整个系统的性能。
[0082]图2是示出了根据本公开技术的实施方式的、层次数据结构中的节点上的递归式事件监听器的框图。系统200可以是图1中的环境100或者相似环境。系统200包括服务器215以及通过通信网络210与服务器215通信的客户端205。客户端205和服务器215可在相同的物理机器或者不同的机器上运行。客户端205可请求在服务器215中的树结构220上注册递归式事件监听器245。例如,客户端205请求在树结构220的节点B上注册递归式事件监听器245。被配置为与服务器215通信的接收器模块225从客户端205接收在树结构220中的节点B上注册递归式事件监听器245的请求。
[0083]注册模块230在树结构220中的节点B上注册递归式事件监听器245。此外,注册模块230将服务器的内存中对应于节点B的字段(例如,比特或者比特组)设置为指示在节点B上注册递归式事件监听器245的预定值。在节点B上注册的递归式事件监听器245向客户端205通知在节点B中发生事件。在节点B上注册递归式事件监听器245之后,层次确定模块235确定节点B在树结构220中是否具有任何后代节点。响应于确定节点B具有后代节点E和F,层级事件处理器模块240将在节点B上注册的递归式事件监听器245设置成监听并且通知在除节点B之外的节点E或者F中所发生的事件。递归式事件监听器245将在树结构220中的节点B、E、或者F中的至少一个中发生的事件向客户端205通知。因此,递归式事件监听器245提供以下优点:获得在多个节点中发生的事件的通知、且仅在单个节点上注册。
[0084]能够在树结构220中的节点中发生的事件类型包括:创建新的节点、修改现有节点、或者删除现有节点。在节点B、E或者F中发生的事件可以是相同类型或者不同的类型。此外,事件监听器245被配置为将所发生的任意上述事件类型向客户端通知。
[0085]在实施方式中,树结构220中的每个节点均代表存储单元(诸如数据库250)的不同逻辑分区。在另一实施方式中,至少树结构220中的一些节点代表了数据库245的不同逻辑分区中包含的数据。例如,树结构220可代表在数据库的多个碎片中具有多个用户的用户简档数据的用户数据库。在又一实施方式中,节点可代表系统200的其他实体。树结构220可被包含在服务器215的内存中。
[0086]各个模块,即,接收器模块225、注册模块230、层级确定模块235、层级事件处理器模块240、以及递归式事件监听器245可与服务器215在相同的机器上运行、或者在不同的机器上运行、可与服务器215集成、或者可与服务器215协作运行。
[0087]客户端205还可以在节点A至G中的任意节点上注册非递归式事件监听器。在实施方式中,如果由递归式事件监听器和非递归式事件监听器两者监听节点中的事件,则仅将事件发生的一个通知发送至客户端205。例如,如果客户端205已经在节点B上注册递归式事件监听器245并且在节点B或者其后代节点E和F上注册非递归式事件监听器(未示出),则在节点B、E、或者F中发生事件时,客户端205将仅接收有关节点B、E、或者F的任意节点中发生的事件的通知。客户端可能未从服务器接收有关递归式事件监听器和非递归式事件监听器的单独通知。
[0088]即使在将节点B、E、或者F中发生的事件向客户端205通知之后,在节点(例如,节点B)上注册的递归式事件监听器245也存留。另一方面,在将该节点中发生的事件向客户端通知205之后,移除在节点上注册的非递归式事件监听器。不得不再次注册非递归式事件监听器,以继续从该节点获得发生的事件的通知。不同于非递归式事件监听器,不需要再次在该节点上注册递归式事件监听器245,以继续获得该节点中发生的事件的通知。因此,与非递归式事件监听器相比较,至少就在节点上注册递归式事件监听器所消耗的时间和网络带宽方面而言,递归式事件监听器245是高效的。
[0089]用于在层次数据结构中的节点i:注册递归式事件监听器的方法
[0090]图3是根据本公开技术的实施方式的、用于在层次数据结构中的节点上注册递归式事件监听器的过程300的流程图。在诸如图2的系统200的系统中可以实现过程300。在步骤305,服务器(或者与服务器协作工作的接收器模块)从客户端接收对于在源节点上注册事件监听器的请求。源节是层级中彼此相关的多个节点中的一个。层级中的每个节点均代表了数据库的不同逻辑分区。在步骤310,服务器(或者与服务器协作工作的注册模块)在源节点上注册事件监听器并且将事件监听器配置为向客户端通知源节点中第一事件的发生。
[0091]在确定步骤315,服务器(或者与服务器协作工作的层级确定模块)确定源节点在层级中是否具有后代节点。响应于确定源节点在层级中不具有后代节点,过程300返回至330。另一方面,响应于确定源节点在层级中具有后代节点,在步骤320,服务器(或者与服务器协作工作的层级事件处理器模块)将事件监听器设置为向客户端通知后代节点中第二事件的发生,而不需要在后代节点上注册另一事件监听器。
[0092]如步骤325所示,在源节点中发生第一事件或者后代节点中发生第二事件时,事件监听器向客户端通知至少一个第一事件或者第二事件的发生。
[0093]图4是根据本公开技术的实施方式的、用于通知层次数据结构的节点中发生的事件的过程400的流程图。在诸如图2的系统200的系统可以实现过程400。在步骤405,服务器确定该服务器的节点中是否发生了事件。该节点是层级中彼此相关的多个节点中的一个。响应于确定该节点中未发生事件,过程在435返回。
[0094]另一方面,响应于确定在该节点中发生了事件,在确定步骤410,服务器确定是否通过客户端在节点上注册了事件监听器。响应于确定在该节点上注册了事件监听器的,在步骤430,事件监听器向客户端通知该节点中发生事件。另一方面,响应于确定未在该节点上注册事件监听器,在确定步骤415,服务器确定该节点在层级中是否具有上代节点。响应于确定该节点在层级中不具有上代节点,过程400在435返回。
[0095]另一方面,响应于确定该节点在层级中确实具有上代节点,在确定步骤420,服务器确定是否已在该上代节点上注册了事件监听器。响应于确定在上代节点上注册了事件监听器的,在步骤430,事件监听器向客户端通知该节点中发生事件。另一方面,响应于确定未在上代节点上注册事件监听器,在确定步骤425,服务器确定上代节点是否是层级的根节点。响应于确定上代节点不是层级的根节点,将对过程的控制转移至步骤415。另一方面,响应于确定上代节点是层级的根节点,服务器意识到未在该节点或者上代节点上注册任何递归式事件监听器,进而过程400在435返回。
[0096]从图中可以看出,仅在一个节点上注册的递归式事件监听器可提供通知在多个节点(即,递归式事件监听器在其上注册的节点及该节点的后代节点)中发生的事件的益处。
[0097]操作实施例
[0098]图5提供示出了根据本公开技术的实施方式的、使用诸如图1中所示的协调服务中的递归式事件监听器的实施例。协调服务500包括代表从用户数据库510 (作为层次数据结构515)获得的用户简档数据的服务器505。数据库510可包含多个用户的数据,例如,社交网络应用中的用户的数据。数据库510包括多个逻辑分区,S卩,LP1、LP2、…、至LPn。每个逻辑分区均包含来自用户数据库510的用户数量可配置的的数据。在层次数据结构515中,用户数据库510可被视为根节点并且用户数据库510的逻辑分区可被视为根节点的后代节点。
[0099]客户端可请求在层次数据结构515中的任意节点上注册递归式事件监听器、非递归式事件监听器、或者这两者。例如,考虑其中客户端525具有在根节点上注册的递归式事件监听器,用户数据库510,客户端530具有在后代节点LP2上注册的递归式事件监听器和非递归式事件监听器,以及客户端535具有在根节点上注册的非递归式事件监听器,用户数据库510的情景。所有的事件监听器(即,递归式事件监听器和非递归式事件监听器)皆能够将发生的各种事件类型(诸如,在层次数据结构515中发生的创建、删除、或者修改等)中任意事件类型向客户端通知。
[0100]例如,假定在层次数据结构515中发生创建新的逻辑分区(诸
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1