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

文档序号:9252413阅读:208来源:国知局
使用层次数据结构节点上递归式事件监听器的方法和系统的制作方法
【专利说明】使用层次数据结构节点上递归式事件监听器的方法和系统
[0001]相关申请的交叉引用
[0002]本申请要求于2013年I月23日提交的美国专利申请号13/748,173的优先权,通过引用将其全部内容结合在此。
技术领域
[0003]本发明整体涉及计算机应用中的事件监听器。更具体地,本发明涉及使用层次数据结构中的节点上的递归式事件监听器。
【背景技术】
[0004]在与计算机相关的技术中,事件监听器是以下元件:检测(“监听”)软件对象(以下称之为“对象”)中特定类型(或多个特定类型)的事件的发生,并且向订户通知事件发生。在具有处于层级的不同等级(level)的对象的层次数据结构中,为了检测任一对象事件的发生(诸如,创建对象、删除对象、或者修改对象等),目前的事件监听器技术在层次数据结构中的每个对象上注册事件监听器。这些技术在注册事件监听器时通常消耗大量的时间和内存。
[0005]例如,考虑其中社交网络环境拥有100000个用户(客户端)以及包含按照代表某些用户信息的层次数据结构组织的I亿对象的服务器的情景。假定在对象上注册事件监听器消耗一比特内存。如果有100000个客户端,并且100000个客户端中的每个客户端均希望将事件监听器置于服务器的I亿个对象的每个上,则仅仅对于注册事件监听器就消耗1.25兆兆位内存。可以在对象上注册三种类型的事件监听器:(a)对象创建;(b)对象修改;以及(c)对象的子代。因此,仅仅对于注册事件监听器就消耗了 3.75兆兆位的内存。此外,如果客户端针对层级中的每个对象发送单独的注册请求,则可能消耗大量的网络带宽和时间用于注册。至少就消耗的时间、内存、以及网络带宽而言,目前的事件监听器技术通常效率较低。而且,与注册事件监听器的当前技术相关联的这种低效率可随着客户端的数目、层级中的对象的数目、或这两者的增加而显著上升。在分布式系统架构中,新的分布式应用或者服务以及希望消费该服务的新客户端可能连续增加。在该分布式环境中,用于注册事件监听器的目前技术通常由于消耗大量的资源用于注册事件监听器而使整个系统的效率明显降低。

【发明内容】

[0006]下面描述的是一种用于在层次数据结构中的节点上注册递归式事件监听器的技术。递归式事件监听器是一种事件监听器,其监听在其中注册递归式事件监听器的节点中发生的事件并且还监听在该节点的下代节点中发生的事件,而不需要在下代节点上注册递归式事件监听器或者任何其他事件监听器。尤其在具有层次数据结构的环境方面,该技术更为有效地利用了内存和处理资源,并且不受所监控的对象数目或者请求监控的客户端的数目的明显不利影响。
[0007]本公开技术的实施方式包括从客户端接收在源节点上注册事件监听器的请求。源节点是层级中彼此相关的多个节点中的一个并且每个节点均代表了存储设备的逻辑分区。服务器在源节点上注册事件监听器并且事件监听器被配置为向客户端通知源节点中发生第一事件。此外,服务器确定源节点在层级中是否具有下代节点并且响应源节点在层级中具有下代节点的确定,服务器将事件监听器设置为向客户端通知下代节点中发生第二事件,而不需要在下代节点上注册另一事件监听器。
[0008]在本公开技术的至少一些实施方式中,在该节点中发生第一事件或者下代节点中发生第二事件中的至少一个时,向客户端通知发生第一事件或者第二事件中的至少一个。
[0009]在本公开技术的至少一些实施方式中,即使向客户端通知发生第一事件或者第二事件之后,在该节点上注册的事件监听器也存留。
[0010]本发明的一些实施方式具有除上述所述之外或者替代上述所述的其他的方面、元件、特征、以及步骤。在本说明书的其余部分中描述了这些潜在的附加和替换。
[0011]在涉及方法、存储介质、以及系统的附加权利要求中具体地公开了根据本发明的实施方式,其中,在另一权利要求类别(例如,系统)中也可以要求保护在一个权利要求类别(例如,方法)中提及的任何特征。
[0012]在根据本发明的实施方式中,一种方法包括:
[0013]在计算机网络中的计算机系统处,接收来自计算机系统中的客户端的、在源节点上注册事件监听器的请求,该源节点是层级中彼此相关的多个节点中的一个,每个节点均代表了计算机系统中的存储设备的逻辑分区;
[0014]由计算机系统中的服务器在源节点上注册事件监听器,其中,事件监听器被配置为向客户端通知源节点中发生第一事件;
[0015]由服务器确定源节点在层级中是否具有下代节点;并且
[0016]响应于源节点在层级中具有下代节点的确定,由服务器将事件监听器设置为向客户端通知下代节点中发生第二事件,而不需要在下代节点上注册另一事件监听器。
[0017]在进一步的实施方式中,该方法包括:
[0018]在源节点中发生第一事件或者下代节点中发生第二事件中的至少一个时,向客户端通知发生第一事件或者第二事件中的至少一个。
[0019]在源节点上注册事件监听器可包括:
[0020]即使在向客户端通知发生第一事件或者第二事件之后,也使事件监听器存留;并且
[0021]使事件监听器存留,直至客户端移除事件监听器。
[0022]将向客户端通知发生第一事件或者第二事件,可包括:
[0023]监听第一事件的发生,其中,监听第一事件的发生包括由服务器确定是否将对应于源节点的服务器的内存中的字段设置为指示在源节点上注册的事件监听器的预定值;
[0024]监听第二事件的发生,而不需要确定是否将对应于源节点的服务器的内存中的字段设置为指示在下代节点上注册的事件监听器的预定值;并且
[0025]将向客户端通知源节点中第一事件的发生或者下代节点中第二事件的发生。
[0026]在源节点上注册事件监听器可包括将事件监听器配置为向客户端通知预定类型的第一事件或者第二事件的发生。
[0027]预定类型的第一事件或者第二事件可包括以下各项中的至少一项(i)新节点创建、(ii)删除现有节点、或者(iii)修改现有节点。
[0028]第一事件和第二事件可以为相同的预定类型的事件。
[0029]第一事件和第二事件可以为不同的预定类型的事件。
[0030]存储设备可包括多个逻辑分区,每个逻辑分区均包含存储设备中包含的数据的单独非重叠子集。
[0031]将事件监听器设置为向客户端通知下代节点中第二事件的发生,可包括:将事件监听器配置为向客户端通知沿着从层级中的源节点起始的选择路径的下代节点中发生的事件。
[0032]在源节点上注册事件监听器可包括:通过配置访问控制,将在源节点上注册的事件监听器限制为计算机系统中的用户角色的预定集合。
[0033]在根据本发明的进一步实施方式中,一种方法包括:
[0034]由计算机网络中的计算机系统确定计算机系统的服务器的源节点中是否发生了事件,源节点是层级中彼此相关的多个节点中的一个,每个节点均代表计算机系统中的存储设备的逻辑分区;并且
[0035]响应于确定源节点中发生了事件;
[0036]由服务器确定是否通过计算机系统中的客户端在源节点上注册事件监听器;
[0037]响应于确定在源节点上注册事件监听器,向客户端通知源节点中事件的发生;并且
[0038]响应于确定未在源节点上注册事件监听器;
[0039]由服务器确定源节点在层级中是否具有上代节点;
[0040]响应于确定源节点在层级中具有上代节点;
[0041]由服务器确定是否在上代节点上注册事件监听器;并且
[0042]响应于确定在上代节点上注册事件监听器,向客户端通知源节点中事件的发生。
[0043]即使在向客户端通知事件发生的行为之后,在源节点上注册的事件监听器仍可存
m
苗O
[0044]事件可包括以下各项中至少一个⑴创建新节点、(ii)删除现有节点、或者(iii)修改现有节点中。
[0045]在进一步实施方式中,该方法包括:
[0046]响应于服务器与客户端之间的通信失败,从客户端接收在新服务器中的源节点上注册新的事件监听器的请求,新服务器具有层级中的节点的至少一部分的副本,并且该请求包括从服务器接收的最新事件的交易编号;
[0047]由新服务器并且使用交易编号获得自接收最新事件时起在源节点和源节点的下代中发
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1