高级架构 - 数据分发管理

概要

  • 引言
  • 基本概念

– 命名空间

– 兴趣管理

  • 静态数据分发管理

– 基于类的过滤

  • 动态数据分发管理

– 基于值的过滤

– 基于区域的

– 基于网格的

引言

  • 基本问题:当一个模拟器生成可能对其他模拟器有兴趣的信息(例如状态更新)时,谁应该接收消息?
  • 例子:在虚拟环境中移动的车辆 – 移动车辆发送“更新”消息,指示新位置

– 每个能“看见”移动车辆的车辆应该接收消息

– 发送者/RTI如何知道哪些其他联合体应该接收消息?

    • 数据分发本质上是一个消息路由问题

基本概念

通信原语

• 单播 :一个发送者,消息被一个目的地接收

• 广播 :一个发送者,消息被所有目的地接收

• 组播:一个发送者,消息被多个(但不一定全部)目的地接收

– 操作(类似于新闻组)

   • 加入群组

   • 离开群组

   • 向群组发送消息

– 可以通过单播或网络组播实现

在SIMNET和DIS中的数据分发

  • 问题:谁接收发送的每条消息?
  • 方法:广播每条消息,接收者负责过滤(删除)不需要的消息
  • 有N个联合体时,会有O(N^2)条消息;可能使用大量的通信带宽
  • 花时间接收和过滤不需要的消息成为瓶颈

数据分发

目标:将一个模拟器生产的数据路由给那些对接收它感兴趣的模拟器(理想情况下,不给那些不感兴趣的模拟器)

这意味着有

  • 模拟器指定其感兴趣接收的数据的方式(兴趣表达)
  • 描述产生的数据的方式(描述表达)
  • 指定描述和兴趣表达的通用语言(命名空间)

类比:互联网新闻组

• 描述表达

  • 消息发布到的新闻组名称
  • 在reddit“r/Minecraft”发布通告

• 兴趣表达

  • 用户订阅的新闻组集合
  • 订阅“r/Minecraft”和“r/gaming”

• 命名空间

  • 所有新闻组名称的集合

命名空间

• 用于创建数据描述表达式和兴趣表达式的“词汇”

• 名称空间是一组元组(V1, V2, … VN),其中 Vi 是基本类型或另一个元组

  • 例子:(类别, 位置)

– 类别:枚举类型 <坦克, 飞机, 舰船>

– 位置:元组(int: X坐标, int: Y坐标),其中 0 < X < 1000 且 0 < Y < 1000名称空间中的值:(坦克,(30,200)); (飞机,(10,20))

  • 元组空间的值可能对应于

– 模拟的状态变量(例如,对象属性的值),或

– 仅为路由数据而定义的新构造(HLA:路由空间区域)

  • 可包括对象的静态属性(例如,类别名称、属性名称)或动态属性(属性值)

兴趣管理

兴趣与描述表达式

• 兴趣表达式:名称空间的子集

  • 对所有飞机感兴趣 • (飞机, (X, Y)) 对任何 X 和 Y
  • 对“附近”的坦克感兴趣 • (坦克, (X, Y)) 其中 10 < X < 20 且 130 < Y < 150

• 描述表达式:名称空间的子集

  • (坦克, (15, 135))
  • (飞机, (X, Y)) 其中 35 < X < 38 且 98 < Y < 100

• 数据路由

  • 如果消息的描述表达式与模拟器的兴趣表达式重叠,则模拟器接收消息

静态与动态数据分发

• 静态数据分发

  • 名称空间仅包括在执行过程中不变的静态属性
  • 基于类别的数据分发 --->根据数据类型过滤 ---> “给我所有坦克类对象的位置属性更新”
  • 不能基于动态计算的量进行过滤 --->不能说:“给我靠近我的坦克对象的更新”
  • 例子:HLA 中的声明管理 

• 动态数据分发

  • 名称空间包括可能在执行过程中变化的动态量
  • 基于值的数据分发 ---> “给我靠近我的坦克对象的更新”
  • 例子:HLA 中的数据分发管理 ---> 路由空间 ---> 订阅我战场区域内坦克对象的位置属性
静态数据分发(基于类)

• HLA 中的声明管理服务

• 联盟对象模型(FOM)定义了描述联邦间交换的所有数据的对象类层次结构

  • 对象类
  • 属性

• 描述表达式和兴趣表达式指定对象类层次结构中的点

基于类的数据分发(静态)

• 联盟对象模型(FOM)定义了联邦间传输的信息类型

  • 对象类(例如,坦克)
  • 属性(例如,位置,炮塔方向)

• 一些关键原语(联邦/RTI 接口)

  • 发布对象类属性:由联邦调用以声明其能够更新的对象类和属性
  • 订阅对象类属性:声明联邦有兴趣接收的对象类和属性
  • 注册对象实例:通知 RTI 联邦内已创建一个对象的实例
  • 发现对象实例*:通知联邦已注册订阅类的一个对象实例
  • 更新属性值:通知 RTI 已修改一个或多个对象的属性
  • 反映属性值*:通知联邦已订阅的属性已被修改

  • 每个类从父类继承属性
  • 名称空间:<类别, 属性> <Vehicle,position>, <Aircraft,position>, <Aircraft,altitude>, <Tank,position>, <Tank,turret>, <B-17,position>, <B-17,altitude>, <B17,bombs>, <Spitfire,position>, <Spitfire,altitude>, <Spitfire, bullets>

• 发布对象类属性 [类别, 属性]

• 描述表达式:对象实例的一个属性

  • 名称空间中的单一 <类别, 属性> 点
  • 例子:<Spitfire, 位置> 或 <Aircraft, 高度>

• 订阅对象类属性 [类别, 属性]

• 兴趣表达式:以订阅点为根的子树

  • 订阅(飞机,高度):接收关于飞机、B-17 和喷火战斗机对象的高度属性的更新
  • <飞机, 高度>, <B-17 轰炸机, 高度>, <喷火战斗机, 高度>

动态 DDM(基于值)

• 动态(基于值的)数据分发:HLA 数据分发管理

  • 路由空间
  • 发布区域
  • 订阅区域

• DDM 实施

  • 基于区域
  • 基于网格
HLA 数据分发管理(DDM)

• HLA DDM 提供了一个更通用的机制 • 区域 – 由范围指定的矩形 • 名称空间

  • 路由空间:从 0 到 1 的 N 维坐标系统
  • 与模拟状态分开,仅用于路由

• 兴趣表达式

  • 订阅区域:路由空间中的 N 维矩形
  • 将区域与订阅请求关联

• 描述表达式

  • 更新(发布)区域:路由空间中的 N 维矩形
  • 与每个对象实例关联

• 如果更新属性的更新区域与该类/属性的联邦订阅区域重叠,更新属性的对象实例的消息将被路由到该联邦

HLA DDM

  • N 维标准化路由空间(虚拟环境中的游戏区)
  • 兴趣表达是路由空间中的区域(S1=[0.1,0.5], [0.2,0.5])
  • 描述表达式:每次更新都与路由空间中的更新区域(U)相关联
  • 如果联邦已订阅正在更新的属性且其订阅区域与更新区域重叠,则联邦会收到消息
  • 更新点:传感器未被通知车辆
  • 更新区域:传感器被通知车辆 过滤精度

总体来说,DDM 是

• 过滤精度

• 实施考虑(映射到多播组)

• 易用性之间的折衷

HLA DDM 服务

路由空间(名称空间)和区域

• 在联盟初始化文件中定义路由空间

• 创建区域,修改区域,删除区域

  • 用于订阅和更新区域 订阅区域(兴趣表达式)
  • • 使用区域订阅/取消订阅对象类属性
  • 除了基于类的过滤外还使用
  • 更新区域(描述表达式)
  • • 使用区域注册对象实例或将区域与更新关联
  • • 取消与更新的区域关联 • 更新属性值 基于区域的方法

基于区域的方法

基于网格的方法

• 将路由空间划分为网格单元,将每个单元映射到一个多播组

• 订阅区域:加入与订阅区域重叠的每个组

• 属性更新:将更新发送到与更新区域重叠的每个组

• 需要额外的过滤以避免不需要的消息,重复消息

更改订阅区域

• 对于(旧区域中的单元 - 新区域中的单元),执行离开操作

• 对于(新区域中的单元 - 旧区域中的单元),执行加入操作

总结(DDM)

• 声明管理(静态)

• 数据分发管理提供基于值的数据过滤

  • 动态兴趣,描述表达式
  • 设计涉及多个权衡 : 过滤效率 ,易用性 , 实施复杂性

• 实施

  • 将名称空间映射到多播组
  • 将兴趣表达式映射到多播组加入
  • 将描述表达式映射到多播组发送 

• DDM

  • 基于区域
  • 基于网格
  • 其他(基于排序的方法 - 见 tomacs.pdf)
  • 20
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值