会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 门,大门和窗户 / 框架 / 分布式服务框架

分布式服务框架

阅读:706发布:2021-03-03

IPRDB可以提供分布式服务框架专利检索,专利查询,专利分析的服务。并且一种以分布方式执行服务的系统,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与任务类型相关的数据元组的对应类型代表,其中:系统包括多个对等实体;每个对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型;每个对等实体包括元组处理模块,对于类型T的元组,所述元组处理模块适合于:a)检查包括在对等实体中的多个工人模块中的至少一个工人模块是否适合于处理由所述元组代表的任务,b)在a)的肯定情况下,负责处理由所述元组代表的任务,c)在a)的否定情况下,执行用于将所述元组转发给系统的多个对等实体中的另一个对等实体的转发过程。,下面是分布式服务框架专利的具体信息内容。

1.一种用于以分布方式执行服务的系统,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与任务类型相关的数据元组的对应类型代表,其中:-系统包括多个对等实体;

-每个对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型;

-每个对等实体包括元组处理模块,对于类型T的元组,所述元组处理模块适合于:

a)检查包括在对等实体中的多个工人模块中的至少一个工人模块是否适合于处理由所述元组代表的任务,b)在a)的肯定情况下,负责处理由所述元组代表的任务,

c)在a)的否定情况下,执行将所述元组转发给系统的多个对等实体中的另一个对等实体的转发过程;

-每个对等实体包含元组空间模块,所述元组空间模块适合于处理预定数量的元组在对等实体中的保存,以及按照第一元组群和第二元组群,对保存在对等实体中的预定数量的元组进行分类,所述第一元组群包括代表能够由该对等实体的工人模块处理的任务类型的元组类型,所述第二元组群包括代表不能由该对等实体的工人模块处理的任务类型的元组类型;

-每个对等实体包括负载处理模块,所述负载处理模块适合于:

定期检查在保存于该对等实体中的第一元组群中是否存在至少一个元组类型在第一元组群中的平均持久时间低于给定阈值,当存在至少一个元组类型在第一元组群中的平均持久时间低于所述给定阈值时,对于系统的至少另一个对等实体,检查所述至少一个元组类型在所述至少另一个对等实体的第一元组群中的平均持久时间,当对于系统的所述至少另一个对等实体,所述至少一个元组类型的平均持久时间也低于给定阈值时,提名对等实体的工人模块中能够处理所述至少一个元组类型的元组的至少一个工人模块作为工人模块解除分配的候选。

2.按照权利要求1所述的系统,其中,每个对等实体的元组处理模块适合于处理保存在对等实体中的链接对等实体表,所述链接对等实体表用于把预定数量的元组类型中的每个元组类型与系统的包括适合于处理所述元组类型的元组的工人模块的链接对等实体的列表相关联。

3.按照权利要求2所述的系统,其中,在c)的转发过程中,元组处理模块适合于访问链接对等实体表,以按照预定转发策略,检索链接对等实体表中与元组类型T相关联的链接对等实体之一。

4.按照权利要求3所述的系统,其中,当所述链接对等实体表不包含与元组类型T相关联的任何链接对等实体时,每个对等实体的元组处理模块适合于向系统的若干对等实体发送对系统的包括适合于执行类型T的元组的至少一个工人模块的对等实体的请求,所述若干对等实体是按照预定策略,从保存于对等实体中的链接对等实体表中所列出的链接对等实体中选择的。

5.按照权利要求1所述的系统,其中,每个对等实体包括适合于当下述条件至少之一被满足时,提名能够处理包含在第二元组群中的元组类型的工人模块作为在该对等实体内被分配的候选的负载处理模块:所述元组类型在第二元组群中的平均持久时间高于给定阈值;所述元组类型在第二元组群中具有几乎要期满的寿命;该对等实体发出的对系统的包括适合于执行所述元组类型的至少一个工人模块的另一个对等实体的请求已失败。

6.按照权利要求5所述的系统,其中,

所述负载处理模块适合于当在对等实体中存在被提名为工人模块分配的候选的至少一个工人模块时,解除分配被提名为工人模块解除分配的候选的工人模块。

7.按照权利要求5所述的系统,其中,负载处理模块适合于当对等实体关于元组处理的工作负载低于预定阈值时,在对等实体中分配被提名为工人模块分配的候选的工人模块。

8.按照权利要求1所述的系统,其中,每个对等实体的元组处理模块适合于对由该对等实体的工人模块产生的元组,或者对由系统的另一个对等实体接收的元组执行a)、b)和c)。

9.按照权利要求1所述的系统,进一步包括多个客户端实体,每个客户端实体适合于向多个对等实体中的至少一个对等实体发送服务请求。

10.按照权利要求9所述的系统,其中,在收到来自多个客户端实体之一的服务请求时,每个对等实体的元组处理模块适合于对该对等实体所生成的元组执行a)、b)和c),所述生成的元组代表在该客户端实体所请求的服务的执行中涉及的多个任务之一。

11.一种用于以分布方式执行服务的系统的对等实体设备,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与该任务类型相关的数据元组的对应类型代表,其中,所述对等实体设备适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型,并且所述对等实体设备包括:元组处理模块,对于类型T的元组,所述元组处理模块适合于:

a)检查包括在该对等实体设备中的多个工人模块中的至少一个工人模块是否适合于处理由所述元组代表的任务,b)在a)的肯定情况下,负责处理由所述元组代表的任务,

c)在a)的否定情况下,执行将所述元组转发给系统的另一个对等实体设备的转发过程;

元组空间模块,所述元组空间模块适合于处理预定数量的元组在对等实体设备中的保存,以及按照第一元组群和第二元组群,对保存在对等实体设备中的预定数量的元组进行分类,所述第一元组群包括代表能够由该对等实体设备的工人模块处理的任务类型的元组类型,所述第二元组群包括代表不能由该对等实体设备的工人模块处理的任务类型的元组类型;

负载处理模块,所述负载处理模块适合于:

定期检查在保存于该对等实体设备中的第一元组群中是否存在至少一个元组类型在第一元组群中的平均持久时间低于给定阈值,当存在至少一个元组类型在第一元组群中的平均持久时间低于所述给定阈值时,对于系统的至少另一个对等实体设备,检查所述至少一个元组类型在所述至少另一个对等实体设备的第一元组群中的平均持久时间,当对于系统的所述至少另一个对等实体设备,所述至少一个元组类型的平均持久时间也低于给定阈值时,提名对等实体设备的工人模块中能够处理所述至少一个元组类型的元组的至少一个工人模块作为工人模块解除分配的候选。

12.一种用于在对等实体中处理元组的方法,所述对等实体是以分布方式执行服务的系统的多个对等实体中的对等实体,其中,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与该任务类型相关的数据元组的对应类型代表,并且系统的每个对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型;对于保存在所述对等实体中的类型T的元组,所述方法包括:a)检查包括在所述对等实体中的多个工人模块中的至少一个工人模块是否适合于处理由所述元组代表的任务,b)在a)的肯定情况下,使由所述元组代表的任务由所述对等实体的多个工人模块中适合于处理该任务的所述至少一个工人模块处理,c)在a)的否定情况下,执行用于将所述元组转发给系统的多个对等实体中的另一个对等实体的转发过程,所述方法进一步包括:

处理预定数量的元组在对等实体中的保存,以及按照第一元组群和第二元组群,对保存在对等实体中的预定数量的元组进行分类,所述第一元组群包括代表能够由该对等实体的工人模块处理的任务类型的元组类型,所述第二元组群包括代表不能由该对等实体的工人模块处理的任务类型的元组类型;

定期检查在保存于该对等实体中的第一元组群中是否存在至少一个元组类型在第一元组群中的平均持久时间低于给定阈值,当存在至少一个元组类型在第一元组群中的平均持久时间低于所述给定阈值时,对于系统的至少另一个对等实体,检查所述至少一个元组类型在所述至少另一个对等实体的第一元组群中的平均持久时间,当对于系统的所述至少另一个对等实体,所述至少一个元组类型的平均持久时间也低于给定阈值时,提名对等实体的工人模块中能够处理所述至少一个元组类型的元组的至少一个工人模块作为工人模块解除分配的候选。

说明书全文

分布式服务框架

技术领域

[0001] 本发明涉及一种用于以分布方式执行服务的分布式服务框架。

背景技术

[0002] C.Adam 等 (“A service Middleware that scales in System Size and Applications”,10th IFIP/IEEE International Symposium on Integrated Network Management(IM-2007),Munich,Germany,2007年5月21-25,第70-79页)公开了动态地向较大的一组应用服务分配系统资源的对等服务管理中间件。作者描述的可能部署情形包括一个群集和多个入口点,所述群集包含若干数据中心。每个数据中心包括多个节点。每个节点能够同时运行若干应用的实例。服务请求通过入口点进入群集,入口点利用循环转发策略把输入的请求定向到节点。当从入口点收到请求时,节点确定请求的应用类型。如果节点运行对应的应用,并且如果CPU利用率低于可配置的阈值,那么节点处理所述请求。否则,节点查阅其转发表,并把所述请求路由到提供所需应用的对等节点。对于系统中提供的每个应用,转发表包含可配置数量的运行该特定应用的节点。转发表的表目为软状态,并且在预先配置的超时之后,每个表目期满。因此,在每个布局周期之后,每个节点通告其完整配置。
[0003] Rosario Alfano 和 Gaetano di Caprio(“TURBO:an autonomous execution environment with scalability and load balancing features”,IEEE Workshop on Distributed Intelligent Systems:Collective Intelligence and Its Applications,2006年6月15-16日,第377-382页)公开了一种采用Linda模型作为分发任务执行请求的基本方式的分布式执行环境“Telco Uniform Request Balancer”(TURBO)。
[0004] 按照Linda模型(例如,由David Gelernter,“Generative Communication in Linda”,ACM Transactions on programming Languages and Systems,第7卷,第1期,1985年1月,第80-112页公开),工人执行任务;每个任务执行请求是写在Linda元组空间(名为黑板)上的Linda元组;工人使用Linda取走操作来提供其处理能力。只有当每个工人准备执行元组时,该工人才从黑板取走元组。
[0005] 在TURBO中,Rosario Alfano和Gaetano di Caprio在Linda模型中引入一个集合器实体。作者声称集合器可被看作并入了多个工人的黑板,即具有执行能力的黑板。一个集合器对于其它集合器来说充当工人:它执行取走操作,以便把元组从过载的集合器转移到自己的黑板上。在TURBO中,假设有一组集合器在其黑板中包含代表要执行的任务的元组,那么通过让每个集合器计算它自己的剩余能力(RP,Residual Power)来实现负载均衡,所述剩余能力(RP)表示该集合器帮助其它集合器的能力。当一个集合器认识到它具有一些可用的RP(其黑板中只有少量元组)时,该集合器仅通过向其它集合器发送可用性的通知,将其计算能力提供给其它集合器。过载的集合器接受可能的计算能力提供之一。当集合器收到对其计算能力提供的确认时,它开始从处于困难中的集合器取走元组。因此,按照TURBO系统,当集合器过载时,它只需要检查它是否收到了来自其它集合器的某些帮助提供,并接受所述帮助提供。
[0006] 因此,TURBO提供一种在集合器之间均匀分布负载的负载均衡系统。

发明内容

[0007] 申请人面对提供一种用于以分布方式执行服务的分布式服务框架的问题,所述分布式服务框架保证高性能、可伸缩性和鲁棒性。
[0008] 因此,在第一方面,本发明涉及一种用于以分布方式执行服务的系统,每个服务的执行涉及多个预定类型的任务的处理,待处理的每个任务类型由与该任务类型相关的数据元组的对应类型代表,其中:
[0009] -系统包括多个对等实体;
[0010] -每个对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一个任务类型;
[0011] -每个对等实体还包括元组处理模块,对于类型T的元组,所述元组处理模块适合于:
[0012] a)检查包括在对等实体中的多个工人模块中的至少一个工人模块是否适合于处理由该元组代表的任务,
[0013] b)在a)的肯定情况下,负责执行由该元组代表的任务,
[0014] c)在a)的否定情况下,执行用于将该元组转发给系统的多个对等实体中的另一个对等实体的转发过程。
[0015] 有利的是,系统进一步包括多个客户端实体,每个客户端实体适合于向多个对等实体中的至少一个对等实体发送服务请求。
[0016] 有利的是,在收到来自客户端实体的服务请求时,每个对等实体适合于生成代表在所请求服务的执行中涉及的多个任务之一的数据元组。优选地,该对等实体生成的数据元组代表为执行所请求服务而要处理的第一任务。有利的是,对由该对等实体生成的元组执行a)、b)和c)。
[0017] 按照一个实施例,每个工人模块适合于通过消费代表在服务的执行中涉及的任务的元组,并产生代表在服务的执行中涉及的多个任务中的另一个任务的元组,来执行所述在服务的执行中涉及的任务。
[0018] 有利的是,对由该对等实体的工人模块产生的元组执行a)、b)和c)。
[0019] 有利的是,对由多个对等实体中的另一个对等实体接收的元组执行a)、b)和c)。
[0020] 有利的是,每个对等实体包含适合于处理预定数量的元组在该对等实体中的保存的元组空间模块。有利的是,元组空间模块适合于按照第一元组群和第二元组群,对保存在对等实体中的预定数量的元组进行分类,第一元组群包括代表将由该对等实体的工人模块处理的任务类型的元组类型,而第二元组群包括代表不能由该对等实体的工人模块处理的任务类型的元组类型。
[0021] 有利的是,每个对等实体包括工人执行环境模块,所述工人执行环境模块适合于从第一元组群检索元组,并激活该对等实体的对应工人模块,所述对应工人模块能够处理由检索的元组代表的对应任务类型。有利的是,所述工人执行环境模块适合于按照预定调度策略,从第一元组群检索元组。
[0022] 有利的是,通过把元组保存在对等实体的第一元组群中来执行b)。
[0023] 有利的是,每个对等实体的元组处理模块适合于处理保存在对等实体中的链接对等实体表,链接对等实体表用于将预定数量的元组类型中的每个元组类型与系统的包括适合于处理所述元组类型的元组的工人模块的链接对等实体的列表相关联。
[0024] 有利的是,在c)的转发过程中,元组处理模块适合于访问链接对等实体表,以按照预定转发策略,检索(如果有的话)链接对等实体表中与元组类型T相关联的链接对等实体之一。有利的是,在c)中,元组处理模块适合于把元组转发给这样检索的对等实体。
[0025] 如果链接对等实体表不包含与元组类型T相关联的任何链接对等实体,那么对等实体的元组空间模块适合于把类型T的元组保存在第二元组群中。在这种情况下,有利的是,元组处理模块适合于向系统的多个对等实体发送对系统的包括适合于执行类型T的元组的至少一个工人模块的对等实体的请求,所述系统的多个对等实体是按照预定策略从在保存于对等实体中的链接对等实体表中列出的那些对等实体中选择的。
[0026] 当收到对所述请求的响应时,对等实体适合于利用在所述响应中接收的信息,来更新保存在该对等实体中的链接对等实体表。
[0027] 有利的是,在更新了链接对等实体表之后,元组处理模块适合于再次激活c)的转发过程。
[0028] 有利的是,每个客户端实体适合于向多个对等实体中的至少一个对等实体注册,以便能够向所述对等实体发送服务请求。有利的是,每个客户端实体适合于向它注册的多个对等实体中的至少一个对等实体发送服务请求。
[0029] 有利的是,每个对等实体包括适合于定期检查该对等实体(关于元组处理)的工作负载的负载处理模块。如果工作负载低于预定阈值,那么有利的是,该对等实体适合于向系统的多个对等实体进行通报。优选地,该对等实体适合于向其链接对等实体表中与该对等实体能够处理的相同元组类型相关联的链接对等实体进行通报。
[0030] 有利的是,每个对等实体包括负载处理模块,所述负载处理模块适合于定期检查在保存于该对等实体中的第一元组群中是否存在至少一种元组类型在第一元组群中的平均持久时间低于给定阈值。
[0031] 在肯定的情况下,负载处理模块还适合于对于系统的至少另一个对等实体,检查所述至少一种元组类型在所述至少另一个对等实体的第一元组群中的平均持久时间。有利的是,负载处理模块适合于对该对等实体的链接对等实体表中与所述至少一种元组类型相关联的链接对等实体进行所述检查。
[0032] 如果对于系统的所述至少另一个对等实体,所述至少一种元组类型的平均持久时间低于给定阈值,那么负载处理模块适合于提名该对等实体的能够处理所述至少一种元组类型的元组的至少一个工人模块作为被解除分配的候选。
[0033] 有利的是,每个对等实体的负载处理模块还适合于检查在保存于该对等实体中的第二元组群中是否存在平均持久时间高于给定阈值的至少一种元组类型。
[0034] 在肯定的情况下,有利的是,负载处理模块适合于提名能够处理所述至少一种元组类型的元组的工人模块作为在该对等实体内被分配的候选。
[0035] 有利的是,每个对等实体的负载处理模块还适合于检查在保存于该对等实体中的第二元组群中是否存在寿命几乎要期满的至少一种元组类型。
[0036] 在肯定的情况下,负载处理模块适合于提名能够处理所述至少一种元组类型的元组的工人模块作为在该对等实体内被分配的候选。
[0037] 有利的是,当在c)的转发过程中,对系统的包括适合于执行类型T的元组的至少一个工人模块的对等实体的请求失败时,负载处理模块适合于提名能够处理类型T的元组的工人模块作为在该对等实体内被分配的候选。
[0038] 有利的是,该对等实体适合于当在对等实体中存在被提名作为工人分配的候选的至少一个其它工人模块时,实际解除分配被提名作为工人模块解除分配的候选的工人模块。
[0039] 有利的是,该对等实体适合于当对等实体的工作负载低于预定阈值时,实际分配作为工人分配的候选的工人模块。
[0040] 有利的是,该对等实体适合于当对等实体具有可供其使用的计算资源时,实际分配作为工人分配的候选的工人模块。
[0041] 有利的是,当对等实体解除分配其能够执行类型T的元组的所有工人模块时,该对等实体适合于向在其链接对等实体表中列出的至少部分链接对等实体进行通报。
[0042] 有利的是,当对等实体分配能够执行类型T的元组的工人模块时,该对等实体适合于向在其链接对等实体表中列出的至少部分链接对等实体进行通报。
[0043] 按照一个实施例,系统的对等实体部署在通过通信网络(例如,因特网)互连的多个计算机节点、服务器、服务器群集、和/或最终用户终端/设备上。
[0044] 按照一个实施例,客户端实体被部署在多个最终用户终端/设备上。
[0045] 最终用户终端/设备的典型例子是移动电话、个人数字助理(PDA)、个人计算机、膝上型计算机等。
[0046] 能够由系统执行的服务的典型例子是基于通信会话的服务、通信会话建立服务、web服务、应用服务、内容访问服务、对IT应用特征的访问等等。
[0047] 在第二方面,本发明涉及一种用于以分布方式执行服务的系统的对等实体,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与该任务类型相关的数据元组的对应类型代表,其中,所述对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型,所述对等实体包括元组处理模块,对于类型T的元组,所述元组处理模块适合于:
[0048] a)检查包括在对等实体中的多个工人模块中的至少一个工人模块是否适合于处理由所述元组代表的任务,
[0049] b)在a)的肯定情况下,负责处理由所述元组代表的任务,
[0050] c)在a)的否定情况下,执行用于将所述元组转发给系统的另一个对等实体的转发过程。
[0051] 就本发明的该方面的其它特征而论,参考上面关于本发明的第一方面公开的内容。
[0052] 在第三方面,本发明涉及一种用于在以分布方式执行服务的系统的多个对等实体中的对等实体中处理元组的方法,其中,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与该任务类型相关的数据元组的对应类型代表,并且系统的每个对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型,对于保存在所述对等实体中的类型T的元组,所述方法包括:
[0053] a)检查包括在所述对等实体中的多个工人模块中的至少一个工人模块是否适合于处理由所述元组代表的任务,
[0054] b)在a)的肯定情况下,使由所述元组代表的任务由所述对等实体的多个工人模块中适合于处理该任务的所述至少一个工人模块处理,
[0055] c)在a)的否定情况下,执行用于将所述元组转发给系统的多个对等实体中的另一个对等实体的转发过程。
[0056] 至于本发明的第三方面的其它特征,参考上面关于本发明的其它方面公开的内容。
[0057] 在另一方面,本发明涉及一种用于操作以分布方式执行服务的系统的多个对等实体中的对等实体的方法,其中,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与该任务类型相关的数据元组的对应类型代表,并且系统的每个对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型,所述方法包括:
[0058] -按照第一元组群和第二元组群,对保存在对等实体中的元组进行分类,第一元组群包括代表可由该对等实体的工人模块处理的任务类型的元组类型,而第二元组群包括代表不能由该对等实体的工人模块处理的任务类型的元组类型,
[0059] -定期检查在第一元组群中是否存在至少一种元组类型在第一元组群中的平均持久时间低于给定阈值,
[0060] -在肯定的情况下,对于系统的至少另一个对等实体,检查所述至少一种元组类型在所述至少另一个对等实体的第一元组群中的平均持久时间,和
[0061] -当对于系统的所述至少另一个对等实体,所述至少一种元组类型的平均持久时间也低于给定阈值时,提名该对等实体的工人模块中能够处理所述至少一种元组类型的元组的至少一个工人模块作为被该对等实体解除分配的候选。
[0062] 至于本发明的这一方面的其它特征,参考上面关于本发明的其它方面公开的内容。
[0063] 在另一方面,本发明涉及一种用于以分布方式执行服务的系统,每个服务的执行涉及多个预定类型的任务的处理,要处理的每个任务类型由与该任务类型相关的数据元组的对应类型代表,其中:
[0064] -系统包含多个对等实体;
[0065] -每个对等实体适合于保存和执行多个工人模块,每个工人模块适合于处理至少一种任务类型;
[0066] -每个对等实体还包括处理模块,所述处理模块适合于:
[0067] ·把元组保存在该对等实体中,
[0068] ·按照第一元组群和第二元组群,对保存在该对等实体中的元组进行分类,第一元组群包括代表可由该对等实体的工人模块处理的任务类型的元组类型,而第二元组群包括代表不能由该对等实体的工人模块处理的任务类型的元组类型,
[0069] ·定期检查在第一元组群中是否存在至少一种元组类型在第一元组群中的平均持久时间低于给定阈值,并且在肯定的情况下,
[0070] ·对于系统的至少另一个对等实体,检查所述至少一种元组类型在所述至少另一个对等实体的第一元组群中的平均持久时间,和
[0071] ·当对于系统的所述至少另一个对等实体,所述至少一种元组类型的平均持久时间也低于给定阈值时,提名该对等实体的工人模块中能够处理所述至少一种元组类型的元组的至少一个工人模块作为被该对等实体解除分配的候选。
[0072] 至于本发明的这一方面的其它特征,参考上面关于本发明的其它方面公开的内容。

附图说明

[0073] 根据参考附图进行的本发明的一些例证实施例的下述详细说明,本发明的特征和优点将变得显而易见,所述一些例证实施例只是作为非限制性例子提供的,其中:
[0074] 图1示意性示出了按照本发明的分布式服务系统;
[0075] 图2示意性示出了图1的分布式服务系统的例证实现情形;
[0076] 图3示意性示出了按照本发明的第一实施例的服务请求的执行;
[0077] 图4示意性示出了按照本发明的第二实施例的服务请求的执行;
[0078] 图5示意性示出了按照本发明的第三实施例的服务请求的执行;
[0079] 图6示意性示出了图1的分布式服务系统的对等实体的实施例;
[0080] 图7示意性示出了按照本发明的实施例的元组路由过程的流程图;
[0081] 图8-10示意性示出了按照本发明的实施例的负载均衡过程的流程图。

具体实施方式

[0082] 图1示出了用于以分布方式执行服务的系统1000,它包括多个对等实体100和多个客户端实体1。每个对等实体100包括至少一个工人模块10。
[0083] 如图2中所示,对等实体100可被部署在可能大量的计算节点/服务器/服务器群集1030上,并且可选地部署在通过通信网络1010(例如,因特网或由电信网络提供商提供的网络平台)互连的最终用户终端/设备1020上。
[0084] 客户端实体1可被部署在可能大量的最终用户终端/设备1020上。
[0085] 在硬件、软件、操作系统等方面,计算节点/服务器/服务器群集1030可以不同。
[0086] 最终用户终端/设备1020一般是最终用户拥有和管理的、适合于代表最终用户进行计算(例如,服务请求,提供给最终用户的服务的执行)的计算节点。它们可通过电信接入网络1012(例如,ADSL、拨号、GPRS、3G UMTS、WiFi、WiMax等)与通信网络1010互连。此外,它们的地址可以是动态分配的,并且可以例如基于专用寻址,或者可通过例如网络地址转换系统(NAT)被转换成公共地址。
[0087] 按照本发明,每个服务被分解成多个离散的任务类型(实现该服务的服务逻辑的特定部分),并且每个工人模块10负责一种任务类型的执行。
[0088] 工人模块10适合于借助数据元组进行交互。
[0089] 数据元组由代表要执行的任务的对应类型的类型来表征。
[0090] 元组可以是下述形式的数据结构:<元组-类型,会话-id,数据1,...,数据n>,其中,元组-类型代表要执行的任务类型,会话-id是服务会话描述符的标识符或者是空值,数据1,...,数据n是工人模块执行该任务类型所需的数据。
[0091] 当工人模块10准备处理任务时,它消费代表这种任务的元组。在任务的处理期间,工人模块10可产生一个或多个元组。
[0092] 通常,在处理结束之后,工人模块10不保存特定任务处理的信息。它可以仅具有与其(例如,用于管理、配置的)内部行为相关的全局状态。
[0093] 同一工人模块10的若干实例可以共存于同一对等实体100中。
[0094] 优选地,同一工人模块10的若干实例共存于同一系统1000中。这允许例如并行执行相同类型的任务,和增大系统的处理能力。
[0095] 消费相同类型的元组的工人模块10可以不同方式运转(例如,当它们实现不同的算法时),并且可以是不同类型的元组的产生者。
[0096] 有利的是,工人模块10利用(用于自管理的)自模型以及利用代表目标的任务而具有自主行为。
[0097] 客户端实体1是适合于向多个对等实体中的至少一个对等实体发送服务请求的软件模块。
[0098] 本发明的分布式服务系统1000适合于通过把代表在服务的执行过程中涉及的任务的元组从产生元组的工人模块(产生者)分发给消费元组的工人模块(消费者),并把请求的执行结果返回给客户端实体1,来满足客户端实体1的每个服务请求。
[0099] 服务的例子可以是:
[0100] 1.请求-响应服务(示意性地示于图3中),其中,客户端实体请求计算(例如,信息服务、应用服务、web服务);分布式服务系统1000通过工人模块的交互来进行所述计算;结果被返回给发出请求的客户端实体;
[0101] 2.客户端-客户端服务(示意性地示于图4中),其中,发起客户端实体请求与终止客户端实体进行交互的服务;分布式服务系统1000通过工人模块交互进行计算;终止客户端实体接收邀请消息;以及通过被动态映射到物理地址的逻辑名称来识别客户端实体;
[0102] 3.多个服务执行(示意性地示于图5中),其中,如下详述,借助保存在会话描述符中的信息,若干服务执行(每个服务可以是请求-响应服务或者客户端-客户端服务类型)与同一服务会话(由服务会话标识符识别)关联,所述会话描述符保存在逻辑仓库1040中。
[0103] 本发明的分布式服务系统1000还可被用于实现web服务的编制,所述web服务的实现被部署在计算节点上。在这种情况下,为了调用web服务,编制器将产生其类型对应于web服务声明并且包含与调用相关的信息作为变元的元组,及其地址(即,编制器的地址)。编制器可等待web服务的直接回答。可替换地,如果编译者把编制器分成若干工人模块(每个工人模块能够执行或调用一个web服务,并且可选地,生成调用后续web服务的元组),那么可以元组的形式返回回答。
[0104] 在下面的说明中,表达符号:
[0105] ·Wc_T:用于指示消费/处理类型T的元组的工人模块;
[0106] ·Wp_T:用于指示产生类型T的元组的工人模块;
[0107] ·tuples_type(P):用于指示能够由对等实体P所执行的工人模块消费/处理的一组元组类型。
[0108] 如图6中示意所示,有利的是,每个对等实体100包括:
[0109] ·覆盖管理模块101;
[0110] ·本地元组空间模块102;
[0111] ·工人执行环境模块103;
[0112] ·元组处理模块104;
[0113] ·负载处理模块105;
[0114] ·客户端处理模块106;
[0115] ·DHT(分布式散列链接对等实体表)模块107;
[0116] ·服务会话描述符处理模块108。
[0117] 系统1000还可包括不执行任务,而只具有路由元组(例如,从客户端实体到“主动”对等实体)的功能的“被动”对等实体(例如,部署在最终用户终端1020上的那些对等实体)。有利的是,“被动”对等实体(未示出)将包括覆盖管理模块101;本地元组空间模块102;元组处理模块104;客户端处理模块106;和DHT模块107。
[0118] 覆盖管理模块
[0119] 覆盖管理模块101适合于处理系统1000中新的对等实体100的引入。
[0120] 具体地讲,对于目的在于进入系统1000的对等实体100,覆盖管理模块101执行发现阶段,以找出系统1000的相邻对等实体的初始集合。所述初始集合的大小(ISD)可以是系统1000的参数。
[0121] 可按照ad-hoc网络领域的已知机制(例如,由JiniTM Architectural Overview,Technical White Paper,1999 Sun Microsystems,Inc.,901 San Antonio Road,Palo alto,California 94303 U.S.A.,第1-22页公开的机制)来进行所述发现阶段。
[0122] 如果发现的对等实体集合的大小大于ISD,那么覆盖管理模块101可以按照某些策略(例如,随机、最近的物理地址)进行选择,以便形成相邻对等实体的初始集合。否则,如果该发现的对等实体集合的大小小于ISD,那么覆盖管理模块101可例如,选择发现的对等实体之一,并向该对等实体发送请求,以便获得缺失的初始对等实体。有利的是,重复该过程,直到发现的对等实体的数量达到ISD,或者执行的请求未能返回新的对等实体为止。
[0123] 收到上述请求的对等实体将适合于按照预定策略(例如,按照本领域中公知的技术,诸如循环方式、最小距离等),从其链接对等实体表(下面说明)中选择对等实体的多个地址。
[0124] 本地元组空间模块
[0125] 本地元组空间(或者说背板)模块102适合于处理元组在对等实体100的存储区中的存储。
[0126] 有利的是,按照元组的类型把它们保存在所述存储区中。
[0127] 有利的是,把元组和时间戳一起保存在所述存储区中,所述时间戳指示元组在存储区中排队的时间。当队列已满时,对等实体100可除去在给定时间间隔之前排队的元组,和/或较陈旧的元组。
[0128] 有利的是,本地元组空间模块102适合于按照两个群(或队列),对保存在对等实体P的存储区中的元组进行分类:
[0129] ·第一元组群(下面也称为等待队列),指的是等待由对等实体P所执行的工人模块消费的tuples_type(P)的元组;和
[0130] ·第二元组群(下面也称为待决队列),指的是对等实体P不能处理,又由于链接对等实体表(下面说明)不包含能够消费这种元组类型的其它对等实体的地址而不能分发给其它对等实体的类型的元组。
[0131] 工人执行环境模块
[0132] 工人执行环境模块103负责执行对等实体100的工人模块10。
[0133] 每个工人模块10按照在服务逻辑中编程的行为,消费至少一种类型Tc的元组,并产生可能类型不同的一个或多个元组。
[0134] 工人执行环境模块103适合于按照某些调度策略(例如,自动自适应、通过考虑基于等待队列长度的优先级等等),从对等实体100的等待队列中检索元组,并激活能够消费所述元组的对应工人模块10。如果在等待队列中不存在元组,那么工人执行环境模块103悬置,等待在等待队列中排队的新元组。
[0135] 此外,如下更详细所述,工人执行环境模块103可基于元组,和/或基于工人模块10返回的指令,在工人模块执行元组之前和/或之后,请求服务会话描述符处理模块108创建、读取、更新、删除(通过借助DHT算法处理的一些唯一标识符识别的)服务会话描述符。
[0136] 具体地讲,在激活工人模块10以处理元组<元组-类型,会话-id,数据1,...,数据n>之前,工人执行环境模块103将适合于读取由字段“会话-id”(如果非空值的话)识别的服务会话描述符,并把会话-id和对应的检索值传给工人模块10。
[0137] 此外,在消费元组之后,工人执行环境模块103将适合于从工人模块10接收涉及服务会话描述符的指令。指令的典型例子可以如下:
[0138] o<创建,会话-id,会话-descr>,用于请求创建由会话-id识别,并且以“会话-descr”作为初始值的新服务会话描述符;
[0139] o<更新,会话-id,会话-descr>,用于请求更新由会话-id识别,并且以“会话-descr”作为新值的服务会话描述符;
[0140] o<删除,会话-id>,用于请求删除由会话-id识别的服务会话描述符。
[0141] 有利的是,每个工人模块10适合于执行下述动作:
[0142] -从工人执行环境模块103接收类型Tc的元组t,工人执行环境模块103可向工人模块10传送相关联的会话标识符和对应的服务会话描述符(如果有的话);
[0143] -按照与工人模块10和服务会话描述符数据(如果有的话)相关联的服务逻辑来处理元组t,以便执行由类型Tc的元组t代表的任务;
[0144] -可选地,产生一个或多个元组(可能是与类型Tc不同的一种或多种类型的元组),并把产生的元组传给元组路由功能(下面说明);
[0145] -终止元组t的处理,并且可选地,向工人执行环境模块103返回与会话描述符相关的指令(例如,用于创建、删除或更新会话描述符的指令);
[0146] -等待重新被工人执行环境模块103激活。
[0147] 此外,在元组t的处理和对应任务的执行期间,每个工人模块10能够:
[0148] ·通过利用客户端实体1的实际物理地址或其(例如,由DHT模块107通过DHT算法解析的)逻辑名称,要求对等实体100向客户端实体1发送消息;
[0149] ·发送、接收、等待去往/来自另一个工人模块的消息(例如,向产生元组的工人模块返回其处理结果-以例如实现本领域中已知的RPC式(远程过程调用式)模型)。
[0150] 服务会话描述符处理模块
[0151] 服务会话描述符处理模块108适合于处理有关服务会话的数据。
[0152] 这些数据可用在多个服务执行中(示意性地示于图5中),以使关于相同服务会话的两个或更多个服务请求相互关联,或者使在服务请求的执行期间分支的并行计算同步/结合。
[0153] 有利的是,服务会话描述符由唯一的标识符识别,并以持久的特性保存在仓库1040中(优选地不被对等实体处理)。服务会话描述符的寿命可以受到限制(限制可根据服务类型而不同)。
[0154] 如上所述,工人执行环境模块103可基于元组类型、和/或工人模块10返回的指令/数据,请求服务会话描述符处理模块108创建、读取、更新、删除(通过唯一标识符识别的)服务会话描述符。
[0155] 应工人执行环境模块103的请求,服务会话描述符处理模块108适合于执行下述操作:
[0156] ·创建(在处理了由元组代表的任务之后):用于利用工人模块10返回的指令(例如,在字段“会话-id”中指示的描述符标识符,在字段“会话-descr”中指示的会话描述符数据),初始化描述符。该操作具有把服务会话描述符保存在仓库1040(其地址可在对等实体的初始化阶段被发现)中的功能:该操作是通过与DHT模块107进行交互,以便在描述符标识符和在仓库1040中保存服务会话描述符的物理地址之间创建关联来完成的;
[0157] ·删除(在执行了由元组代表的任务之后):用于请求DHT模块107检索与工人模块返回的描述符标识符相关联的物理地址并删除该物理地址;并且向仓库1040发送删除保存在这样的物理地址处的服务会话描述符的请求;
[0158] ·更新(在执行了由元组代表的任务之后):用于请求DHT模块107检索与工人模块10返回的描述符标识符相关联的物理地址,并向仓库1040发送用工人模块返回的数据来更新保存在这样的物理地址处的会话描述符的请求;
[0159] ·读取(在执行由元组代表的任务之前):用于请求DHT模块107检索与在待消费的元组(<元组-类型,会话-id,数据1,...,数据n>)的字段“会话-id”(如果不是空的话)中指示的描述符标识符相关联的物理地址;向仓库1040发送返回保存在这样的物理地址处的服务会话描述符的请求;并且最后,用检索的服务会话描述符来检验工人执行环境模块103,使得在给定待消费的元组和这样检索的服务会话描述符作为输入时,工人执行环境模块103能够激活适当的工人模块的执行。
[0160] 客户端处理模块
[0161] 对等实体100中的客户端处理模块106适合于与通常部署在最终用户终端1020上的客户端实体1进行交互。
[0162] 具体地讲,客户端处理模块106适合于发送、接收和处理去往/来自客户端实体1的消息。
[0163] 实际上,为了使得能够与分布式服务系统1000进行交互并访问由此提供的服务,有利的是,客户端实体1适合于通过利用例如在ad-hoc网络领域中已知的传统机制(例TM如,由上面提及的论文“Jini Architectural Overview”公开的机制),来发现系统1000的一个或多个对等实体100。
[0164] 此外,当客户端实体1发现系统1000的对等实体100时,客户端实体1适合于通过提供其逻辑名称和物理地址,向被发现的对等实体100发送注册消息。为了延长所述关联的时间有效性,可以要求定期刷新所述注册。这些注册消息由客户端处理模块106接收和处理。
[0165] 如果最终用户终端1020既运行客户端实体1,又运行对等实体100(例如,被动对等实体),那么有利的是,部署在最终用户终端上的客户端实体1适合于至少向部署在最终用户终端1020上的对等实体100进行所述注册。
[0166] 客户端实体1适合于通过向它们注册的对等实体发送服务请求消息,来请求服务。
[0167] 对等实体100的客户端处理模块106适合于接收和处理所述服务请求消息,从而创建代表该服务请求的对应元组。
[0168] 例如,服务请求消息的例子可如下所示:<服务-请求,客户端-实体-地址,服务-名称,会话-id,arg1,...,argn>,其中,“服务-名称”可代表元组类型,“会话-id”(可选)可以是用于关联多个服务请求的服务会话描述符的标识符。此外,由客户端处理模块106从这种服务请求消息开始创建的元组可如下所示:<服务-名称,会话-id,arg1,...,argn,客户端-实体-地址>(其中,“服务-名称”代表元组类型,“客户端-实体-地址”是元组的变元之一)。
[0169] 另外有利的是,客户端处理模块106适合于依据工人模块10的请求,向客户端实体1发送服务-返回消息。
[0170] DHT模块107
[0171] DHT模块107适合于按照本领域中公知的技术(例如,参见Eng Keong Lua等的“A survey and comparison of peer-to-peer overlay network schemes”,IEEE Communications Surveys & Tutorials,2004年3月,第1-22页),处理与对等实体100相关联的DHT(分布式散列表)节点。
[0172] 有利的是,对等实体100的DHT节点用于:
[0173] -将逻辑名称映射到客户端实体1的物理地址;和
[0174] -将服务会话描述符的标识符映射到在仓库1040中保存服务会话描述符的物理地址。
[0175] DHT模块107具有两个主要功能:
[0176] ·用于处理与对等实体相关联的DHT节点,具体地说,处理所述映射的创建、读取、删除的DHT节点功能;和
[0177] ·向DHT节点功能发送请求,以对DHT节点进行操作(例如,创建、读取、删除...)的DHT客户端功能。
[0178] 一些对等实体可以只实现DHT客户端功能。在这种情况下,DHT客户端功能必须向部署在系统1000的另一个对等实体中的DHT节点功能注册。
[0179] 当客户端实体1进行其向对等实体100的注册时,有利的是,客户端实体1提供其逻辑名称,以便在涉及它的服务的执行期间能够被识别(例如,接收被发送到其逻辑名称的消息),并提供其物理地址。
[0180] 当对等实体100的客户端处理模块106收到客户端实体注册请求时,它们将要求对等实体的DHT模块107在DHT节点中创建该客户端实体的逻辑名称与其物理地址的关联。
[0181] 当对等实体100的客户端处理模块106必须向通过客户端实体1的逻辑名称识别的客户端实体1发送消息时,客户端处理模块106将与对等实体100的DHT模块107进行交互,以便检索客户端实体1的物理名称(可选的是,可以引入有效性的可能时限)。
[0182] 当服务会话描述符处理模块108必须检索/修改服务会话描述符时,它们将通过提供描述符标识符,并且在创建新描述符的情况下,还提供仓库1040中保存所述描述符的物理地址,来与对等实体的DHT模块107进行交互。基于所需操作,DHT模块107将创建描述符标识符和仓库1040中的物理地址之间的关联,返回与描述符标识符相对应的物理地址,或者在DHT节点中删除该关联。
[0183] 元组处理模块
[0184] 元组处理模块104适合于将元组从产生工人模块分发给部署在系统1000的对等实体100中的消费工人模块。
[0185] 有利的是,通过利用按照下述方式构成的链接对等实体表109来进行元组分发:
[0186]
[0187] 其中:
[0188] ·T-Type_mj代表元组类型mj;
[0189] ·对等实体-信息mj i代表关于能够消费/处理类型mj的元组的对等实体i的信息(下面也称为“对等实体-信息表目”)
[0190] ·n是链接对等实体表109中能够与元组类型mj相关联的对等实体的最大数量(对等实体的实际数量可因类型而异);
[0191] ·N是按照预定系统参数,能够保存在链接对等实体表109中的元组类型的最大数量。
[0192] 在本说明书中,表述
[0193] -相对于对等实体P的“链接对等实体”用于指示在对等实体P的链接对等实体表109中列出的对等实体;
[0194] -entry_list(T,P)用于指示在对等实体P的链接对等实体表109中与元组类型T相关联的对等实体-信息表目的列表。
[0195] 有利的是,关于链接对等实体的每个对等实体-信息表目包括:
[0196] ·链接对等实体的地址(例如,IP地址);和
[0197] ·指示链接对等实体相对于对等实体P的距离(例如,以跳为单位)的整数。
[0198] 有利的是,链接对等实体表109被对等实体P使用,以便:
[0199] ·将类型T的元组转发给能够消费该元组的对等实体(即,具有能够消费类型T的元组的工人模块的对等实体)。这些元组可以是:
[0200] o由对等实体P所执行的工人模块之一产生的元组,或者
[0201] o由另一个对等实体接收的元组,或者在由客户端实体1接收的消息中的元组;或者
[0202] ·与链接对等实体进行交互,以便进行系统维护操作,如过载控制;链接对等实体的重新配置;等等。
[0203] 每个对等实体P适合于创建和保持其自己的链接对等实体表109。
[0204] 有利的是,当对等实体P加入系统1000时,创建对等实体P的链接对等实体表109。
[0205] 例如,可通过合并和选择可用地址,利用初始的相邻对等实体的信息,来初始化链接对等实体表109。
[0206] 通过选择下述对等实体-信息表目,可创建初始的链接对等实体表109:
[0207] ·对于可由初始相邻对等实体中的每一个所执行的工人模块消费的每个元组类型mj,包含关于这种初始相邻对等实体的信息的对等实体-信息表目(这些表目的距离将被设为1);和
[0208] ·在保存在初始相邻对等实体的链接对等实体表109中的那些对等实体-信息表目中,具有最短距离的对等实体-信息表目(在这种情况下,相对于保存在初始相邻对等实体的链接对等实体表109中的对等实体-信息表目,这些对等实体-信息表目的距离将增加1)。
[0209] 对于每种元组类型,所选择的对等实体-信息表目应最多为“n”个。
[0210] 如果对等实体的链接对等实体表109变为空(例如,由于所有“链接”对等实体离开系统,或者发生某些故障),那么可以重复初始化阶段,并选择新的一组初始相邻对等实体。
[0211] 有利的是,更新链接对等实体表109,以便考虑对“链接”对等实体的通信尝试。具体地讲,当与链接对等实体的通信存在故障时(例如,当路由元组时),保存在链接对等实体表109中的该对等实体的所有地址被清除。
[0212] 此外,有利的是,借助两种机制:被动机制和主动机制,来重新配置链接对等实体表109。
[0213] 被动机制
[0214] 当对等实体100分配新的工人模块10时,有利的是,对等实体100向其链接对等实体(或者向按照某些策略选择的链接对等实体的子集)发送消息(下面称为“新-工人-更新”消息),该消息具有关于在预定的先前时段内分配的工人模块10的信息。
[0215] 另外有利的是,当对等实体100加入(或者重新加入)系统1000时,发送相同的消息。
[0216] 有利的是,新-工人-更新消息包含下述信息<新-工人-更新,发送者-id,距离,La>,其中
[0217] ·“新-工人-更新”是消息类型的标识符;
[0218] ·“发送者-id”是发送原始的新-工人-更新消息的原始对等实体100的地址;
[0219] ·“距离”是原始对等实体100和当前节点之间的以系统跳为单位的距离(在原始对等实体100所发送的消息中,其值被设为0);
[0220] ·La是由新分配的工人模块消费的元组类型的列表。
[0221] 当对等实体P收到新-工人-更新消息时,它处理所包含的信息,并修改其链接对等实体表109,如果必要的话。具体地讲,
[0222] ·对于列表La中的每个元组类型T:
[0223] o如果T不存在于链接对等实体表109中,则对等实体P把元组类型T添加到链接对等实体表109中,并使之与对等实体-信息表目<发送者-id,距离+l>相关联。
[0224] o否则,如果T存在于链接对等实体表109中,那么对等实体P核实发送者-id是否已存在于entry_list(T,P)中。在未找到发送者-id的情况下,如果存在仍然空闲的某个位置,则对等实体把对等实体-信息表目<发送者-id,距离+l>添加到entry_list(T,P)中。在没有空闲位置的情况下,对等实体P按照例如下述标准来评估是否盖写entry_list(T,P)中的对等实体-信息表目:
[0225] ·<发送者-id,距离+l>用大于距离+l的距离来替换对等实体-信息表目。
[0226] 此外,对等实体P将新-工人-更新消息转发给其所有链接对等实体(或者转发给按照某些策略选择的链接对等实体的子集),除了对等实体P从其接收消息的链接对等实体之外,以及除了最初发送新-工人-更新消息的原始对等实体(即,发送者-id)之外。具体地讲,通过做出下述改变,对等实体P转发新-工人-更新消息:
[0227] ·将距离增加1;
[0228] ·从列表La中除去未引起对等实体P的链接对等实体表109的变化的元组类型。
[0229] 当对等实体P解除分配能够消费元组类型T的所有工人模块10时,有利的是,它通过下面被称为“旧-工人-更新”消息的消息,来通知潜在感兴趣的对等实体。
[0230] 潜在有兴趣了解由对等实体P解除分配的、能够消费元组类型T的工人模块的对等实体可以是,例如:
[0231] ·先前向对等实体P路由T类型元组的对等实体;
[0232] ·负载处理过程中涉及的entry_list(T,P)中的对等实体(例如,先前向对等实体P发送如下更详细描述的“请求-队列-长度”消息的对等实体);
[0233] ·先前向对等实体P发送通报它们能够处理T类型元组的消息(如下更详细描述的“处理-可用”消息)的对等实体;
[0234] ·先前向对等实体P发送对能够处理T类型元组的对等实体的请求(如下更详细描述的“请求-对等实体”消息)的对等实体。
[0235] 为了实现这种机制,有利的是,对等实体适合于保存有关下述对等实体的信息(例如,把所述信息附加到链接对等实体表109中):先前向它路由T类型元组的对等实体、负载处理过程中涉及的对等实体、先前发送通报其能够处理T类型元组的消息的对等实体、以及先前发送对能够处理T类型元组的对等实体的请求的对等实体。为了限制所使用的存储器的大小,该对等实体可以采用时间戳机制,从而当存储器已满时,用新的对等实体替换较陈旧的对等实体。
[0236] 有利的是,旧-工人-更新消息包含下述信息<旧-工人-更新,发送者-id,T>,其中
[0237] -“旧-工人-更新”是消息类型的标识符;
[0238] -“发送者-id”是发送旧-工人-更新消息的原始对等实体的地址;
[0239] -“T”是元组类型。
[0240] 当对等实体P收到消息<旧-工人-更新,发送者-id,T>时,它从entry_list(T,P)中消除关于原始对等实体(发送者-id)的对等实体-信息表目(如果存在的话)。
[0241] 按照上面公开的被动机制,对等实体中的任何新的工人模块分配或解除分配被传递给系统1000的其它对等实体。从而,每当从系统1000的另一个对等实体收到新-工人-更新或旧-工人-更新消息时,对等实体就更新包含在该对等实体的链接对等实体表109中的信息。
[0242] 从而既不需要定期刷新包含在链接对等实体表中的信息,也不需要使用时间戳,就能进行链接对等实体表的重新配置。
[0243] 主动机制
[0244] 对等实体P可以使用主动机制来识别系统1000的具有能够处理类型T的元组的工人模块10的其它对等实体。
[0245] 通过发送下面被称为请求-对等实体(或者RfP)消息的消息,对等实体P可激活这种机制。
[0246] 主动机制可由对等实体P在元组路由过程(如下更详细所述)期间,当对等实体P不能分发类型T的元组时激活,或者随机地激活,以便检验是否有可能按照本领域中公知的自组织机制来进行系统配置的本地优化。
[0247] 激活主动机制的对等实体P能够按照下述标准,来选择向其发送请求-对等实体消息的“链接对等实体”:
[0248] ·如果该过程被激活,以路由由对等实体P的工人Wc_T2(即,能够消费类型T2的元组)产生的类型T1的元组,那么选择的“链接对等实体”是其地址在entry_list(T2,P)中的那些链接对等实体。实际上,很可能这些对等实体也必须路由类型T1的元组,并且它们已得到能够消费类型T1的元组的一些对等实体的地址。从而,对等实体P将向所有选择的“链接对等实体”发送消息<请求-对等实体,地址-P,T2,T1,N>,其中,“请求-对等实体”是消息的标识符,“地址-P”是发起该请求的对等实体P的地址,“T2”是由产生类型T1的元组的工人模块消费的元组类型,“T1”指示要路由的元组的类型,“N”是转发链的长度的限制。
[0249] ·如果该过程被激活,以路由由另一个对等实体100接收的或者客户端实体1所接收的消息中的类型T1的元组,那么所选择的“链接对等实体”是其地址在entry_list(T,P)中的那些链接对等实体,其中,T是按照某种策略(例如,随机选择,相关联的地址列表不为空),由对等实体P选择的元组类型。从而,对等实体P向所有选择的“链接对等实体”发送消息<请求-对等实体,地址-P,T,T1,0>。
[0250] ·如果该过程被随机激活,那么对等实体P可决定按照某些策略(例如,随机选择,与T2相关的空列表,等等)来选择其链接对等实体表109中的三个元组类型T1、T2和T3,并向entry_list(T3,P)中的所有对等实体发送消息<请求-对等实体,地址-P,T1,T2,1>。
[0251] 当对等实体P1从请求对等实体P2收到消息<请求-对等实体,地址-P2,Tx,Ty,j>时,对等实体P1从其链接对等实体表中检索entry_list(Ty,P1),并通过消息<请求-对等实体-结果,Ty,对等实体-信息表目的列表>将entry_list(Ty,P1)返回给对等实体P2。如果entry_list(Ty,P1)为空,并且j>0,那么对等实体P1向entry_list(Tx,P1)中的所有对等实体转发消息<请求-对等实体,地址-P2,Tx,Ty,j-1>。
[0252] 当最初激活请求-对等实体过程的对等实体P2收到消息<请求-对等实体-结果,Ty,对等实体-信息表目的列表>时,它通过合并entry_list(Ty,P)和接收的对等实体-信息表目的列表,来更新entry_list(Ty,P)。实际上,请求-对等实体消息可导致一个或多个请求-对等实体-结果消息(不过也导致零消息)。
[0253] 有利的是,按照下述方式进行所述合并:
[0254] ·新的对等实体-信息表目被添加到entry_list(Ty,P)中,直到达到链接对等实体表中的所述列表的最大长度为止;
[0255] ·当达到列表的最大长度时,另外的新的表目被用于(仅仅)替换具有较大距离的对等实体-信息表目。
[0256] 在<请求-对等实体-结果,Ty,对等实体-信息表目的列表>消息的处理之后,有利的是,对等实体P2适合于检查是否有在保存于其中的待决队列中排队的类型Ty的任何元组。在肯定的情况下,对等实体P2激活元组路由过程(如下更详细所述),以尝试把这些元组分发给最近被输入链接对等实体表中的对等实体。
[0257] 因此,通过利用对等实体P的一些“链接”对等实体的链接对等实体表中所包含的信息,对等实体P可使用主动机制来重新配置其链接对等实体表的一些表目。
[0258] 元组的路由
[0259] 在下述时候,对等实体P可以使用元组路由过程:
[0260] ·对等实体P所执行的工人产生元组;或者
[0261] ·对等实体P收到来自另一个对等实体,或者在从最终用户终端1020接收的消息中的元组;或者
[0262] ·在(响应于请求-对等实体消息)收到请求-对等实体-结果消息之后,对等实体P重新配置其链接对等实体表109,以便尝试把在待决队列中排队的类型Ty的元组分发给最近输入对等实体P的链接对等实体表109中的对等实体。
[0263] 如图7中示意所示,按照下述方式有利地进行类型T的元组t的分发(方框200):
[0264] ·对等实体P检查它是否包括工人模块Wc_T(即,能够消费类型T的元组的工人模块)(方框201);
[0265] ·如果在对等实体P中包括工人模块Wc_T,那么对等实体P通过使元组t排列在其与T相关联的等待队列中,来负责元组t的执行(方框202),并且该过程结束(方框203);
[0266] ·如果在对等实体P中不包括工人模块Wc_T,那么对等实体P检索entry_list(T,P)(方框204),并检查该列表是否为空(方框205);
[0267] ·如果entry_list(T,P)不为空,那么
[0268] o它将元组t转发给按照某些转发策略(例如,循环方式,就系统跳来说最近的对等实体,等等)选择的、在entry_list(T,P)中列出的对等实体之一(例如,P1)(方框206)。有利的是,转发策略适合于避免回路和限制转发长度。例如,为了实现这些策略,先前进行过转发的对等实体的列表应作为变元插入被转发的元组中;
[0269] o随后,对等实体P检查在方框206的转发步骤是否成功(方框207);
[0270] o在失败的情况下(例如,由于对等实体离开系统1000,或者由于通信故障),从entry_list(T,P)中除去关于对等实体P1的对等实体-信息表目(方框208),并且过程返回方框205;
[0271] o在成功的情况下,过程结束(方框209);
[0272] ·如果entry_list(T,P)是空的,或者由于通信故障或者由于违反转发策略(即,如果对等实体P不能分发类型T的元组t),对列表中的所有对等实体的转发失败,那么对等实体P:
[0273] o将元组t保存在与类型T相关联的待决队列中(方框210),和
[0274] o激活主动机制,以寻找能够消费类型T的元组的新的对等实体(方框211)。
[0275] 负载处理模块
[0276] 负载处理模块105适合于定期检查对等实体P关于元组处理的负载,和执行负载均衡过程(如果需要的话)。
[0277] 通常,在一个计算周期内,对等实体P总体上应当可以消费100-1000个元组。
[0278] 可以采用不同的算法为下一个计算周期估计对等实体100的负载。
[0279] 按照一种例证算法:
[0280] ·对于tuple_types(P)中的每个元组类型,每个对等实体P计算在最后k个周期内接收的元组(包括由对等实体P产生的元组)的平均值(aRt(T),其中,T是元组类型)。
[0281] ·对于tuple_types(P)中的每个元组类型,每个对等实体P还计算工人模块消费那些元组的计算时间的平均值(aCT(T),其中,T是元组类型)。
[0282] ·每个对等实体P确定元组类型T的等待队列的长度QL(T)(即,在等待队列中排队的类型T的元组的数量)。
[0283] 随后,可如下估计负载:
[0284] ·关于元组类型T的估计负载为:EL(T)=aCT(T)*(aRt(T)+QL(T))/时间-间隔[0285] ·对于tuple_types(P)中的所有类型T,对等实体P的估计的总负载为:EL=∑EL(T)。
[0286] 如图8-10中示意所示,在每个计算周期,每个对等实体P适合于计算它的总负载值EL(方框300,图8),并检查计算的值是否低于第一给定m_threshold(P)值(方框301,图8)。
[0287] 在否定的情况下,对等实体P适合于检查计算的值是否高于第二给定M_threshold(P)值(方框302,图8)。
[0288] 这两个阈值m_threshold(p)和M_threshold(P)一般取决于部署有对等实体P的计算节点的特性。
[0289] 如果计算的值大于第二给定M_threshold(P)值,那么对等实体负载状态被设为高(方框303,图8)。否则,对等实体负载状态被设为正常(方框304,图8)。
[0290] 如果估计的总负载值EL低于第一m_threshold(P)值,那么对等实体负载状态被设为低,并且对等实体P把其低负载状态通知给能够消费与它可消费的元组类型相同的元组的“链接”对等实体(即,对tuple_types(P)中的每个元组类型T来说,entry_list(T,P)中的对等实体)。
[0291] 例如,对等实体P可通过发送类型为<处理-可用,tuple_types(P)>的消息(下面被称为“处理-可用”消息),来通知所述“链接”对等实体,其中,“处理-可用”是消息标识符,并且“tuple_types(P)”指示对等实体P能够处理的元组类型。
[0292] 收到处理-可用消息(方框400,图9)的对等实体P1适合于检查其估计的总负载值EL是否较高(方框401,图9)。
[0293] 如果估计的总负载值EL较高,那么对等实体P1适合于识别它可转移给发出通知的对等实体P的元组的数量(方框402,图9)。
[0294] 例如,这样的数量可对应于保证对等实体P1的负载状态恢复正常的元组的数量。
[0295] 此外,在方框402,对等实体P1适合于向发出通知的对等实体P回送类型为<负载-可用,T1=x,T2=y,T3=z,...>的消息(下面被称为“负载-可用”消息),其中,“负载-可用”是消息标识符,并且“T1=x,T2=y,T3=z,...”关于在处理-可用消息中接收的每个元组类型T1,T2,T3...,指示可从对等实体P1转移给对等实体P的元组的数量(x,y,z,...)。
[0296] 如果对等实体P1的估计的总负载值EL不高,那么对等实体1适合于用指示它没有可用元组的消息进行响应(方框403,图9)。
[0297] 在发送了处理-可用消息之后,对等实体P等待负载-可用消息(方框306,图8)。基于所联系的“链接”对等实体的负载状态,可能收到零条或者更多条消息。当对等实体P从对等实体P1收到负载-可用消息时,对等实体P通过考虑它的当前估计的总负载值EL(所述当前估计的总负载值EL被更新,以便还考虑到(借助元组-请求消息)已从其它过载“链接”对等实体请求的元组),来评估它能够接受多少元组(方框306)。实际上,对等实体P能够接受保证其负载状态不会变成“高”的多个元组。
[0298] 如果对等实体P能够接受另外的元组,那么它向对等实体P1发送类型为<元组-请求,T1=x1,T3=z1,...>的消息(下面被称为“元组-请求”消息)(方框307,图8),其中,x1,z1,...是对等实体P能够接受的每种类型的元组的数量,其中,x1≤X,z1≤z,...。
[0299] 当对等实体P1收到元组-请求消息时(方框404,图9),它向对等实体P返回类型为<转移-元组:t1,t2,t3,...>的消息(下面被称为“转移-元组”消息)(方框405,图9),该消息(最多)包含从对应等待队列出列的每种类型的所需量的元组。
[0300] 当对等实体P收到转移-元组消息时,它把接收的元组排列在对应的等待队列中(方框308)。
[0301] 工人模块的动态分配/解除分配
[0302] 有利的是,对等实体P中的负载处理模块105还适合于进行负载处理过程,以处理对等实体中的工人模块分配/解除分配。
[0303] 按照这种负载处理过程,负载处理模块105适合于定期检查在对等实体P的等待队列中,是否存在至少一个元组类型T在这样的等待队列中的平均持久时间低于给定阈值。
[0304] 在肯定的情况下,负载处理模块105还适合于对于entry_list(T,P)中的链接对等实体,检查所述至少一个元组类型T在所述链接对等实体的等待队列中的平均持久时间。
[0305] 按照一个实施例,在对等实体的等待队列中排队的类型T的元组的平均数量(或者平均队列长度)可被用作指示这样的对等实体的等待队列中的类型T的元组的平均持久时间的信息。
[0306] 能够通过向entry_list(T,P)中的链接对等实体发送消息(该消息在下面被称为“请求-队列-长度”,并且类型为<请求-队列-长度,T,我的-队列-长度>),以向这样的链接对等实体请求类型T的元组在其等待队列中的平均持久时间,来进行关于entry_list(T,P)中的链接对等实体的检查。
[0307] 所联系的对等实体可答复以类型为<响应-队列-长度,T,我的-队列-长度>的消息(下面被称为“响应-队列-长度”消息),其中,我的-队列-长度将指示类型T的元组在其等待队列中的当前平均持久时间。
[0308] 当对于entry_list(T,P)中的所有链接实体,平均持久时间低于给定阈值时,负载处理模块105提名能够消费类型T的元组的至少一个工人模块Wc_T作为对等实体P中的工人解除分配的候选。工人模块Wc_T保持为候选,直到所述平均持久时间增大到所述阈值以上,或者直到对等实体P收到指示工人模块Wc_T已被系统1000的另一个对等实体解除分配的旧-工人-更新消息。在后一种情况下,有利的是,在再次计算类型T的平均持久时间之前,对等实体P的负载处理模块105等待给定数量的计算时段,以考虑到Wc_T的解除分配之后的稳定情形。
[0309] 有利的是,只有当对于对等实体P来说,存在适合于消费除T以外的元组类型的工人模块(工人分配的候选)时,对等实体P的负载处理模块105才实际解除分配工人模块Wc_T(工人解除分配的候选)。
[0310] 当下述时候,适合于消费类型T′的元组的工人模块可由负载处理模块105提名为工人分配的候选:
[0311] ·对等实体P的待决队列中的类型T′的元组的平均持久时间高于给定阈值,或者排队元组中的一些元组的寿命几乎期满;或者
[0312] ·关于类型T′的元组的请求-对等实体过程(上面已说明)失败。
[0313] 如果对等实体具有一些可用资源(即,如果其负载不高,则它具有可用于分配新的工人模块和相关的支持数据结构的某一存储器),那么负载处理模块105可决定分配工人模块,而不解除分配其它工人模块。
[0314] 否则,负载处理模块105能够检验由某一解除分配候选Wc_T释放的资源是否适合于支持候选Wc_T′的分配。在这种情况下,负载处理模块105进行工人模块Wc_T的解除分配,和工人模块Wc_T′的分配。
[0315] 可替换地,如果具有某一分配候选Wc_Ta但是不具有解除分配候选的对等实体P从对等实体P1收到负载-可用消息,那么它可用消息进行答复(该消息在下面被称为“候选-可用”消息,类型为<候选-可用,Ta>),以便提议对等实体P1分配能够消费类型Ta的元组的工人模块Wc_Ta。对等实体P1能够评估该分配的可行性(例如,通过可能解除分配它的一些解除分配候选)。如果评估给出肯定的回答,那么对等实体P1返回消息(该消息在下面被称为“候选-可用-接受”消息,并且类型为<候选-可用-接受,Ta>),并执行分配/解除分配过程。
[0316] 当对等实体的负载处理模块105决定解除分配工人模块Wc_T时,它们将执行下述主要动作:
[0317] -用旧-工人-更新消息来通知“链接”对等实体(如上所述);
[0318] -执行与类型T相关联的等待-队列中的元组;
[0319] -通过按照上面说明的元组路由过程把类型T的新的输入元组重新路由至其它对等实体,来阻止类型T的新的输入元组的执行;
[0320] -通过从对等实体卸载对应的软件代码,来实际解除分配工人模块Wc_T。
[0321] 此外,当对等实体的负载处理模块105决定分配新的工人模块Wc_T′时,它们将执行下述主要动作:
[0322] -用新-工人-更新消息来通知“链接”对等实体(如上所述);
[0323] -访问一些(远程)“代码”仓库,以检索能够消费类型T′的元组的工人模块Wc_T′的软件代码;和
[0324] -把检索的软件代码安装在对等实体中。
[0325] 因此,负载处理模块105适合于用限制对系统1000的对等实体的链接对等实体表109的重新配置/更新操作的数量的机制,来动态分配/解除分配工人模块。
[0326] 鉴于上面所述,显然本发明在其各个方面,提供一种以分布方式执行用户所请求的服务的分布式服务系统。
[0327] 按照(图3中示意所示的类型的)请求-响应服务的例子,要求位置相关付费信息服务的用户可利用部署在其最终用户终端(例如,移动电话)上的客户端实体,向分布式服务系统发送服务请求。
[0328] 客户端实体将把该服务请求发给它注册的对等实体。对等实体的客户端处理模块将生成代表为执行所请求的服务(例如,用户验证和授权)而要进行的第一任务的类型T1的元组t1。元组t1将包括,例如与用户身份、最终用户终端的类型、和用户所请求的服务的类型有关的信息,并将由系统的工人模块Wc_T1处理。
[0329] 通过利用包含在元组t1中的数据,工人模块Wc_T1将进行验证和授权过程,并产生代表为继续执行所述服务而要进行的进一步任务的类型T2的元组t2。
[0330] 元组t2将由系统的工人模块Wc_T2处理,通过利用包含在元组t2中的数据,工人模块Wc_T2将能够-例如-处理服务的计费,并产生代表为继续执行所述服务而要执行的进一步任务的类型T3的元组t3。
[0331] 元组t3将由系统的工人模块Wc_T3处理,通过利用包含在元组t3中的数据,工人模块Wc_T3将能够-例如-确定用户的地理位置,并产生代表为继续执行所述服务而要执行的进一步任务的类型T4的元组t4。
[0332] 元组t4将由系统的工人模块Wc_T4处理,通过利用包含在元组t4中的数据,工人模块Wc_T4将能够-例如-检索用户所请求的内容,并产生代表为继续执行所述服务而要执行的进一步任务的类型T5的元组t5。
[0333] 元组t5将由系统的工人模块Wc_T5处理,通过利用包含在元组t5中的数据,工人模块Wc_T5将能够-例如-按照最终用户终端的类型,转换检索的内容,并产生代表为继续执行所述服务而要执行的进一步任务的类型T6的元组t6。
[0334] 元组t6将由系统的工人模块Wc_T6处理,通过利用包含在元组t6中的数据,工人模块Wc_T6将能够-例如-把服务-返回消息发送给用户的客户端实体。
[0335] 由于上面公开的多个过程,元组t1-t6将在系统中从产生它们的工人模块被分发给适合于消费它们的工人模块。
[0336] 按照(图5中示意所示的类型的)多个服务执行的例子,期望与用户B建立多媒体会话的用户A可利用部署在其最终用户终端(例如,移动电话)上的客户端实体,向分布式服务系统发送请求。
[0337] 用户A的客户端实体将向它注册的对等实体发送服务请求。收到所述请求的对等实体的客户端处理模块将生成代表为执行所请求的服务(例如,用户验证和授权)而要进行的第一任务的类型T1的元组t1。元组t1将包括,例如,与用户身份、最终用户终端的类型、用户A所请求的会话的类型、和用户B的逻辑地址有关的信息。元组t1将由系统的工人模块Wc_T1处理。
[0338] 通过利用包含在元组t1中的数据,工人模块Wc_T1将进行验证和授权过程,并将产生代表为继续执行所述服务而要执行的进一步任务的类型T2的元组t2。
[0339] 元组t2将由系统的工人模块Wc_T2处理,通过利用包含在元组t2中的数据,工人模块Wc_T2将能够-例如-处理请求的计费,并产生代表为继续执行所述服务而要执行的进一步任务的类型T3的元组t3。
[0340] 元组t3将由系统的工人模块Wc_T3处理,通过利用包含在元组t3中的数据,工人模块Wc_T3将能够-例如-检索与用户B的逻辑地址相关联的物理地址;通过请求服务会话描述符处理模块为这样的会话创建新的服务会话描述符,并把用户A的逻辑地址记录在这样创建的服务会话描述符中,来创建多媒体服务会话;以及向部署在用户B的最终用户终端上的客户端实体发送邀请消息(包含关于服务会话和会话标识符的数据)。
[0341] 如果用户B希望接受该邀请消息,那么他/她能够利用部署在其最终用户终端上的客户端实体,向用户A发送确认消息。
[0342] 该客户端实体将向它注册的对等实体发送用户B的服务请求。该对等实体的客户端处理模块将生成代表为执行所请求的服务(例如,用户验证和授权)而要进行的第一任务的类型T1′的元组t1′。元组t1′将包括,例如,与用户身份、最终用户终端的类型、会话的标识符等有关的信息。元组t1′将由系统的工人模块Wc_T1′处理。
[0343] 通过利用包含在元组t1′中的数据,工人模块Wc_T1′将进行验证和授权过程,并将产生为继续执行所述服务而要执行的进一步任务的类型T2′的元组t2′。
[0344] 元组t2′将由系统的工人模块Wc_T2′处理,通过利用包含在元组t2′中的数据,工人模块Wc_T2′将能够-例如-执行请求的计费,并产生代表为继续执行所述服务而要执行的进一步任务的类型T3′的元组t3′。
[0345] 元组t3′将由系统的工人模块Wc_T3′处理,通过利用包含在元组t3′中的数据,工人模块Wc_T3′将能够-例如-通过请求服务会话描述符处理模块读取与会话相关联的会话描述符,来检索与用户A的逻辑地址相关联的物理地址;并且向部署在用户A的最终用户终端上的客户端实体发送确认消息(包括关于服务会话和会话标识符的数据)。
[0346] 鉴于上面的描述,显然本发明在其各个方面,提供一种以分布方式执行服务的分布式服务框架,所述分布式服务框架保证:
[0347] ·在处理节点(服务器和最终用户终端);对等实体;工人模块类型(其中,工人模块类型基于其能够消费的元组类型以及其如何处理消费的元组而彼此不同);和相同工人模块类型的实例方面的可伸缩性;
[0348] ·相对于计算节点、对等实体和工人模块的故障的可靠性/鲁棒性;
[0349] ·在负载均衡、工人模块分配/解除分配、链接对等实体表重新配置/更新、元组在系统的对等实体之间的分发方面的高性能;和
[0350] ·不需要任何集中控制和/或管理功能,具有自组织、自配置、对高度动态环境的自适应、和自主行为的能力的对等模型。
高效检索全球专利

IPRDB是专利检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,专利查询、专利分析

电话:13651749426

侵权分析

IPRDB的侵权分析产品是IPRDB结合多位一线专利维权律师和专利侵权分析师的智慧,开发出来的一款特色产品,也是市面上唯一一款帮助企业研发人员、科研工作者、专利律师、专利分析师快速定位侵权分析的产品,极大的减少了用户重复工作量,提升工作效率,降低无效或侵权分析的准入门槛。

立即试用