视图库过车数据模拟工具设计(上) 1. 需求 2. 设计思想 3 软件架构

1. 需求

  在视图库产品测试中目前我们目前有专门的压力测试工具。这些工具能够模拟大量并发的过车数据,但由于这些数据是无规律模拟出来的随机数据,与现实世界中的过车数据规律存在一定差异,不利于基于视图库的应用系统进行技战法分析。
  模拟工具的主要需求有:
  1.能够模拟生成设备,车卡,车牌信息。
  2.生成的车卡具有拓扑关系,所有的车卡投射到二维平面上都有自己的座标。
  3.对于每辆车,生成过车数据的轨迹应遵循2中车卡的拓扑关系,即行车轨迹覆盖相邻的车卡。
  4.为提高并发量,可水平扩展。 多个模拟工具可并发生成过车数据。

2. 设计思想

2.1 空间分析

  在实际世界中,卡口之间都是有地理空间关系的。这些卡口之间的空间关系构成了一个图,图中的每个节点是一个卡口。图中的多条边构成了一辆车的行驶轨迹。
  在模拟工具中,我们将卡口定义一个网格中的每个点,每个卡口座标是这个网格座标系中的某个定点,如下图所示:



  工具初始化时将配置的所有卡口定义为一个M×N网格中的所有端点,并为每个卡口分配一个座标。
  如图1所示,某车的行驶轨迹为座标为(4,2),(5,2),(5,3),(5,4),(6,4)的卡口。其过车记录为5条,每一条过车对应其经过的某个卡口。

2.2 时间分析

  对于现实世界中的车辆,行驶速度有不同。因此对于同一条路径,经过相邻两个端点间的时间也不一样。因而,模拟过车工具需要模拟车辆行驶的速度,并根据模拟(随机)生成的速度计算经过每个端点(卡口)的时间。
  仍以图1为例,假设每个卡口间距离是1公里,生成的随机速度为60公里/小时,则相邻过车记录之间时间间隔为1分钟(匀速行驶)。

2.3 资源池

  工具在启动时需要根据工具的配置信息生成对应资源池,模拟过车agent取资源池中数据生成过车记录。工具中使用的资源池有:
   车卡资源池:本实例中使用的所有车卡,每个车卡具有二维座标。
   车牌资源池:本实例中使用的所有车牌号。

2.4. 模拟过车agent

  过车记录由模拟过车agent生成。模拟过车agent在系统中可设置多个,可并行工作。
  模拟过车agent的工作流程如下:
  1.在车卡资源池中获取一个车卡作为车辆轨迹起点。
  2.在车牌资源池中获取一个车牌,并将该车牌号锁定。
  3.随机生成行驶路径长度和随机行驶速度。
  4.根据1中的起始车卡和3中的行驶路径长度生成n条过车记录,这n条过车记录的过车时间根据2中取出车牌的最后出现时间、3中生成的随机行驶速度算出(默认卡口间的距离一致,且匀速行驶),并记录下该车牌最后出现时间留做下次使用。
  5.解锁2中的车牌号,以便该车牌可被其它agent使用。
  6.将生成的过车记录写入数据库中。

3 软件架构

  过车数据模拟工具的软件架构如下图所示:



  系统启动时:根据配置信息生成卡口ID资源池及各卡口的座标;根据配置信息生成车牌资源池;根据配置信息生成过车agent集合。
  对于每个过车agent,持续不断地生成过车轨迹,其生成算法如之后的章节所示。
生成的过车轨迹是一个过车集合,被发送过车数据流中,该数据流被写入到数据库中。
对于大数据量模拟环境,可部署多个过车模拟工具实例用于模拟大并发数据量。为保证没有冲突数据,每个实例配置的车牌资源和卡口资源请隔离开。
  如下图中,多个实例运行配置的卡口座标范围不一致但不冲突:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章