仿真系统和方法与流程

文档序号:17479145发布日期:2019-04-20 06:19阅读:185来源:国知局
仿真系统和方法与流程

相关申请的交叉引用

该申请要求2016年11月28日提交的题为“simulationsystemsandmethods”的美国申请no.15/361,874的优先权。该申请要求2016年11月28日提交的题为“loadbalancingsystemsandmethods”的美国申请no.15/361,889的优先权。该申请要求2016年11月28日提交的题为“communicationsinterfaceforsimulationsystemsandmethods”的美国申请no.15/361,921的优先权。前述申请中的每一个以及该申请要求2016年8月24日提交的题为“simulationsystemsandmethods”的美国临时申请no.62/378,715的优先权。

本文所描述的方面总体上涉及计算机、连网、硬件以及软件。更具体地说,本文所描述的一些方面涉及用于控制分布式且持久性的、空间优化式基于计算机的仿真的连网系统架构(包括其上网络节点的负载平衡)以及一种促进基于计算机的仿真的实例化、开发、监管以及管理的通信接口。



背景技术:

传统仿真系统不能扩展为支持非常大量的对象以对这些对象进行实时仿真。这些系统已经典型地依赖于在单个物理或虚拟计算机系统上运行的仿真引擎的单个实例,以仿真整个仿真世界。在没有解决方案在大规模系统上提供用于正确性、图形保真性以及实时交互性所有这三者的能力的情况下,这些仿真系统的消费者已经必须在这三者之间进行选取。如果消费者期望仿真复杂真实世界问题(这可能需要比单个仿真引擎所可以提供的更多的计算能力),则该情况的重要性和复杂度进一步增加。例如,仿真城市可能需要仿真大量车辆、行人、骑车人、交通模式、交通灯、地铁系统、运输车辆、飞机以及影响并且有助于城市生活的众多其它实体。

在一种已知的方法中,计算资源已经被静态地分配给仿真世界的部分。该方法的缺点可能是这样的:随着所仿真的对象、作用者等随着仿真进展而移动遍及仿真世界,所仿真的对象可能聚集在仿真世界的非常小的区域上。如果足够的对象移动到该非常小的区域,则计算资源可能过载(导致更慢的处理),仿真可能意外地终止,和/或仿真数据可能丢失。该方法的另一缺点可能是:关于区域的仿真的状态信息可能集中于单个计算资源上,并且可能并非遍及多个资源而得以共享或扩展,使得容错性或从意外终止的恢复是困难并且耗时的。此外,该方法不能使得自身容易地支持仿真对象穿过区域边界的状态迁移,因此,仿真通常将状态迁移限制给仅玩家。

在本文中解决了这些和其它问题。



技术实现要素:

以下提出在此所描述的各个方面的简化概述。该概述并非宽泛的综述,并且并非旨在标识权利要求的关键性或决定性要素或界定其范围。以下概述仅以简化的方式提出一些构思作为对以下所提供的更详细说明书的引言。

为了克服上述现有技术中的限制,并且为了克服在阅读并且理解该说明书时将是显然的其它限制,在此所描述的各方面针对一种分布式持久性空间优化式仿真开发环境。在此所描述的其它方面可以允许将现有非分布式仿真程序整合到大规模分布式仿真中。在此所描述又一些其它方面可以用于自动地在空间上平衡并且分布仿真工作负载。一个或多个应用编程接口(api)可以用于在实施模块与仿真模块之间进行通信。

根据一个或多个方面,提供一种空间优化式仿真系统,具有:至少一个处理器,其控制系统的一些操作;以及存储器,其可以包括被仿真的多个实体。被仿真的实体中的每一个可以例如包括一个或多个部件,并且所述部件中的每一个可以包括一个或多个性质。所述空间优化式仿真系统可以包括:多个工作器模块;以及与所述多个工作器模块对应的多个桥接器模块。所述工作器模块可以被配置为:执行所述空间优化式仿真。具体地说,所述多个工作器模块中的每个工作器模块可以各自对被仿真的所述多个实体的子集进行实例化。所述工作器模块可以进一步被配置为:更新正由特定工作器模块仿真的所述实体的部分的一个或多个性质。在一些实例中,所述多个桥接器模块可以被配置用于:与所述多个工作器模块进行通信。在其它实例中,所述空间优化式仿真系统可以包括多个组块模块。所述组块模块可以被配置为:监控分配给特定组块模块的实体的群组。具体地说,分配给所述组块模块的实体的群组可以位于分配给特定组块模块的组块区域内。所述空间优化式仿真系统可以包括:至少一个接收方模块,其被配置为:从多个客户机工作器模块接收对连接到所述空间优化式仿真系统的请求。具体地说,所述接收方模块可以被配置为:响应于接收到所述请求而分配所述多个桥接器模块中的对应桥接器模块,以用于与每个客户机工作器模块进行通信。在一些实例中,所述空间优化式仿真系统可以包括:至少一个oracle模块,被配置用于:响应于从组块模块以及从桥接器模块接收到的请求而分配工作器模块和桥接器模块。

例如,通过将实体分配给不同组块模块,可以改变分配给组块模块的组块区域。

可选地,所述空间优化式仿真系统可以包括:数据存储模块,被配置用于:创建并且维护包括所述多个实体中的每个实体的当前状态的快照。具体地说,每个实体的当前状态可以包括用于该实体所包括的所述一个或多个部件所包括的所述一个或多个性质中的每个性质的当前值。所述多个组块模块可以进一步被配置为:使用所述数据存储模块所维护的关于实体的状态信息来恢复所述实体。

可选地,所述多个组块模块可以进一步被配置为:将实体从一个组块模块迁移到另一组块模块。具体地说,将实体从一个组块模块迁移到另一组块模块可以包括:通过所述实体的状态信息进行转发;使得宿组块模块从所述实体接收状态改变通知;以及使源组块模块停止从所述实体接收状态改变通知。可以响应于所述源组块模块基于负载平衡算法而进行的确定来执行所述实体的迁移。有利地,可以响应于正迁移的所述实体基于其当前空间位置进行的确定或所述实体的当前空间位置的确定而执行所述实体的迁移。

可选地,所述接收方模块可以进一步被配置为:在分配所述至少一个桥接器模块以用于与所述客户机设备通信之前,对桥接器模块进行实例化。所述接收方模块可以进一步被配置为:发布用于与所述接收方模块进行通信的预定网络地址。

可选地,所述oracle模块可以进一步被配置为:维护第一数据库,其包括指示所述多个工作器模块中的每个工作器模块的状态的数据;并且维护第二数据库,其包括指示所述多个桥接器模块中的每个桥接器模块的状态的数据。所述oracle模块可以进一步被配置为:响应于来自所述组块模块的对工作器模块的请求而将工作器模块分配给组块模块。

可选地,连接到所述空间优化式仿真系统的所述客户机设备可以位于多个不同地理位置。

可选地,所述桥接器模块可以被配置为:通过每个桥接器模块所显露的应用编程接口(api)与所述工作器模块进行通信。

根据一个或多个方面,提供一种用于监管空间优化式基于计算机的仿真的方法,包括:通过在每个工作器模块上对多个实体中的不同子集进行实例化来仿真多个工作器模块上的所述多个实体,其中,所述多个实体中的每个实体包括一个或多个部件,其中,所述一个或多个部件中的每一个包括一个或多个性质;由每个工作器模块基于源自一个或多个其它工作器模块的仿真数据而更新该工作器所实例化的每个实体的至少一个部件的所述一个或多个性质;维护与所述多个工作器模块对应并且各自被配置用于与所述工作器模块之一通信的多个桥接器模块,以促进每个工作器模块与组块监管层之间的数据传送,其中,所述组块监管层包括多个组块模块,其中,每个组块模块被配置用于:监控分配给该组块模块的实体,并且,其中分配给该组块模块的所述实体位于分配给该组块模块的空间区域中的所述仿真内;由接收方模块从一个或多个客户机工作器模块接收对连接到所述空间优化式仿真系统的请求;由所述接收方模块响应于接收到所述请求而分配对应的桥接器模块,以用于与每个客户机工作器模块进行通信;以及由oracle模块响应于从组块模块以及从桥接器模块接收到的请求而分配工作器模块以及桥接器模块。

可选地,使用基于拉伸能的评分而对分配给工作器模块的实体进行负载平衡。

可选地,使用每个桥接器模块所显露的应用编程接口(api)与所述多个工作器模块通信。

根据一个或多个方面,提供一种或多种计算机可读介质,其存储计算机可执行指令,所述计算机可执行指令当被执行时使得系统通过如下来执行空间优化式仿真:通过在每个工作器模块上对多个实体中的不同子集进行实例化来仿真多个工作器模块上的所述多个实体,其中,所述多个实体中的每个实体包括一个或多个部件,其中,所述一个或多个部件中的每一个包括一个或多个性质;由每个工作器模块基于源自一个或多个其它工作器模块的仿真数据而更新该工作器所实例化的每个实体的至少一个部件的所述一个或多个性质;维护与所述多个工作器模块对应并且各自被配置用于与所述工作器模块之一通信的多个桥接器模块,以促进每个工作器模块与组块监管层之间的数据传送,其中,所述组块监管层包括多个组块模块,其中,每个组块模块被配置用于:监控分配给该组块模块的实体,并且,其中分配给该组块模块的所述实体位于分配给该组块模块的空间区域中的所述仿真内;由接收方模块从一个或多个客户机工作器模块接收对连接到所述空间优化式仿真系统的请求;由所述接收方模块响应于接收到所述请求而分配对应的桥接器模块,以用于与每个客户机工作器模块通信;以及由oracle模块响应于从组块模块以及从桥接器模块接收到的请求而分配工作器模块以及桥接器模块。

可选地,所述指令进一步使得所述系统执行:使用基于拉伸能的评分而对分配给工作器模块的实体进行负载平衡。

可选地,所述指令进一步使得所述系统执行:使用每个桥接器模块所显露的应用编程接口(api)与所述多个工作器模块进行通信。

根据一个或多个方面,提供一种用于平衡负载的方法,其可以包括:确定多个候选计算模块,以用于接收待移送的处理。所述方法可以还包括:确定每个候选计算模块的负载密度中心;确定第一计算模块的负载密度中心与每个候选计算模块的负载密度中心之间的距离;以及确定每个候选计算模块的移送评分。所述方法可以还包括:基于对所述候选计算模块中的每一个的所述移送评分的比较而从所述多个候选计算模块选择计算模块。所述方法可以还包括:将所述处理移送到所选择的计算模块。

在一些实例中,确定所述多个候选计算模块可以包括:选择对所述待移送的处理所发送的通知进行订阅的多个其它计算模块。

在其它实例中,确定所述多个候选计算模块可以包括:基于对指示至少一个候选计算模块上的瞬时处理负载的负载度量的确定而排除该候选计算模块。

可选地,用于确定每个候选计算模块的负载密度中心的所述方法可以包括:基于分配给所述候选计算模块的多个处理的空间位置和处理负载而确定空间质心。

可选地,用于确定每个候选计算模块的移送评分的所述方法可以包括:基于所述第一计算模块的负载密度中心与所述候选计算模块的负载密度中心之间的距离以及预定弹簧因子而确定所述候选计算模块的拉伸能。在一些实例中,所述预定弹簧因子的值可以基于时间因子而改变。在其它实例中,所述预定弹簧因子的值可以基于所述第一计算模块的负载密度中心与所述候选计算模块的负载密度中心之间的距离而改变。在又一些其它实例中,用于选择计算模块的所述方法可以包括:选择候选计算模块以使得所述第一计算模块与第二计算模块之间的拉伸能最小化。

可选地,用于将所述处理移送到所选择的计算模块的所述方法可以包括:发送所述处理的状态信息;使得所选择的计算模块从所述处理接收状态改变通知;以及使所述第一计算模块停止从所述处理接收状态改变通知。

根据一个或多个方面,提供一种或多种非瞬时计算机可读介质,包括计算机可读指令,所述计算机可读指令当被执行时将系统配置为:通过如下对空间优化式仿真进行负载平衡:由第一计算模块确定用于从所述第一计算模块接收待移送的处理的多个候选计算模块;对于每个候选计算模块:确定该候选计算模块的负载密度中心;确定所述第一计算模块的负载密度中心与该候选计算模块的负载密度中心之间的距离;以及确定该候选计算模块的移送评分;基于对所述多个候选计算模块的移送评分的比较而确定选自所述多个候选计算模块的第二计算模块;以及将所述处理从所述第一计算模块移送到所述第二计算模块。

可选地,所述确定所述多个候选计算模块包括:选择对所述待移送的处理所发送的通知进行订阅的多个其它计算模块。

可选地,所述确定所述一个或多个候选计算模块包括:对于每个候选计算模块确定指示该候选计算模块上的瞬时处理负载的负载度量;以及基于确定所述负载度量而排除至少一个候选计算模块。

可选地,所述确定所述第一计算模块的负载密度中心包括:基于分配给所述第一计算模块的多个处理的空间位置和处理负载而确定所述第一计算模块的空间质心。

可选地,所述确定每个候选计算模块的所述移送评分包括:基于所述第一计算模块的负载密度中心与所述候选计算模块的负载密度中心之间的距离以及预定弹簧因子而确定所述候选计算模块的拉伸能。

可选地,所述预定弹簧因子的值基于时间因子而改变。

可选地,所述预定弹簧因子的值基于所述第一计算模块的负载密度中心与所述候选计算模块的负载密度中心之间的所述距离而改变。

可选地,所述确定接收计算模块包括:选择候选计算模块以使得所述第一计算模块与第二计算模块之间的拉伸能最小化。

可选地,将所述处理从所述第一计算模块移送到所述第二计算模块包括:所述第一计算模块向所述第二计算模块发送所述处理的状态信息;所述第一计算模块使得所述第二计算模块从所述处理接收状态改变通知;以及所述第一计算模块停止从所述处理接收状态改变通知。

根据一个或多个方面,提供一种用于对空间优化式仿真进行负载平衡的方法,包括:第一计算模块确定用于从所述第一计算模块接收待移送的处理的多个候选计算模块;对于每个候选计算模块:确定该候选计算模块的负载密度中心;确定所述第一计算模块的负载密度中心与该候选计算模块的负载密度中心之间的距离;以及基于所述距离和预定弹簧因子而确定该候选计算模块的拉伸能;基于对所述多个候选计算模块的拉伸能的比较而确定选自所述多个候选计算模块的第二计算模块;以及将所述处理从所述第一计算模块移送到所述第二计算模块。

可选地,所述预定弹簧因子的值基于所述第一计算模块的负载密度中心与所述候选计算模块的负载密度中心之间的所述距离而改变。

可选地,一种用于在空间优化式仿真中与工作器模块进行通信的方法可以包括:显露第一应用编程接口(api),以用于将实体添加到所述仿真;显露第二api,以用于从所述仿真移除所述实体;显露第三api,以用于向所述工作器模块通知部件的状态的改变;显露第四api,以用于委任所述部件的权限;显露第五api,以用于解除所述部件的委任权限;显露第六api,以用于设置所述部件的委任权限;以及显露第七api,以用于更新已经将权限委任给所述工作器模块的部件的状态。

可选地,所述第一api可以包括:第一参数,其指示要添加的所述实体;以及第二参数,其指示所述实体的初始状态,并且第一api可以触发将所述实体添加到分配给所述工作器模块的空间区域。

可选地,所述第二api可以包括:第三参数,其指示要移除的所述实体,并且第二api可以触发从分配给所述工作器模块的所述空间区域移除所述实体。

可选地,所述第三api可以包括:第四参数,其指示包括待修改部件的所述实体;以及第五参数,其指示所述部件的状态,并且第三api可以触发在所述仿真中修改所述实体的状态。

可选地,所述第四api可以包括:第六参数,其指示包括要委任的部件的所述实体;以及第七参数,其指示要委任的部件,并且第四api可以触发所述部件以将权限委任给所述工作器模块。

可选地,所述第五api可以包括:第八参数,其指示包括要取消委任的部件的所述实体;以及第九参数,其指示要取消委任的部件,并且第五api可以触发所述部件从所述工作器模块解除委任权限。

可选地,所述第六api可以包括:第十参数,其指示所述部件包括所述实体;第十一参数,其指示所述部件;以及第十二参数,其指示在所述部件上设置委任权限,并且第六api可以触发所述部件以将权限委任给所述工作器模块。可替选地并且此外,所述第六api可以包括:第十参数,其指示包括所述部件的所述实体;第十一参数,其指示所述部件;以及第十二参数,其指示在所述部件上取消设置委任权限,并且第六api可以触发所述部件从所述工作器模块解除委任权限。

可选地,所述第七api可以包括:第十三参数,其指示包括待更新部件的所述实体;以及第十四参数,其指示所述部件的状态,并且第七api可以触发更新所述实体的状态。所述第七api包括:第十三参数,其指示包括待更新部件的所述实体;以及第十四参数,其指示所述部件的状态,并且第七api可以触发通知所述部件的状态的改变。

根据另一方面,提供一种用于与空间优化式仿真中的工作器模块进行通信的方法,所述方法包括:响应于接收到符合第一应用编程接口(api)的格式的消息而将实体添加到所述仿真;响应于接收到符合第二api的格式的消息而从所述仿真移除所述实体;响应于接收到符合第三api的格式的消息而修改正被仿真的实体的部件的状态;响应于接收到符合第四api的格式的消息而委任所述部件的权限;响应于接收到符合第五api的格式的消息而解除所述部件的委任权限;响应于接收到符合第六api的格式的消息而设置所述部件的委任权限;以及响应于更新所述部件的状态而发送符合第七api的格式的消息。

可选地,所述第一api包括:第一参数,其指示要添加的实体;以及第二参数,其指示所述实体的初始状态,并且,其中所述第一api触发将所述实体添加到分配给所述工作器模块的空间区域。

可选地,所述第二api包括:第三参数,其指示要移除的实体,并且,其中所述第二api触发从分配给所述工作器模块的所述空间区域移除所述实体。

可选地,所述第三api包括:第四参数,其指示包括待修改部件的所述实体;以及第五参数,其指示所述部件的所述状态,并且,其中所述第三api触发在所述工作器模块中修改所述实体的所述状态。

可选地,所述第四api包括:第六参数,其指示包括要委任的部件的所述实体;以及第七参数,其指示要委任的部件,并且,其中所述第四api触发所述部件以将权限委任给所述工作器模块。

可选地,所述第五api包括:第八参数,其指示包括要取消委任的部件的所述实体;以及第九参数,其指示要取消委任的部件,并且,其中所述第五api触发所述部件从所述工作器模块解除委任权限。

可选地,所述第六api包括:第十参数,其指示包括所述部件的所述实体;第十一参数,其指示所述部件;以及第十二参数,其指示在所述部件上设置委任权限,并且,其中所述第六api触发所述部件将权限委任给所述工作器模块。

可选地,所述第六api包括:第十参数,其指示包括所述部件的所述实体;第十一参数,其指示所述部件;以及第十二参数,其指示在所述部件上取消设置委任权限,并且,其中所述第六api触发所述部件从所述工作器模块解除委任权限。

可选地,所述第七api包括:第十三参数,其指示包括待更新部件的所述实体;以及第十四参数,其指示所述部件的所述状态,并且,其中所述第七api触发更新所述实体的所述状态。

可选地,所述第七api包括:第十三参数,其指示包括待更新部件的所述实体;以及第十四参数,其指示所述部件的所述状态,并且,其中所述第七api触发在所述仿真中修改所述实体的所述状态。

根据另一方面,可以提供用于仿真一维或多维虚拟空间中的实体的仿真系统和方法,包括:第一计算机装置,其适用于:仿真所述一维或多维虚拟空间的第一有界部分中虚拟地出现的实体;第二计算机装置,其适用于:仿真与所述一维或多维虚拟空间的所述第一有界部分不同的所述一维或多维虚拟空间的第二有界部分中虚拟地出现的实体,其中,所述第一计算机装置和第二计算机装置适用于:将所述一维或多维虚拟空间的第三有界部分中虚拟地出现的所有实体的仿真从所述第一计算机装置移送送到所述第二计算机装置,其中,所述一维或多维虚拟空间的所述第三有界部分是所述一维或多维虚拟空间的所述第一有界部分的子集,并且与所述一维或多维虚拟空间的所述第二有界部分相邻(例如,在虚拟空间中)。因此,可以更高效地使用计算机资源,并且可以更有效地平衡处理负载。

空间优化式仿真也可以描述为计算机实现的一维或多维虚拟空间的仿真,其中,分配处理资源以执行仿真计算可以基于所仿真的虚拟空间中的仿真实体的空间分布。

组块区域也可以被描述为一维或多维虚拟空间的有界部分或区域。

工作器模块也可以被描述为实现仿真功能的软件模块。其可以实现为软件代码。所述功能可以包括可以与虚拟空间内的其周围事物进行交互的任何仿真处理、设备或实体。可选地,所述功能可以包括来自仿真实体的真实世界等同物的实时和/或真实世界行为。

桥接器模块也可以被描述为软件模块,其与工作器模块具有一对一关系,并且与系统的其它模块进行通信,用于在系统的其它模块与工作器模块之间交换信息,和/或用于控制工作器模块。桥接器模块也可以是通信接口、数据接口或软件接口。在各工作器模块或各软件处理之间可以使用其它形式的通信(例如点对点通信)。

组块模块或组块动作器可以是软件模块,其可以被分配给单个服务器,并且其协调分配给组块区域或有界区域的实体的仿真。

接收方模块可以是处理与希望获得对系统和/或架构的访问或利用系统和/或架构的外部实体或用户的联系(或第一联系)的模块。

被仿真的实体的示例可以包括:

等同于可以用在涉及外部空间、城市、交通等的真实世界仿真中的实体(人、车、交通灯、树、石等)的虚拟表示的真实世界;

可以用在虚拟世界、游戏或其它仿真空间中的实体(例如非真实世界环境、物理、对象和/或幻想造物或物体)的虚拟表示;和/或

软件模块(例如工作器模块)具有对仿真实体(例如金融系统和/或市场、数值建模、统计建模、蒙特卡罗仿真等)的访问的数据集。这些仅是示例,并且可以使用在此所描述的各方面来仿真任何其它真实世界或非真实世界环境。

系统和非瞬时计算机可读介质可以被配置为:提供和/或支持在此所描述的各个方面。通过以下进一步详细讨论的本公开的益处,将理解这些以及另外的方面。

应注意,上述特征中的任何一个或多个可以单独地或任意组合地与任何其它特征或方面一起使用。来自一个实施例或方面的特征可以与任何其它所描述的实施例或方面的一个或多个特征互换或一起使用。

附图说明

通过参照结合附图的以下描述可以获取在此所描述的各方面的更完整理解及其优点,在附图中,相同附图标记指示相同特征,并且其中:

图1描述根据在此所描述的一个或多个说明性方面的可以使用的说明性计算机系统架构。

图2描述根据在此所描述的一个或多个说明性方面的可以使用的说明性虚拟化(管理程序)系统架构。

图3描述根据在此所描述的一个或多个说明性方面的可以使用的说明性的基于云的系统架构。

图4描述根据在此所描述的一个或多个说明性方面的可以使用的说明性实体架构。

图5描述根据在此所描述的一个或多个说明性方面的可以使用的说明性部件架构。

图6描述根据在此所描述的一个或多个说明性方面的可以使用的说明性工作器架构。

图7示出根据在此所描述的一个或多个说明性方面的用于注册工作器处理的方法的流程图。

图8a-图8c描述根据在此所描述的一个或多个说明性方面的可以使用的说明性空间优化式仿真世界。

图9描述根据一个或多个示例性实施例的工作器相关区域的示例。

图10描述根据一个或多个示例性实施例的工作器相关区域的另一示例。

图11描述根据在此所描述的一个或多个说明性方面的可以使用的说明性高级架构。

具体实施方式

在各个实施例的以下描述中,参照以上所标识的且形成其一部分的附图,并且在附图中通过说明的方式示出可以供实践在此所描述的各方面的各个实施例。应理解,在不脱离在此所描述的范围的情况下,可以利用其它实施例,并且可以进行结构和功能修改。各个方面能够为其它实施例并且以各种不同方式得以实践或执行。此外,在此使用的措辞和术语目的是描述,而不应看做限制。此外,在此所使用的短语或术语被给予它们的最宽泛的解释和意义。

本领域技术人员在阅读以下公开时应理解,在此所描述的各个方面可以实施为方法、计算机系统或计算机程序产品。相应地,那些方面可以采取完全硬件实施例、完全软件实施例或组合软件和硬件方面的实施例的形式。此外,这些方面可以采取具有计算机可读程序代码或指令的一个或多个计算机可读存储介质所存储的、在存储介质中或其上所实施的计算机程序产品的形式。可以利用任何合适的计算机可读存储介质,包括硬盘、cd-rom、光学存储设备、磁存储设备和/或其任何组合。特定数据结构可以用于更有效地实现在此所描述的一个或多个方面,并且这些数据结构在描述于此的计算机可执行指令和计算机可使用数据的范围内是预期的。此外,表示在此所描述的数据或事件的各种信号可以通过行进通过信号传导介质(例如金属线、光纤和/或无线传输介质(例如空气和/或空间))的电磁波的形式在源与目的地之间得以传送。

作为对以下更详细地描述的主题的总体介绍,在此所描述的方面针对用于提供分布式、持久性、空间优化式仿真开发环境的系统、方法和技术。在此所描述的其它方面可以允许将现有非分布式仿真程序整合到大规模分布式仿真中。在此所描述又一些其它方面可以用于自动地并且在空间上平衡并且分布仿真工作负载。

其中,可以在包括单机环境、连网环境、虚拟化环境和/或基于云的环境等中的各种不同系统环境中利用计算机软件、硬件和网络。图1示出根据本公开一个或多个说明性实施例的可以使用的空间优化式仿真计算系统100中的空间优化式仿真计算设备(或系统)101的框图的一个示例。空间优化式仿真计算设备101可以包括处理器103,用于控制空间优化式仿真计算设备101及其关联部件(包括ram105、rom107、输入/输出模块109以及存储器111)的总体操作。空间优化式仿真计算设备101连同一个或多个附加计算设备(例如网络节点123、125、127、129和131)一起可以对应于在此所描述的多个系统或设备中的任一个(例如个人移动设备、客户机计算设备、专有仿真系统、附加外部服务器以及空间优化式仿真计算系统100中的其它各种设备)。这些各种计算系统可以如在此所描述的那样单独地或组合地被配置用于:提供空间优化式仿真计算系统100。除了以上所描述的特征之外,在此所描述的技术还可以用于允许整合现有仿真程序并且在整个空间优化式仿真计算系统100对仿真工作负载在空间上进行负载平衡,如在此将更完整地讨论的那样。本领域技术人员应理解,在此所描述的空间优化式仿真计算设备101(或设备123、125、127、129和131)的功能可以扩展遍及多个处理设备,例如,以遍及多个计算机而分布处理负载,基于处理器负载、仿真世界内的位置、用户访问等级、服务质量(qos)等而分离交易。

可以经由网络121(例如互联网)互连各个网络节点123、125、127、129和131。也可以或可替选地使用其它网络,包括私有内网、公司网络、局域网(lan)、广域网(wan)、城域网(man)、无线网络、个人网络(pan)等。网络121目的是说明,并且可以被更少的或另外的计算机网络所替代。网络121可以具有任何已知网络拓扑中的一个或多个,并且可以使用各种不同协议中的一个或多个(例如以太网)。设备123、125、127、129、131和其它设备(未示出)可以经由双绞线、同轴电缆、光纤、无线电波或其它通信介质连接到网络中的一个或多个。

应理解,所示的网络连接是说明性的,并且可以使用建立各计算机之间的通信链路的其它手段。假设存在任何各种网络协议(例如tcp/ip、以太网、ftp、http等)以及各种无线通信技术(例如gsm、cdma、wi-fi和wimax),则在此所描述的空间优化式仿真系统部件中的各种计算设备可以被配置为使用任何这些网络协议或技术进行通信。

在此所使用的并且在附图中所描述的术语“网络”不仅指代远程计算设备经由一个或多个通信路径联接在一起的系统,而且还指代具有存储能力的可以不时联接到这些系统的单机设备。因此,术语“网络”不仅包括“物理网络”,而且还包括由驻留遍及所有物理网络的数据构成的“内容网络”。

输入/输出(i/o)模块109可以包括空间优化式仿真计算设备101的用户可以提供输入的麦克风、小键盘、触摸屏、游戏控制器、操纵杆和/或触笔,并且可以还包括用于提供音频输出的扬声器以及用于提供文本、视听和/或图形输出的视频显示设备中的一个或多个。软件可以存储在存储器111和/或存储区内,以将指令提供给处理器103,以用于使得空间优化式仿真计算设备101能够执行各种动作。例如,存储器111可以存储空间优化式仿真计算设备101所使用的软件(例如操作系统113、应用程序115以及关联内部数据库117)。数据库117可以包括第二数据库(例如,作为单独的表、报告等)。也就是说,取决于系统设计,信息可以存储在单个数据库中,或被分离到不同逻辑数据库、虚拟数据库或物理数据库中。存储器111中的各种硬件存储器单元可以包括通过任何方法或技术所实现的易失性和非易失性、可去除和不可去除介质,用于存储信息(例如计算机可读指令、数据结构、程序模块或其它数据)。空间优化式仿真计算设备101和/或计算设备127、129、131也可以是包括各种其它部件(例如电池、扬声器和天线(未示出))的移动终端(例如移动电话、智能电话、个人数字助理(pda)、笔记本等)。

在此所描述的各方面针对其它通用或专用计算系统环境或配置也可以是可操作的。可以适用于在此所描述的各方面的其它计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持或膝上型设备、基于车辆的计算设备、多处理器系统、基于微处理器的系统、可编程消费者电子设备、网络个人计算机(pc)、迷你计算机、大型计算机、包括以上系统或设备中的任一个的分布式计算环境等。

图2示出说明性空间优化式仿真系统的高级架构。如所示,空间优化式仿真系统200可以是单服务器系统、多服务器系统或基于云的系统,包括至少一个虚拟服务器202,其可以被配置为:将空间优化式仿真功能提供给空间优化式仿真系统200,和/或可以将对空间优化式仿真系统200的访问提供给一个或多个客户机计算设备(例如计算设备123、125、127、129、131)。虚拟服务器202可以包括一个或多个虚拟机240a-240n(通常在此称为“虚拟机240”)。每个虚拟机240可以包括空间仿真运行时248的实例,用于实例化、管理并且监控服务器工作器处理249a-249n(通常在此称为“工作器249”)的一个或多个实例。如以下进一步详细描述的那样,空间仿真运行时248可以被配置为:基于空间优化式仿真系统所生成的仿真世界的特定区域的瞬时工作负载而根据需要来自动地挂机或脱机工作器249。

虚拟服务器202内的空间仿真运行时248的一个或多个实例可以与彼此进行通信,以确定可以充当主控件的实例。例如,空间仿真运行时248实例可以利用一致的协议以确定主控件。主控件空间仿真运行时248实例可以负责对虚拟服务器202内的其它空间仿真运行时248实例与其它虚拟服务器202中执行的其它空间仿真运行时248之间的通信进行路由。如以下将更详细地解释的那样,空间仿真运行时248可以允许空间优化式分布式仿真,其中,仿真工作负载自动地遍及可用的虚拟服务器202分布。图2所示的虚拟服务器202可以被部署为图1所示的空间优化式仿真计算设备101的一个或多个实施例和/或由图1所示的空间优化式仿真计算设备101的一个或多个实施例或由其它已知的计算设备实现。

虚拟服务器202可以包括具有与虚拟服务器202进行通信的一个或多个硬件元件的硬件层210。可选地,硬件层210可以包括一个或多个物理盘212、一个或多个物理设备214、一个多个物理处理器216以及一个或多个物理存储器218。物理部件212、214、216和218可以包括例如以上关于空间仿真计算设备101所描述的任何部件。在一个示例中,物理设备214可以包括网络接口卡、视频卡、键盘、鼠标、输入设备、监视器、显示设备、扬声器、光驱、存储设备、通用串行总线连接、打印机、扫描仪、网络元件(例如路由器、防火墙、网络地址转译器、负载平衡器、虚拟专用网络(vpn)网关、动态主机配置协议(dhcp)路由器等)或与虚拟化服务器301连接或通信的任何设备。物理存储器218可以包括任何类型的存储器。在另一示例中,物理存储器218可以存储数据,并且可以存储一个或多个程序或可执行指令集合。物理存储器218中所存储的程序或可执行指令可以虚由拟服务器202的一个或多个处理器216执行。虚拟服务器202可以还包括主机操作系统220,其可以被存储在物理存储器218中的存储器元件中,并且可以由物理处理器216中的一个或多个执行。

管理程序230可以通过仿真具有对系统资源的直接访问的操作系统246或工作器249的任何方式将虚拟资源提供给在虚拟机240上执行的操作系统246a-246n或工作器249。系统资源可以包括但不限于物理盘212、物理设备214、物理处理器216、物理存储器218以及硬件层210中所包括的任何其它部件。管理程序230可以用于仿拟虚拟硬件,对物理硬件进行分区,对物理硬件进行虚拟化,和/或执行将计算资源提供给空间仿真运行时248和工作器249的虚拟机。管理程序230可以针对虚拟服务器202上执行的虚拟机240而控制处理器调度和存储器分区。

管理程序230可以是类型2管理程序,其中,管理程序可以在虚拟服务器202上执行的主机操作系统220内执行。虚拟机240可以然后在管理程序230之上的等级执行。类型2管理程序可以在主机操作系统220的背景下执行,使得类型2管理程序与主机操作系统220进行交互。空间仿真系统200中的一个或多个虚拟服务器202可以可替选地包括类型1管理程序(未示出)。类型1管理程序可以通过直接访问硬件层210内的硬件和资源而在虚拟服务器202上执行。也就是说,虽然类型2管理程序230可以通过主机操作系统220访问系统资源,如所示,但类型1管理程序可以直接访问所有系统资源,而无需主机操作系统220。类型1管理程序230可以在虚拟服务器202的一个或多个物理处理器316上直接执行,并且可以包括物理存储器318中所存储的程序数据。

空间仿真运行时248可以使得管理程序230创建一个或多个虚拟机240,其中,附加空间仿真运行时248和工作器249实例可以在访客操作系统246内执行。管理程序230可以加载虚拟机图像,以创建虚拟机240。管理程序230可以执行虚拟机240内的访客操作系统246。虚拟机240可以执行访客操作系统246。

除了创建虚拟机240之外,管理程序230还可以控制至少一个虚拟机240的执行。管理程序230可以对至少一个虚拟机240呈现虚拟服务器202所提供的至少一个硬件资源(例如硬件层210内可用的任何硬件资源)的抽象。管理程序230可以控制供虚拟机240可以访问虚拟服务器202中可用的物理处理器216的方式。控制对物理处理器216的访问可以包括:确定虚拟机240是否应具有对处理器216的访问以及物理处理器能力如何呈现给虚拟机240。

如图2所示,虚拟服务器202可以掌控或执行一个或多个虚拟机240。虚拟机240是可执行指令的集合,其当由处理器216执行时模拟物理计算机的操作,从而虚拟机240可以非常像物理计算设备一样执行程序和处理。虽然图2示出虚拟服务器202掌控两个虚拟机240的实施例,但在其它实施例中,虚拟服务器202可以掌控任何数量的虚拟机240。管理程序230可以对每个虚拟机240提供物理硬件、存储器、处理器以及对该虚拟机240可用的其它系统资源的唯一虚拟视图。可选地,管理程序230可以对每个虚拟机240提供物理硬件、存储器、处理器以及对虚拟机240可用的其它系统资源的实质上相似的虚拟视图。

每个虚拟机240可以包括虚拟盘242a-242n(通称242)以及虚拟处理器244a-244n(通称244)。虚拟盘242可以是虚拟服务器202的一个或多个物理盘212的虚拟化视图,或可以是虚拟服务器202的一个或多个物理盘212的部分。物理盘212的虚拟化视图可以由管理程序230生成、提供并且管理。管理程序230可以对每个虚拟机240提供物理盘212的唯一视图。因此,当与其它虚拟盘240相比时,每个虚拟机240中所包括的特定虚拟盘242可以是唯一的。

虚拟机240a-240n可以使用虚拟处理器244a-244n通过使用访客操作系统246a-246n来执行一个或多个工作器249a-249n。访客操作系统246可以是以下操作系统的非穷举列表中的任一个:windows、unix、linux、ios、android、symbian。访客操作系统246可以是基于前述操作系统中的一个或多个的专门构建的操作系统。例如,访客操作系统246可以包括linux的专门构建的版本,其可以仅包括对于支持工作器249的操作必要的功能模块。可选地,并且如以下进一步详细描述的那样,虚拟机240a-240n可以执行与虚拟机240a-240n中执行的一个或多个工作器249a-249n对应的一个或多个桥接器模块(未示出)。虚拟机240a-240n也可以掌控一个或多个组块模块(未示出)、接收方模块(未示出)以及oracle模块(未示出)。

图2示出可以使用的空间优化式仿真系统的仅一个示例,而本领域技术人员应理解,所使用的特定系统架构和计算设备可以变化,并且附属于它们提供的功能,如在此进一步描述的那样。

参照图3,可以在基于云的环境中实现在此所描述的一些方面。图3示出在基于云的计算平台系统300的基础上的空间优化式仿真环境(例如开发环境)的示例。如图3所示,客户机计算设备340a-340n(通称340)可以经由互联网330进行通信,以访问在基于云的计算平台310的虚拟服务器202(例如空间仿真运行时248、服务器工作器249、桥接器模块(未示出)、组块模块(未示出)、接收方模块(未示出)以及oracle模块(未示出))上执行的空间优化式仿真。

空间仿真运行时248包含用于实现包括空间优化式仿真环境的元件和部件的程序代码,如在此进一步详细描述的那样。例如,空间仿真运行时248可以包括用于基于云的计算平台310的桥接器模块、组块模块、接收方模块以及oracle模块中的一个或多个的实现代码,如在此进一步描述的那样并且如图11说明性地示出的那样,并且提供工作器管理功能(开始处理、停止处理等)。此外并且可替选地,空间仿真运行时248可以还显露应用编程接口(api),其可以用于瞬时地和/或周期性地监控空间优化式仿真环境的状态。监控api也可以用于调试空间优化式仿真环境的状态和行为。在说明性实施例中,空间仿真运行时248可以实现为jar(java存档)。

基于云的计算平台310可以包括私有和/或公有硬件和软件资源和部件。例如,云可以被配置作为待由一个或多个特定消费者或客户机计算设备340使用和/或通过私有网络使用的私有云。其它消费者可以通过开放或混合网络使用公有云或混合公有-私有云。可以可替选地使用已知的云系统,例如microsoftazure(华盛顿redmond的微软公司)、amazonec2(华盛顿西雅图的amazon.com公司)、googlecomputeengine(加利福尼亚山景城的谷歌公司)或其它。

空间优化式仿真开发环境300可以被部署为平台即服务(paas)基于云的计算服务,其可以提供用于允许用户开发、运行并且管理空间优化式仿真的平台。这样可以允许用户或客户机创建空间优化式仿真,而无需理解分布式计算的复杂性或需要对基础架构团队或超级计算机的访问。空间优化式仿真开发环境300可以被传送作为来自提供商的公有云服务。在此情况下,客户机组织可以提供可以与空间优化式仿真开发环境300整合的已有模型、仿真和/或数据库。可替选地,空间优化式仿真开发环境可以被传送作为客户机组织的私有网络内的私有服务。

基于云的计算平台310可以包括一个或多个虚拟服务器202a-202f(通称202)(例如图2所示的虚拟服务器202)。可选地,基于云的计算平台310可以包括可以被配置为提供在此所描述的空间优化式仿真功能的专用虚拟和/或物理计算资源。虽然图3示出六个虚拟服务器202(即202a-202f),但本领域技术人员应理解,基于云的计算平台310可以包括任何数量的虚拟服务器202。虚拟服务器202可以通过可以允许每个虚拟服务器202通过点对点方式直接与基于云的计算平台310中的任何其它虚拟服务器202进行通信的方式经由一个或多个网络而互连。可选地,虚拟服务器202可以被布置成虚拟服务器的多个集群。例如,可以根据基于云的计算平台310所使用的物理计算资源的物理位置来布置虚拟服务器的集群。在这样的一个示例中,一个集群可以是位于加利福尼亚的第一云数据中心,而另一云可以是位于爱尔兰的第二云数据中心(它们仅是说明性位置)。在另一示例中,可以基于对空间优化式仿真的分配而布置虚拟服务器的集群。在此情况下,一个集群可以被分配给第一空间优化式仿真的虚拟服务器202的第一子集包括,而另一集群可以是分配给第二空间优化式仿真的虚拟服务器202的第二子集。如果或当虚拟服务器202移动时,或如果或当对于第一空间优化式仿真和第二空间优化式仿真的计算资源需求可以随着时间改变时,虚拟服务器202可以人工地或动态地被重新分配给不同集群。连接到虚拟服务器202的客户机计算设备340可以不知道虚拟服务器202属于哪个集群(如果有),并且也可以不知道虚拟服务器202是否可以在连接的过程期间从一个集群到另一集群改变成员身份。

基于云的计算平台系统300可以还包括基于云的数据存储320。基于云的数据存储320中的存储资源可以包括存储盘(例如固态驱动器(ssd)、磁硬盘等)以及其它存储设备。可替选地,已知的基于云的存储提供商(例如amazons3(华盛顿西雅图的amazon.com公司)、googlecloudstorage(加利福尼亚山景城的谷歌公司)或其它提供商)可以提供基于云的数据存储320。可选地,可以与图3所示的基于云的计算平台310分离地实现或部署基于云的数据存储320。可选地,基于云的数据存储320可以实现或部署在基于云的计算平台310内。例如,基于云的计算平台310和基于云的数据存储320二者可以由云系统提供商提供作为提供商分配给云系统的资源的部分。

基于云的数据存储320可以包括一个或多个应用组件322。应用组件322可以包括可以定义空间优化式仿真的实体和部件的数据以及可以定义空间优化式仿真中的实体和部件中的每一个的一个或多个行为的程序。可选地,应用组件322可以包括可以定义构成空间优化式仿真的实体和部件的图式、数据结构、串行化对象等。可选地,应用组件322可以包括可以定义用于空间优化式仿真中的元件的一个或多个行为的计算机可读代码或指令、脚本、静态链接库、动态链接库等。基于云的计算平台310中的虚拟服务器202可以从基于云的数据存储320加载应用组件。每个虚拟服务器202中的空间仿真运行时248可以使用应用组件322中所包括的数据和程序,以使得执行分布式持久性空间优化式仿真。基于云的数据存储320可以包括定义用于空间优化式仿真的起始或初始条件的初始化数据和/或程序324。例如,基于云的计算平台310可以从基于云的数据存储320加载可以使得预定数量的实体和部件得以实例化并且初始化为预定初始状态的初始化数据324。在另一示例中,基于云的计算平台310可以加载并且可以执行可以使得预定数量的实体和部件得以实例化并且初始化为预定状态的一个或多个初始化程序324。在又一示例中,实体和部件可以根据基于云的计算平台310从基于云的数据存储320加载的初始化数据324和初始化程序324的组合得以实例化并且初始化为预定状态。

基于云的数据存储320可以包括仿真的快照326。仿真快照326可以定义仿真的有效状态,并且可以包括如果或当基于云的计算平台310从基于云的数据存储320加载和/或执行空间优化式仿真时则可以将其返回到该有效状态的数据和/或程序。快照326所定义的有效仿真状态可以是仿真的已知状态或期望状态。可选地,快照326所定义的仿真状态可以是运行中的仿真的先前所保存的状态。

基于云的计算平台310的部分可以是关联的,例如,一个或多个虚拟服务器202可以正代表同一端用户或代表隶属于同一公司或组织的不同用户执行空间优化式仿真。在其它示例中,特定虚拟服务器202可以是无关联的(例如隶属于不同公司或组织的用户)。对于无关联的客户机,关于任何一个用户的虚拟服务器202或基于云的数据存储320的信息可以针对其它用户被隐藏。

在一些实例中,客户机计算设备340可以实现、结合和/或以其它方式包括计算设备101和计算设备202的一个或多个方面。客户机计算设备340可以是能够进行以下操作的任何类型的计算设备:经由一个或多个用户接口接收并且处理输入;经由一个或多个用户接口提供输出;并且将输入、输出和/或其它信息传达给一个或多个其它计算设备和/或从一个或多个其它计算设备传达输入、输出和/或其它信息。例如,客户机计算设备340可以是台式计算机、膝上型计算机、平板计算机、智能电话等。此外,如以下更详细地所示,任何和/或所有客户机计算设备340在一些实例中可以是被配置为执行特定功能的专用计算设备。

客户机计算设备340可以包括工作器集成库342以及工作器处理249的实例。客户机计算设备340可以利用工作器集成库342和工作器处理249,以与在基于云的计算平台310中执行的空间优化式仿真连接。如以下进一步详细描述的那样,客户机计算设备340可以从描述空间优化式仿真的相关部分的基于云的计算平台310接收数据。客户机计算设备340中执行的工作器处理249可以利用接收到的数据,以将空间优化式仿真的相关部分呈现在显示器或其它用户接口设备上。客户机计算设备340也可以将可影响空间优化式仿真的状态的数据和命令发送给基于云的计算平台310。可以响应于用户输入而发送数据和命令。可选地,可以响应于工作器集成库342或工作器处理249所执行的计算而生成所发送的数据和命令。

有利地,并且如以上更详细地所示,使用空间优化式仿真开发环境的仿真开发者可以能够将游戏或仿真放大得与使用单个机器将可行的相比显著更大。此外,空间优化式仿真开发环境可以允许任意数量的用户参与者和数据源整合到仿真中。此外,空间优化式仿真开发环境可以使得仿真开发者无需担忧空间优化式仿真的不同部分之间的可扩展性或数据同步。

图3示出可以使用的空间优化式仿真开发环境的仅一个示例,而本领域技术人员应理解,所使用的特定系统架构和计算设备可以变化,并且附属于它们提供的功能,如在此进一步描述的那样。

图4示出根据本公开一个或多个说明性示例的可以实现的空间优化式仿真的框图的一个示例。空间优化式仿真世界410可以包括实体集合(例如实体1420、实体2430以及实体n430)。实体可以表示仿真世界410的基本计算单元或其它单元。虽然图4示出仿真世界410包括三个实体类型,但在其它示例中,仿真世界410可以包括任何数量的实体类型。此外,仿真世界410可以包括每个实体类型的任何数量的实例。例如,在城市仿真中,仿真世界410可以包括车辆实体、行人实体、交通信号实体、道路实体、建筑物实体等。在此情况下,城市仿真可以包括每个实体的大的并且不同的数目的实例。在另一示例中,在视频游戏世界仿真中,仿真世界410可以包括怪物实体、玩家实体、武器实体、树木实体、石头实体等。视频游戏仿真世界可以包括怪物实体的少量实例、用于游戏中活跃的每个玩家的一个玩家实体实例以及潜在地树木和石头实体的数百万个实例。在又一示例中,在贸易仿真中,仿真世界410可以包括贸易者实体、股票实体、共有基金实体、市场代理实体等。所仿真的贸易世界可以包括小数量的贸易者和市场代理实体,并且可以还包括数千个股票实体和共有基金实体。

可以通过实体所包括的部件(例如421、422、423、431、432、433和441)的组合来确定实体(例如420、430和440)的状态和行为。每个部件(例如421、422、423、431、432、433和441)可以包括归因于实体(例如420、430和440)的状态和行为的子集作为整体。例如,如图4所示,实体1420可以包括部件a421、部件b422以及部件c423;实体2430可以包括部件a431、部件d432以及部件e433;并且实体n440可以包括部件f441。本领域技术人员应理解,任何一个实体所包括的部件的数量和类型可以是任意的,并且不限于图4所示的示例。可选地,如果或当两个或更多个实体共有性质和行为的集合时,则两个或更多个实体可以包括特定部件的不同实例。例如,实体1420可以表示视频游戏仿真中的石头,实体2430可以表示同一仿真中的怪物。这两个实体(即420和430)可以共享可以定义刚体的性质和行为(即质量和速度)的部件a(例如421和431)。

实体(例如420、430和440)可以包括可以遍及所有实体共用的性质。例如,实体(例如420、430和440)可以包括可以用于唯一地标识仿真世界410内的每个实体实例的标识符值。实体(例如420、430和440)可以包括可以遍及多个部件共用的性质。例如,由于可能的是,视频游戏仿真中的多数部件可能需要对位置和速度值的访问,因此该仿真中的实体(例如420、430和440)可以包括那些值。此外,在实体内定位公共使用的性质可以减少各部件之间的联接,并且促进实体的各部件之间的通信。

参照图5,在此所描述的一些方面可以由一个或多个部件421、422、423、431、432、433和441实现、结合和/或以其它方式包括。图5示出在此所描述的空间优化式仿真系统中的部件510的示例性实现方式。部件510可以包括相关持久性质530a-530n(通称530)和事件550a-550z(通称550)的集合。部件510可以还包括程序540,其可以改变部件的性质的值,并且可以生成事件。作为服务器工作器249a-249n的部分,程序540可以在服务器(例如图2-图3所示的服务器(例如240a-240n、202a-202f以及340a-340n)中之一)中执行。空间仿真运行时248或其它软件实体可以将性质和事件生成的写入权限从部件510委任给专用工作器560。空间优化式仿真内执行的其它部件和/或工作器可以经由命令520a-520m(通称520)进行或触发部件510的状态的更新。可替选地,可以不进行委任。

部件可以包括一个或多个性质530。部件510的状态可以由部件510所包括的性质530所持有的值定义。相似地,实体的状态可以由实体所包括的所有部件的性质530所持有的值定义。部件510的状态可以在执行空间优化式仿真期间存储在本地存储器(例如242a-242n、244a-244n、218)中,以用于访问。可选地,部件510的状态可以存储在基于云的数据存储320中作为快照326的部分,并且因此可以遍及仿真运行是持久性的。可以周期性地(例如,连续地)存储部件510的状态。部件510的状态持久的速率可以基于一个或多个因素而变化。例如,如果或当部件510的状态快速地改变时,存储速率也可以与改变速率相称地增加。在另一示例中,存储速率对于可能要求比其它性质更高的精度的性质可以是更高的。

在描述实体或部件可以表现特定行为的情况下,应理解,另一元件(例如工作器模块)例如可以代表该实体或部件执行所需的计算,并且发射或接收对应信号或数据。

事件550可以指示瞬时动作在部件510上的出现。部件510可以响应于进行确定、得到特定结果、接收用户输入或另一类型的触发而发出一个或多个事件550(或事件550可以针对一个或多个部件510而被发出)。空间优化式仿真内的其它部件可以监控事件550的出现,并且响应于事件550而更新它们的状态或执行动作。其它部件可以被与发射部件相同的实体(例如工作器模块)所包括,或可以被空间优化式仿真内的其它实体所包括。例如,如果或当交通信号指示符改变为红色时,城市仿真中的交通信号实体可以发出事件。城市仿拟中的车辆实体可以接收该事件,并且可以响应于该事件而变为停止。在另一示例中,如果或当已经确定刚体部件已经与另一对象碰撞时,该刚体部件可以发射事件。

可选地,部件510可以包括程序540,其可以更新性质530的值并且使得部件510发出事件550。程序540也可以从其它部件和/或空间仿真运行时248接收并且处理命令520。因此,程序540可以定义空间优化式仿真内的部件510的行为。可替选地,空间仿真运行时248可以将部件510的行为的实现委任给专用工作器560。在此情况下,空间仿真运行时248可以将性质530和事件550的写入访问从部件510委任给专用工作器560。部件510可以在任一时间具有分配给它的至多一个写入器。因此,在撤销向专用工作器560的委任之前,空间仿真运行时248可以去除程序540用于修改性质530并且发出事件550的能力。可选地,专用工作器560可以基于被仿真的物理实体的实时和/或真实世界行为而实现部件的行为。例如,专用工作器560可以周期性地从车辆或其它移动对象上所安装的一个或多个传感器收集位置、速度和方向,并且使用该信息以修改部件510的性质530并且发出事件550。在另一示例中,专用工作器560可以接收先前所记录的车辆或其它移动对象的真实世界位置、速度和方向,并且使用该信息以修改部件510的性质530并且发射事件550。因此,专用工作器560可以用于将实时/真实世界合并到空间仿真中。任何其它真实世界对象、人、事件和/或系统可以用于生成数据作为用于仿真的输入。

委任可能需要指定可以标识能够仿真部件510的行为的工作器的类型的工作器约束条件。工作器560可以是可以专用于执行特定种类的计算的多个工作器类型之一。专用工作器560可以仅理解定义空间优化式仿真410内的实体(例如420、430和440)的部件(例如421、422、423、431、432、433和441)的子集。例如,在城市仿真中,一个工作器类型可以仿真车辆位置,另一工作器类型可以仿真交通信号,并且又一类型可以仿真环境排放。

工作器560可以包括数据结构和/或对象和软件程序,以仿真空间优化式仿真410内的部件(例如421、422、423、431、432、433和441)的子集的行为。工作器560可以是与如图2&图3中所描述的工作器249的一个或多个方面对应的处理。因此,作为服务器工作器249a-249n的部分,工作器560可以在服务器(例如图2-图3所示的服务器(例如240a-240n、202a-202f以及340a-340n)之一)中执行。工作器560可以读取空间优化式仿真410中的任何部件(例如421、422、423、431、432、433和441)的性质530。然而,工作器560可以仅写入其写入权限已经被委任给工作器560的那些部件(例如421、422、423、431、432、433和441)的性质530。如果或当部件510已经将其写入权限委任给工作器560时,则可以认为工作器560对于部件510是有权限的。工作器560对空间优化式仿真410内的实体(例如420、430和440)的子集可以是有权限的。可选地,工作器560对可以在空间优化式仿真410中定位得彼此靠近的一个或多个实体可以是有权限的。

为了仿真部件(例如421、422、423、431、432、433和441)的行为,工作器560可能需要来自空间优化式仿真410内的附近实体(例如420、430和440)的信息(例如性质、事件)。例如,在城市仿真中仿真交通十字路口的工作器可能需要来自附近十字路口中的车辆而非来自远离十字路口数英里的车辆的信息。工作器560的兴趣区域可以包括包含工作器560需要来自其的信息的附近实体(例如420、430和440)的所有区域。工作器560的兴趣区域可以包括工作器560对其没有权限的实体(例如420、430和440)。空间优化式仿真410可以在工作器560与对于附近实体有权限的其它工作器之间自动地同步数据。

工作器560可以经由桥接器610与空间优化式仿真410(例如,与实体)进行通信,如图6所示。图6示出在此所描述的在空间优化式仿真410中工作器560与桥接器610进行通信的示例性实现方式。桥接器610可以负责将相关信息(例如性质、事件)从工作器560传递到空间优化式仿真410内的其它相关工作器。桥接器610也可以负责传递来自工作器560的兴趣区域内的附近实体的相关信息。桥接器610可以仅被分配给一个工作器560,并且工作器560可以仅与一个桥接器610进行通信。也就是说,在桥接器610与工作器560之间可以存在一对一关系。作为服务器工作器249a-249n的部分,桥接器610可以在服务器(例如图2-图3所示的服务器(例如240a-240n、202a-202f以及340a-340n)之一)中执行。

可以经由工作器应用编程接口(api)实现桥接器610与工作器560之间的通信。可选地,工作器560可以由工作器api封装器630封装。工作器api封装器可以允许已经独立于空间优化式仿真开发环境而开发的工作器560可以在桥接器610内运作并且由桥接器610管理。可选地,工作器api可以允许将已有非分布式仿真程序整合到大规模分布式空间优化式仿真中。例如,游戏引擎(例如加利福尼亚旧金山的unitytechnologiessf的unity)可以整合到空间优化式仿真中,以仿真刚体物理学或提供客户机侧渲染和导航。在另一示例中,多模式交通流仿真软件包(例如开源matsim或其它商用软件包)可以整合到城市空间优化式仿真中。可以可替选地或也使用其它工作器引擎或程序。

在另一示例性实现方式中,专用工作器560可能需要在基于云的平台310内可能并非可用的专用硬件或其它物理资源。在此情况下,工作器api封装器640和桥接器610可以驻留在相对于基于云的平台310远程地物理定位的计算设备上,并且可以经由互联网或另一类型的网络连接到基于云的平台310。可以驻留在基于云的平台310的外部(例如,可以在客户机设备340a-340n上执行)的该专用工作器560可以称为外部工作器。而可以在基于云的平台310内执行(例如,可以在服务器240a-240n、202a-202f上执行)的另一专用工作器560可以称为内部工作器。参照基于云的平台310所描述的特征中的任何一个或多个可以用在或用于该示例性实现方式中。

在如在此所描述的其它相关功能当中,工作器api可以允许桥从工作器的兴趣区域添加或移除实体、向工作器通知部件状态改变、将部件委任给工作器或解除委任、信号传送工作器对其有权限的部件的部件状态改变。

在函数当中,工作器api所提供的可以是用于添加或移除实体的函数。可选地,工作器api封装器630可以包括当实体进入工作器560的兴趣区域时由桥接器610调用的句柄方法。例如,方法1是可以是用于将实体添加到工作器560的兴趣区域的方法签名的一个示例。

方法1:

voidonentityadd(entityideid,entitystateinitialstate);其中,

eid是可以唯一地标识所添加的实体的值;以及

initialstate是可以描述所添加的实体的初始状态的数据结构和/或对象。

虽然提供方法1作为用于将实体添加到工作器560的兴趣区域的示例,但可以使用各种其它方法和/或函数。例如,在不脱离本公开的情况下,在方法中可以包括其它参数。方法1可以然后传递到registerentityaddhandler()工作器api函数,其可以使得每当应添加实体时就调用方法1句柄。

可选地,工作器api封装器630可以包括当实体离开工作器560的兴趣区域时由桥接器610调用的句柄方法。例如,方法2是可以是用于从工作器560的兴趣区域移除实体的方法签名的一个示例。

方法2:

voidonentityremove(entityideid);其中,

eid是可以唯一地标识所移除的实体的值。

虽然提供方法2作为用于从工作器560的兴趣区域移除实体的示例,但可以使用各种其它方法和/或函数。例如,在不脱离本公开的情况下,在方法中可以包括其它参数。方法2可以然后传递到registerentityremovehandler()工作器api函数,其可以使得每当应移除实体时就调用方法2句柄。

工作器api还可以包括用于向工作器通知工作器的兴趣区域内的部件的性质已经改变状态的函数。例如,工作器api封装器630可以包括当工作器560的兴趣区域内的部件的性质已经改变状态时由桥接器610调用的句柄方法。方法3是可以是用于向工作器560通知改变后的状态的方法签名的一个示例。

方法3:

voidonstatechanged_component1(entityideid,somestatestate);其中,

eid是可以唯一地标识可以包括性质改变了状态的部件的实体的值;以及

state是可以描述部件的状态的数据结构和/或对象。

虽然提供方法3作为用于向工作器560通知改变后的状态的示例,但可以使用各种其它方法和/或函数。例如,在不脱离本公开的情况下,在方法中可以包括其它参数。在一些变形中,为了效率,state参数可以仅包括自最新更新以来已经改变的部件的性质的子集。方法3可以然后传递到addcomponentstatechangehandler()工作器api函数,其可以使得每当工作器的兴趣区域内的部件的性质已经改变状态就调用方法3句柄。

在函数当中,工作器api所提供的可以是用于动态地改变部件权限分配的函数。工作器api封装器630可以包括当工作器560可以现在对于部件有权限时由桥接器610调用的句柄方法。例如,方法4是可以用于将部件权限委任给工作器560的方法签名的一个示例。

方法4:

voidoncomponentdelegate(entityideid,componentidcid);其中,

eid是可以唯一地标识可以包括被委任的部件的实体的值;以及

cid是可以唯一地标识被委任的部件的值。

虽然提供方法4作为用于将部件权限委任给工作器560的示例,但可以使用各种其它方法和/或函数。例如,在不脱离本公开的情况下,在方法中可以包括其它参数。方法4可以然后传递到registercomponentdelegatehandler()工作器api函数,其可以使得每当工作器560可以现在对于部件有权限时就调用方法4句柄。

可选地,工作器api封装器630可以包括当工作器560可能对于部件不再有权限时由桥接器610调用的句柄方法。例如,方法5是可以用于从工作器560移除对部件的委任权限的方法签名的一个示例。

方法5:

voidoncomponentundelegate(entityideid,componentidcid);其中,

eid是可以唯一地标识可以包括被取消委任的部件的实体的值;以及

cid是可以唯一地标识被取消委任的部件的值。

虽然提供方法5作为用于从工作器560移除对部件的委任权限的示例,但可以使用各种其它方法和/或函数。例如,在不脱离本公开的情况下,在方法中可以包括其它参数。方法5可以然后传递到registercomponentundelegatehandler()工作器api函数,其可以使得每当工作器560可能对于部件不再有权限时就调用方法5句柄。

在又一些其它示例中,工作器api封装器630可以包括用于将工作器560设置为对于部件有权限或取消其对于部件有权限的设置的由桥接器610调用的句柄方法。例如,方法7是可以用于对于工作器560设置或移除对部件的委任权限的方法签名的一个示例。

方法6:

voidsetisauthoritative(entityideid,componentidcid,booleanisauthoritative);其中,

eid是可以唯一地标识可以包括部件的实体的值;以及

cid是可以唯一地标识部件的值;以及

isauthoritative是可以指示是否将工作器560设置为对于部件有权限或取消其对于部件有权限的设置的真/假值。

虽然提供方法6作为用于将工作器560设置为对于部件有权限或取消其对于部件有权限的设置的示例,但可以使用各种其它方法和/或函数。例如,在不脱离本公开的情况下,在方法中可以包括其它参数。

工作器api可以还包括用于向其它工作器通知工作器560有权限的部件的性质已经改变状态的函数。例如,工作器api封装器630可以包括当工作器560有权限的部件的性质已经改变状态时由工作器api封装器630调用的方法。方法7是可以用于更新工作器560有权限的部件的性质的方法签名的一个示例。

方法7:

voidupdatestate_component1(entityideid,somestatestate);其中,

eid是可以唯一地标识可以包括性质改变了状态的部件的实体的值;以及

state是可以描述部件的更新后状态的数据结构和/或对象。

虽然提供方法7作为用于更新工作器560有权限的部件的性质的示例,但可以使用各种其它方法和/或函数。例如,在不脱离本公开的情况下,在方法中可以包括其它参数。每当工作器560有权限的部件的性质已经改变状态时,就可以调用方法7。

可选地,工作器560可以被配置为:周期性地将心跳信号发送给桥接器610。如果或当工作器560结束发送心跳信号时,则桥接器610可以确定工作器处理560可能已经意外地终止。响应于该确定,桥接器610可以彻底地终止,并且请求对替换工作器处理560(和新的相应桥接器610)进行分配而且实例化。

图7描述示出将工作器处理注册到空间优化式仿真的方法的流程图。可以在计算环境(例如图3-图6所示的系统以及具有不同架构的其它系统(例如图1-图2的所有或部分))中执行图7所示的算法以及在此所描述的其它相似示例。可以在计算机可读介质(例如非瞬时计算机可读存储器)中实施图7所示的方法和/或其一个或多个步骤。

参照图7,步骤702:空间仿真运行时248可以基于需要新的工作器560实例的确定而在虚拟服务器202上对服务器工作器处理249进行实例化并且规定。例如,空间仿真运行时248可以已经检测到增加的仿真工作负载,这可能需要创建另外的工作器560实例。在另一示例中,空间仿真运行时248可以已经检测到已有工作器实例可能已经崩溃并且必须由新的工作器560实例替换。在步骤704中,工作器560可以将工作器560准备接被仿真工作的消息或另外信号发送给桥接器610。响应于从工作器560接收到准备消息,桥接器610可以向空间优化式仿真410宣告工作器560准备接被仿真工作,如步骤706所示。空间仿真运行时248可以在步骤708中使得桥接器610将一个或多个实体添加到工作器560的兴趣区域。例如,桥接器610可以调用工作器api封装器630中的onentityadd方法,以添加一个或多个实体中的每一个。空间仿真运行时248可以在步骤710中使得桥接器610(或其它实体或模块)将一个或多个部件的写入权限委任给工作器560。例如,桥接器610可以调用工作器api封装器630中的oncomponentdelegate方法,以委任对于一个或多个部件中的每一个的权限。在步骤712中,桥接器610可以向工作器560通知工作器560的兴趣区域内的部件之一已经改变状态。例如,桥接器610可以调用工作器api封装器630中的onstatechanged_component1方法,以向工作器560通知部件的状态的改变。工作器560可以重新计算关于其有权限的一个或多个部件中的每一个的状态。如果或当工作器560在步骤714中确定部件的状态已经改变时,则工作器api封装器630可以对于状态已经改变的一个或多个部件中的每一个调用updatestate_component1方法,如步骤716所示,并且方法结束。如果或当工作器560在步骤714中确定部件都尚未改变状态时,则工作器560可以返回步骤712,并且等待工作器560的兴趣区域中的部件的状态改变的另一通知。

图8a示出根据本公开一个或多个说明性实施例的可以实现的空间优化式仿真世界800的一个示例。如图8a所示,空间优化式仿真世界800可以被再划分为多个组块或区域。虽然图8a示出使用两个维度的空间优化式仿真世界800和组块,但本领域技术人员应理解,空间优化式仿真世界800和组块可以包括一个或多个维度(根据仿真开发者可以指定的)。例如,一维空间优化式仿真世界800可以表示为直线,并且组块可以包括直线的部分。在另一示例中,空间优化式仿真世界800可以仿真三维(3d)世界,并且组块可以包括3d仿真世界的三维部分(例如球体、立方体等)。每个组块可以受控于组块动作器(例如组块模块),其为负责该组块内的内容的程序、处理、例程或代理。

每个组块动作器810aa-810nn(通称810)可以被分配给组块服务器(例如820a-820c)(例如图2-图3所示的服务器(例如240a-240n、202a-202f))以及具有不同架构的其它系统(例如图1的所有或部分)。组块动作器810的子集可以被分配给同一组块服务器,使得组块服务器可以提供与组块动作器810的子集关联的功能。例如,组块动作器810aa、810ab、810ba以及810bb可以被分配给组块服务器820a;组块动作器810ac、810ad、810ae、810bc、810bd、810be、810cc、810cd以及810ce可以被分配给组块服务器820b;并且组块动作器810af可以被分配给组块服务器830c。组块动作器810的组块服务器分配可以基于多个因素。组块动作器810可以基于它们的相对位置而被分配给组块服务器820。例如,组块动作器810aa、810ab、810ba以及810bb可以基于它们是彼此相邻的而被分配给组块服务器820a。由于相邻的组块动作器与彼此远离放置的组块动作器810相比更可能彼此进行通信,因此这种分配可以是有利的,因为其可以减少网络业务和时延。可选地,组块动作器810可以基于组块处理工作负载和可用的服务器处理资源而被分配给组块服务器820。例如,组块动作器810的处理负载可以基于其组块或区域内所包括的实体的数量而得以确定。基于该确定,组块动作器810可以被分配给组块服务器820,直到实现服务器负载的预定指示。在此情况下,组块动作器810(即810ac、810ad、810ae、810bc、810bd、810be、810cc、810cd以及810ce)可以被分配给组块服务器820b,直到组块服务器820b达到预定服务器负载值。在又一些其它示例中,每个组块服务器820可以被分配预定数量的组块动作器。例如,组块服务器820c可以被分配以一个组块动作器810(即810af)。

随着空间优化式仿真800进展,仿真世界内所表示的实体的位置和数目可以改变。如图8b所示,分配给组块动作器850a-850n的组块或区域可以基于空间优化式仿真800的瞬时状态而根据需要在大小、形状和数目方面改变。可选地,组块动作器850可以基于所分配的组块内的实体的位置、数目以及密度被而分配给空间优化式仿真世界800的部分。例如,随着迁移到所分配的组块的实体的数量增加,分配给组块动作器850的组块的大小可以减小。例如,分配给组块动作器850f和850g的组块可以包括比分配给组块动作器850d的组块更高的实体密度。在其它示例中,可以基于与位于组块区域内的实体关联的工作负载而确定组块区域的大小和形状。例如,组块动作器850的处理负载或指示工作负载的另一值可以基于其组块或区域内所包括的实体和部件的数量和/或类型而得以确定。基于该确定,可以调整分配给组块动作器850的组块或区域的大小和形状,直到实现工作负载的预定指示。在又一些其它示例中,随着空间优化式仿真800进展,分配给组块动作器850的组块的大小、形状和数目可以保持不变。例如,组块动作器及其所分配的区域可以保持如图8a所示。组块动作器850的服务器分配也可以基于与以上参照图8a详细讨论的因素相似的因素而变化(未示出)。

此外,组块动作器可以在逻辑上分组为组块动作器层。图8c示出包括组块动作器层870、880和890的空间优化式仿真世界的一个示例。图8c所示的空间优化式仿真世界可以与图8a-图8b所示的空间优化式仿真世界相似。每个组块动作器层(例如870、880和890)可以包括一个或多个组块动作器。例如,组块动作器层870可以包括组块动作器871a-871m,组块动作器层880可以包括组块动作器881a-881m,组块动作器层890可以包括组块动作器891aa-891gg。本领域技术人员应理解,组块动作器871、881和891可以被分组为任何数量的组块动作器层,并且每个组块动作器层可以包括不同量的组块动作器,而且每个层中所包括的组块动作器的数量可以随着空间优化式仿真进展而变化,如以上详细描述的那样。组块动作器层870、880和890可以彼此重叠,并且共享空间优化式仿真世界的至少一部分。例如,如图8c所示,组块动作器层870、880、890覆盖并且共享空间优化式仿真世界800所定义的所有区域。在该示例中,对于虚拟世界的同一区域可以存在三个组块动作器(或两个、或一个)。

组块动作器871、881和891可以基于一个多个准则而被组织为一个或多个组块动作器层(例如870、880和890)。可选地,组块动作器层(例如870、880和890)可以包括可以被配置为存储空间优化式仿真世界中的一种特定类型的部件的正规数据的组块动作器(例如810、850、871、881和891)。例如,组块动作器层870可以包括可以存储关于如图4所示的部件a421和431的性质和状态信息的组块动作器871a-871m。相似地,组块动作器层880可以包括可以存储关于如图4所示的部件b422的性质和状态信息的组块动作器881a-881m。空间优化式仿真世界800可以包括用于空间优化式仿真世界800中所包括的每一部件类型(例如421-423、432-433和441)的一个组块动作器层(例如870、880和890)。

可选地,组块动作器层(例如870、880和890)可以包括可以包括相似大小的实体的组块动作器(例如810、850、871、881和891)。例如,组块动作器层890可以包括可以管理可以具有小尺寸的实体的组块动作器891。组块动作器层880可以包括可以管理可以通常比组块动作器层890中的实体更大的实体的组块动作器881。此外,组块动作器层880可以包括组块动作器层890所包括的实体的粗粒度式表示。组块动作器层870可以包括可以管理可以通常比组块动作器层880中的实体更大的实体的组块动作器871。此外,组块动作器层870可以包括组块动作器层880所包括的实体的粗粒度式表示。

在又一些其它示例中,组块动作器(例如810、850、871、881和891)可以基于组块动作器所包括的实体的重要性而被分组为组块动作器层(例如870、880和890)。例如,具有较高重要性的实体可以被分组为较高等级层。可选地,空间优化式仿真世界800可以包括可包括所有组块动作器的单个组块动作器层。在此情况下,每个组块动作器可以负责位于组块动作器所监控的区域内的所有实体。

组块动作器(810、850、871、881和891)可以监控分配给组块动作器的实体集合,并且确定实体可能需要被传送到另一组块。例如,如果或当实体已经移动到被分配给第二组块动作器的区域时,则实体可能需要迁移到第二组块动作器。组块动作器(810、850、871、881和891)可以基于实体的当前位置而确定第二组块动作器。例如,组块动作器(810、850、871、881和891)可以使用算法或数学表达式,以将实体的位置映射到组块动作器区域。可替选地或此外,组块动作器可以获得实体的位置的映射。例如,快照326可以包括空间优化式仿真世界800中的组块动作器的映射,并且组块动作器(810、850、871、881和891)可以获得映射,以使用实体的当前位置来确定第二组块动作器的身份。在另一示例中,空间优化式仿真世界800可以包括分布式散列表或分布式数据结构,其可以维护从空间优化式仿真世界800中的位置到其对应的组块动作器的映射。组块动作器(810、850、871、881和891)可以查询分布式数据结构,并且可以获得第二组块动作器的指示。

实体(或仿真或表示实体的软件)可以监控其在空间优化式仿真世界800内的位置或其它属性,并且确定其是否需要从其当前组块迁移到另一组块。例如,实体可以将位置从第一组块动作器(810、850、871、881和891)的组块内改变到被分配给第二组块动作器(810、850、871、881和891)的组块。实体可以基于实体的当前位置而确定第二组块动作器。例如,实体可以使用算法或数学表达式,以将实体的位置映射到组块动作器区域。可替选地或此外,实体可以获得实体的位置的映射。例如,实体可以从快照326获得映射,或,在另一示例中,实体可以从分布式散列表或分布式数据结构获得映射。如果或当实体确定需要迁移到第二组块动作器时,实体可以通知其当前组块动作器,并且请求迁移到第二组块动作器。

第一组块动作器可以通过以点到点方式直接与第二组块动作器进行通信而将实体迁移到第二组块动作器。第一组块动作器可以将实体的状态信息转发给第二组块动作器,并且第二组块动作器可以对于所迁移的实体开始监控并且接收状态改变通知。第一组块动作器也可以停止监控和从所迁移的实体接收状态改变通知。

组块动作器(810、850、871、881和891)可以监控并且接收来自对于位于其对应组块内的所有实体的所有所分配的部件的状态改变通知。组块动作器(810、850、870、880和890)可以将所分配的部件的状态存储在被分配给组块动作器的组块服务器820的本地存储器中,以用于在执行空间优化式仿真期间的访问。在一些示例中,所分配的部件的状态可以存储在基于云的数据存储320中作为快照326的部分,并且因此可以遍及仿真运行是持久的。如果或当组块服务器320已经意外地终止时,快照326也可以用于恢复组块服务器320。

可以通过组块动作器(810、850、871、881和891)所实现的多个数据策略之一来确定部件发出状态改变通知的速率以及存储状态改变的速率。可以基于发射实体与接收实体之间的距离而发出状态改变通知。如果或当接收实体与发射实体相距很大距离时,发射实体可以按较低速率发布状态改变。此外,如果或当接收实体更靠近时,发射实体可以缩短各状态改变通知之间的时间段。在此情况下,发射实体可以按相同速率计算或确定状态;计算速率可以不受距离改变影响。因此,允许实体以变化的速率对多个接收实体发布状态改变。

可以基于兴趣区域的重叠而确定发布速率。图9示出根据本公开一个或多个说明性实施例的可以实现的工作器的兴趣区域的图示的一个示例。兴趣区域a、b、c和d(即910a-910d)可以分别表示空间优化式仿真世界900内的工作器a、b、c和d(未示出)的兴趣区域。工作器a、b、c和d可以结合和/或以其它方式包括图5-图7所示的工作器560的一个或多个方面。虽然图9示出兴趣区域910使用两个维度,但本领域技术人员应理解,兴趣区域可以包括多达如空间优化式仿真世界所仿真的那样多的维度。例如,兴趣区域910可以在3d仿真世界中包括三个维度。

兴趣区域可以与一个或多个其它兴趣区域重叠。如图9所示,兴趣区域a910a可以在区域930a中与兴趣区域b910b重叠、在区域930d中与兴趣区域c910c重叠,并且在区域930e中与兴趣区域d910d重叠。相似地,兴趣区域b910b可以在区域930c中与兴趣区域c910c重叠。兴趣区域a、b和c(即910a-910c)可以都在区域930b中重叠。区域920a-920d可以指示没有重叠的区域。在未示出的其它示例中,各个兴趣区域可以通过各种其它组合而重叠或不重叠。

如果或当实体位于不与任何其它工作器的兴趣区域重叠的其有权限工作器的兴趣区域的部分内时,实体(例如940a-940c)可以按低速率发布(或已代表自身发布)状态改变通知。例如,如果或当实体940a可以位于区域920a内时,其可以按较低速率发布状态改变通知。如果或当实体(例如940a-940c)位于确实与任何其它工作器的兴趣区域重叠的其有权限工作器的兴趣区域的部分内时,实体可以按中等速率发布状态改变通知。例如,如果或当实体940c可以位于区域930e内时,其可以按正常速率发布状态改变通知。如果或当实体(例如940a-940c)位于确实与两个或更多个其它工作器的兴趣区域重叠的其有权限工作器的兴趣区域的部分内时,实体可以按高速率发布状态改变通知。例如,如果或当实体940b(或工作器)可以位于区域930b内时,则其可以按较高速率发布状态改变通知。

可替选地,实体可以实现以不同速率发布其性质的多个分离的部件。例如,车辆实体可以实现以高速率发布车辆位置的高保真位置部件以及以低速率发布车辆位置的第二低保真位置部件。可以选择其它实体用于监控高保真或低保真部件。

图10示出根据本公开一个或多个说明性实施例的可以实现的工作器的兴趣区域的图示的另一示例。兴趣区域a、b、c和d(即910a-910d)可以分别表示空间优化式仿真世界900内的工作器a、b、c和d(未示出)的兴趣区域。工作器a、b、c和d可以结合和/或以其它方式包括图5-图7和图9所示的工作器560的一个或多个方面。虽然图10示出的兴趣区域910使用两个维度,但本领域技术人员应理解,兴趣区域可以包括多达如空间优化式仿真世界所仿真的那样多的维度。例如,兴趣区域910可以在3d仿真世界中包括三个维度。

可选地,工作器处理(例如560,工作器a、b、c和d)可以周期性地确定负载度量。负载度量可以是指示工作器处理上的瞬时工作负载及其用于执行附加仿真计算工作的能力的值。例如,负载度量可以包括0至1之间的值,其中,值1可以指示不能接受附加工作的工作器。工作器处理(例如560,工作器a、b、c和d)可以周期性地将其负载度量发送给负责工作器的兴趣区域所覆盖的组块区域的组块动作器。工作器处理(例如560,工作器a、b、c和d)可以周期性地计算负载密度中心(例如1050a-1050d)。负载密度中心1050可以表示兴趣区域910的质心,其中,“质量”与工作器处理(例如560,工作器a、b、c和d)的计算工作负载有关。例如,兴趣区域910a可以基于分配给工作器a的实体和部件的位置、数目和处理负载而包括负载密度中心1050a。负载密度中心1050无需处于兴趣区域910的几何中心。随着空间优化式仿真900进展以及仿真900中的实体的位置、数目、密度和处理负载需求改变,工作器处理(例如560,工作器a、b、c和d)可以更新它们的各个负载密度中心1050的位置。负载密度也可以被描述为仿真或表示虚拟仿真或世界的空间、区域或其它部分的单元所需的处理需求。例如,负载密度中心也可以被描述为对于虚拟仿真或世界的特定主体或部分的计算需求的平均位置。

组块动作器(例如810、850、871、881和891)可以监控其组块区域内的工作器所报告的负载度量和负载密度中心。基于监控,组块动作器可以确定工作器是否可以处于或超越最大处理容量。基于确定,组块动作器可以尝试减少工作器的处理工作负载。在一个示例中,组块动作器可以从工作器处理移除对于一个或多个实体的委任权限,这样可以减少工作器的负载度量并且可以缩减工作器的兴趣区域。组块动作器可以然后将一个或多个实体的委任权限移给一个或多个其它工作器处理。例如,参照图10,组块动作器(未示出)可以基于负载平衡算法而确定将实体940a(或其它实体)从工作器a移到工作器b、工作器c或工作器d。基于监控,组块动作器可以可替选地确定工作器处理是否可以处于或低于最小处理容量。基于确定,组块动作器可以基于负载平衡算法而将当前分配给各个工作器处理的所有实体移至另一工作器处理。

基于负载平衡算法,组块动作器可以确定可以接收从过载的工作器处理移除的一个或多个实体的委任权限的一个或多个候选工作器处理。组块动作器可以基于从过载的工作器接收到通知的工作器而确定候选工作器处理的初始列表。例如,候选工作器处理的初始列表可以包括兴趣区域与过载的工作器的兴趣区域重叠的工作器处理。例如,工作器b、c和d可以包括用于工作器a的候选的初始列表,如图10所示。如果或当候选工作器处理可能正报告负载度量高于预定阈值时,组块动作器可以从初始列表移除该候选工作器处理。可选地,组块动作器可以被配置为:确定用于正被迁移的一个或多个实体中的每一个的拉伸能。组块动作器可以基于实体(例如940a)与各个工作器的负载密度中心1050之间的距离x(例如1060a-1060c)以及弹簧常数k而确定实体关于工作器处理的拉伸能u(例如,u=1/2kx2)。例如,确定为用于迁移实体940a的组块动作器可以基于距离1060a和弹簧常数k而确定实体940a与工作器b之间的第一能量。组块动作器可以基于距离1060b和弹簧常数k而确定实体940a与工作器c之间的第二能量,并且基于距离1060c和弹簧常数k而确定实体940a与工作器d之间的第三能量。组块动作器可以比较所有所计算的能量,并且确定使得实体与接收工作器处理之间的能量最小化的接收工作器。弹簧常数k可以是随着空间优化式仿真900进展而保持不变的预定值。在其它情况下,弹簧常数k可以随着时间进展或基于其它参数而改变。

在其它示例中,工作器处理(例如560,工作器a、b、c和d)可以基于确定工作器有权限的所有实体的平均位置而周期性地重新定位其兴趣区域。例如,工作器处理可以将其兴趣区域的中心移动(或以其它方式使其移动)到工作器处理有权限的所有实体的平均位置。此外,工作器处理可以被配置为:基于其当前负载度量而增加或减少其兴趣区域尺寸。例如,如果或当当前负载度量降低时,工作器处理可以增加其兴趣区域的最大仿真半径。相似地,如果或当当前负载度量增加时,工作器处理可以减小其兴趣区域的最大仿真半径。在此情况下,组块动作器可以基于实体(例如940a)与各个工作器的兴趣区域的中心之间的距离以及实体是否处于接收工作器的最大仿真半径内而确定接收工作器。在又一些其它示例中,工作器处理的数量和位置可以在整个仿真中保持不变,并且组块动作器可以基于实体的位置以及哪个工作器处理最靠近实体而确定用于实体的接收工作器。

组块动作器(810、850、871、881和891)可以将工作器处理分配给对于组块动作器所分配的实体所包括的相同类型的所有部件。以此方式,工作器处理可以仿真特定类型的所有部件或组块区域内的所有部件。组块动作器(810、850、871、881和891)可以包括可以对于组块区域内的多个实体有权限的多个工作器处理。

可替选地,组块动作器可以确定所有候选工作器处理具有高于预定阈值的负载度量。例如,确定为用于从工作器a迁移实体940a的组块动作器可以确定工作器b、工作器c和工作器d都具有高于预定阈值的负载度量。在此情况下,组块动作器可以被配置为:使得新的工作器处理得以实例化,并且使得部件委任可以得以传送到新创建的工作器处理。

组块动作器可以进一步被配置为:如果或当工作器处理意外地终止时,则利用以上详细描述的负载平衡算法之一。例如,如上所述,工作器处理可以停止,以周期性地发送心跳信号。在此情况下,组块动作器可以将使得其写入权限委任给所终止的工作器处理的实体和部件迁移到其它已有的工作器处理。可替选地,组块动作器可以用可以已经使用持久的快照数据恢复的新实例化的工作器处理来替换终止的工作器处理。

相似地,组块动作器可以被配置为:利用以上详细描述的负载平衡算法之一,以将工作器处理分配给新实例化的实体。例如,实体940b可以是新实例化的实体,并且组块动作器可以对所述工作器处理利用负载平衡算法,以分配实体940b所包括的部件。倘若组块动作器不能标识其所分配的区域内的工作器处理以分配给新实例化的实体,则组块动作器可以尝试基于已知工作器处理的本地缓存而分配新实例化的实体。例如,组块动作器可以维护组块动作器最近或在预定时间段内已经通信的已知工作器处理的本地缓存。可替选地或此外,组块动作器可以使得新的工作器处理得以实例化并且被分配给新实例化的实体。

可选地,空间优化式仿真世界900中的每一实体可以被配置为:周期性地利用以上详细描述的负载平衡算法之一,以确定是否将其部件中的一个或多个迁移到不同的工作器处理。基于确定,并且为了实行负载平衡算法,实体可以被配置为:使得部件委任从当前工作器处理迁移到另一工作器处理。

有利地,并且如以上更详细地示出的那样,空间优化式仿真开发环境可以通过使得执行仿真所需的工作器的总量最小化的方式,而遍及可用的资源自动地平衡并且分布工作负载。此外,空间优化式仿真开发环境可以基于仿真的运行时工作负载需求以及仿真内的实体的当前位置而自动地扩大或缩减并且移动在可能地数千个机器上执行的工作器处理的群。此外,空间优化式仿真开发环境可以通过使用状态数据的连续持久性以及对工作器处理健康的监控而从故障动态地恢复。

图11示出说明性空间优化式仿真开发环境的高级架构。如图11所示,客户机工作器1120a-1120c可以各自与桥接器1140a-1140c进行通信。相似地,服务器工作器1130a-1130c可以各自与桥接器1140d-1140f进行通信。客户机工作器1120和服务器工作器1130可以结合和/或以其它方式包括如图5-图7所示的工作器560以及如图9-图10所示的工作器a、b、c和d的一个或多个方面。客户机工作器1120a可以在客户机计算设备1110a内执行;客户机工作器1120b可以在客户机计算设备1110b内执行;并且,客户机工作器1120c可以在客户机计算设备1110c内执行。客户机计算设备1110a-1110d可以结合和/或以其它方式包括如图3所示的客户机计算设备340的一个或多个方面。计算设备1110f-1110j可以包括服务器(例如图2-图3所示的服务器(例如240a-240n、202a-202f))以及具有不同架构的其它系统(例如图1的所有或部分)。

桥接器1140a-1140f(通称1140)可以与空间优化式仿真环境1100中的一个或多个组块动作器1150a-1150d(通称1150)进行通信。桥接器1140可以结合和/或以其它方式包括如图6-图7所示的桥接器610的一个或多个方面。桥接器1140也可以与彼此进行通信。组块动作器1150可以结合和/或以其它方式包括如图8a-图8c所示的组块动作器810、850、871、881和891的一个或多个方面。

可选地,空间优化式仿真环境1100可以包括接收方模块1160。接收方1160可以提供公知或预定网络地址。初始地连接到空间优化式仿真环境1100的客户机工作器1120可以经由公知地址连接到接收方模块1160。接收方1160可以从客户机工作器1120接收对连接的请求。响应于连接请求,接收方1160可以确定对分配给客户机工作器1120的桥接器实例1140进行实例化的服务器1110d-1110g。例如,接收方1160可以使得服务器确定基于以上详细描述的负载平衡算法之一。在此情况下,接收方1160可以利用负载平衡算法以将服务器1110分配给客户机工作器1120。在另一示例中,接收方1160可以保持空间优化式仿真环境1100中的每个服务器1110d-1110g的兴趣区域的粗粒度理解。在此情况下,接收方1160可以使得服务器确定基于粗粒度理解。在又一示例中,每个服务器1110d-1110g可以周期性地确定在服务器1110内执行的所有桥接器实例1140的平均空间位置。在此情况下,接收方1160可以基于对服务器的平均空间位置与所提出的客户机工作器1120的空间位置的比较而将服务器1110分配给客户机工作器1120。

随着空间优化式仿真1100进展,桥接器1140a可以基于根据以上详细描述的负载平衡算法的确定而被指定为从服务器1110d迁移到服务器1110e。在此情况下,新的桥接器实例1140g(未示出)可以在服务器1110e中得以实例化,并且在桥接器迁移得以实行的同时,客户机工作器1120a可以临时连接到桥接器1140a和1140g二者。一旦迁移完成,客户机工作器1120a就可以与桥接器1140a断连,并且桥接器1140可以终止。在另一示例中,桥接器1140d和服务器工作器1130a可以被指定为从服务器1110f迁移到服务器1110g。在此情况下,新的桥接器实例1140h(未示出)和新的服务器工作器实例1130d(未示出)可以在服务器1110g中得以实例化。在桥接器迁移得以实行的同时,服务器工作器1130a和1130d可以临时连接到桥接器1140d和1140h。一旦迁移完成,服务器工作器1130d就可以与桥接器1140d断连,并且桥接器1140d和服务器工作器1130a可以终止。可替选地或此外,桥接器1140d和服务器工作器1130a可以在服务器1110f中终止,并且使用快照326中的持久的状态数据在服务器1110g上得以恢复。

可选地,空间优化式仿真环境1100可以包括一个oracle模块1170。在又一些其它示例中,空间优化式仿真环境1100可以包括如以上参照图2详细描述的用于每个虚拟服务器集群的一个oracle模块1170。oracle模块1170可以包括并且维护工作器数据库1172和桥接器数据库1174。工作器数据库1172可以包括指示空间优化式仿真环境1100中的所有工作器实例1120和1130的数据。相似地,桥接器数据库1174可以包括指示空间优化式仿真环境1100中的所有桥接器实例1140的数据。oracle模块1170可以利用工作器数据库1172和桥接器数据库1174中的数据,以响应于来自组块动作器1150的对附加资源的请求。例如,组块动作器1150可能不能确定可以接收委任权限的候选工作器处理。在此情况下,组块动作器1150可以从oracle模块1170请求另外的工作器处理。响应于此,oracle模块1170可以确定已有工作器处理是否对于接收委任权限可以是可用的或新的工作器处理是否可能需要被实例化。基于确定,oracle模块1170可以通过标识已有工作器处理的数据对组块动作器1150进行响应。可替选地,oracle模块1170可以通过新的工作器处理可能需要被实例化的指示对组块动作器1150进行响应。oracle模块1170可以进一步被配置为:利用工作器数据库1172和桥接器数据库1174中的数据,以终止未充分利用的或未使用的工作器实例和桥接器实例。例如,如果或当没有部件被分配给工作器实例时,oracle模块1170可以终止该工作器实例。

虽然已经结合虚拟硬件服务器描述了实施例和各方面,但方法和系统也可以与包括本地服务器或物理服务器的其它硬件或服务器一起使用。

虽然已经通过对于结构特征和/或方法动作特定的语言描述了主题,但应理解,所附权利要求中限定的主题不一定受限于以上描述的特定特征或动作。此外,以上所描述的特定特征和动作被描述为所附权利要求的示例性实现方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1