高级架构 - 数据分发管理

打印 上一主题 下一主题

主题 1020|帖子 1020|积分 3060

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
概要



  • 引言
  • 基本概念
– 命名空间
– 爱好管理


  • 静态数据分发管理
– 基于类的过滤


  • 动态数据分发管理
– 基于值的过滤
– 基于区域的
– 基于网格的
引言



  • 基本题目:当一个模仿器生成大概对其他模仿器有爱好的信息(例如状态更新)时,谁应该吸收消息?
  • 例子:在假造情况中移动的车辆 – 移动车辆发送“更新”消息,指示新位置
– 每个能“看见”移动车辆的车辆应该吸收消息
– 发送者/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)

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

熊熊出没

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表