APP下载

基于线程池技术的空间数据同步传输方法仿真

2021-11-17黄小平张明军谢蓉蓉

计算机仿真 2021年7期
关键词:空间数据时序线程

黄小平,张明军,谢蓉蓉

(1. 广州软件学院网络技术系,广东 广州 510990;2. 西安石油大学计算机学院,陕西 西安 710065)

1 引言

信息采集技术的迅猛发展使空间数据量快速增长,因此对数据传输提出更高要求。空间数据就是描述空间目标位置、形状、大小以及分布特征的信息,具有定位、定性等特征。而空间数据的管理形式也从集中式管理发展为利用分布式系统管理海量数据。在分布式系统中,大多通过异步方式实现数据传输,该方法对时序要求较低,导致传输效率较低。近年来,一些学者研究了同步传输方法在空间数据传输中的应用。

江渝川[1]等人提出基于似然估计补偿机制的数据同步传输算法。首先设置分层区域节点-子节点的数据传输结构,完成区域节点初始化;利用数据分子双向交互方式建立似然估计补偿机制,同时计算频率与相位偏移程度;最后对子节点信息进行精确同步。王松明[2]将JESD204B协议的数模转换器和现场可编程门阵列相结合,确定系统基本结构;分析数据传输延时情况,按照同步原理实现接收与发送多通道数据同步传输。

以上方法虽然可以实现数据同步传输,但是数据传输的安全性得不到保障。为此,本文利用线程池技术实现空间数据同步传输。线程的概念较为抽象,其涵盖了一个计算机操作某项任务时所做的全部事件,属于CPU上调度的程序状态[3]。线程和进程有很大区别,进程是由代码、数据和寄存器构成的,而线程则是由表示程序运行状况的寄存器与栈构成,可以被普通用户组成的线程库访问。由于同步传输是通过相同的时钟节拍来实现数据发送,因此信号源码之间的位置是固定的,因此必须确定线程池同步数据的时序图[4],构建统一的时钟信号,建立收发方的密钥机制[5],只有这样才能保证空间数据安全同步传输。

2 空间数据传输过程分析

2.1 传输系统结构

空间数据传输系统组成结构主要包括客户、接口服务与储存四个模块,每个模块之间相互协作,共同完成数据传输任务。

1)客户模块

客户模块是空间数据的发送方,位于各监测站台,由发送与传输控制协议[6](Transfer Control Protocol,TCP)加速两个子模块构成。发送端主要任务是数据的监视、调度与执行。如果有新的数据信息生成,发送任务会自动添加到发送列表,通过控制器进行调度;TCP子模块的主要任务是控制数据传输速度。

2)接口模块

接口部分属于站台和数据中心的通信接口,规定了访问控制验证、文件名更改、文件格式定义等数据传输协议。

3)服务模块

服务模块是空间数据传输的接收方,包括监听器、接收器、文件池、控制器与数据处理引擎等设备。其中监听器收到访问请求后,将任务分配给接收器;接收器负责数据接收,并将数据存放到文件池;控制器为处理引擎分配相应任务;处理引擎则对文件池中的数据做解析处理。

4)储存模块

数据储存方法包括两种,二进制[7]与图片类型的数据通过文件形式保存到服务器中;记录类的数据利用数据库表的方式储存。

2.2 数据传输过程分析

空间数据有助于相关人员了解空间环境,对保障空间安全具有重要意义。空间业务预报必须以大量的、真实的、多维数据为支撑,因此对数据传输过程提出如下要求。

1)空间数据传输必须满足稳定性需求,因此要求始终保持7×24小时稳定传输。

2)不仅需要在较短时间内传输海量数据,还要确保较高的发送速度,避免数据堆积。

3)针对数据发送端,传输中断后可以自动补发数据;对于接收端,需保证数据完整程度。

为满足上述要求,确定空间数据传输的基本过程如图1所示。

图1 空间数据传输过程示意图

3 实现基于线程池的空间数据同步传输

3.1 分析线程池逻辑单元

基于上述对数据传输系统工作过程的分析,要想实现数据的同步传输,需引入线程池技术。线程处理最普遍的用例就是用户界面,利用线程,用户通过按钮启动程序,而并非让用户等待到任务结束后再响应。将线程池在数据同步传输中的使用共分为以下四个逻辑单元:

1)主线程

主线程首先需要完成任务类、线程管理类的构造与实例化,做好全部环境准备。为确保处理速度,再从数据库中挑选出适量的数据进行处理,并将这些任务引入到队列中。至此主线程任务结束,等待线程池并发处理,当获得完成通知后重新挑选一定数量任务处理,直到全部同步传输任务均实现。

在主线程退出操作时,必须释放各类目标以便安全退出。

2)管理线程

管理线程并不是程序中单独的线程,在该类中,其关键技术是需要构建并同时启动N个工作线程。为便于线程做单独处理,这些线程需利用同一个目标对其保存,例如某些变量赋值、暂停与启动线程等。

3)工作线程

工作线程即任务处理模块,主要执行的任务主要包括从队列中获取某项任务、结合任务项从数据库中获得初始数据、形成制定格式语句[8]、按照处理结果返写标志四项内容。

4)查询线程

主线程创造了查询线程,但在创建后必须等待主线程的唤醒成功后才能执行,其主要任务为持续探测任务数量。查询线程有助于确定任务处理进度,同时将处理情况通知主线程。如果得知全部任务均已完成,主线程会发出完成标志。

3.2 确定同步传输时序

确定线程池具备的四个逻辑单元后,需要进一步分析这些单元的处理逻辑时序。

1)线程池线路数量

对于线程池数量,通常情况下的计算公式为

N=ηCPU*2+2

(1)

其中,ηCPU为CPU数量。由式(1)可知,线程数量取决于CPU数量。在本文中,为充分使用数据库读写时间,工作线程将在数据库中反复读写,以达到并发处理目的。

2)任务列表同步

在数据同步传输过程中可能会遇到如下问题,队列中的任务存在乱码现象,和理想情况不同导致程序报错。此种现象由于主线程与工作线程同时挑选队列任务造成的。因此本文利用临界区域技术,将两个线程操作放入相同过程中读写。临界区为某段独占共享资源的访问代码,无论在任何时刻都只允许一个线程访问共享资源。若存在多个资源同时访问,则会有一个线程被挂起,直到进入临界区的线程离开。这样可以不仅保证队列安全,应用程序也会减少出错。

3)主线程进度获取

主线程需要随时了解已知任务的进展情况,但是若利用主线程直接监测,通常会导致主进程锁死。因此通过查询线程监测进度,并将监测情况报告给主程序。详细过程为:预定一个信息,主线程会对该消息做出反应,并且定义某个单独计数器,当任务实现后计数器数值加1。通过比较计数器和任务数量来判断任务进程,当计数器与任务数量相同时则表示该任务已完成。

图2表述了线程池处理逻辑的时序图。

图2 线性池数据同步时序图

3.3 空间数据同步传输

利用线性池方法确定同步传输的时序后,为了使同步传输更加安全可靠,本文使用基于马尔可夫决策过程的空间数据加密同步算法实现数据同步传输。

3.3.1 同步传输动态路径获取

在对空间数据同步传输过程中,需综合分析时延与丢包率[9]对吞吐量造成的影响,结合最佳策略选取不同路径进行数据传输,具体实现过程如下。

(2)

(3)

(4)

2)在传输路径k上如果出现丢失状况,则k中拥塞窗口cwk会减少到cwk/2;

(5)

(6)

(7)

(8)

在状态i时选择不同行动后的理想吞吐量表示反馈,理想吞吐量即为数据同步传输路径的吞吐量,根据吞吐量情况选择最佳传输路径。

3.3.2 同步传输

将数据密钥协商和同步传输相结合,使通信双方彼此构成的密钥协商数据进行分片,同时为每个分片加上时间戳,通过私钥对数据内容签名[10],完成全部数据的分片后利用上述选择的最佳路径传输空间数据,这样不但可以保证传输的同步性,还提高了数据传输安全性。详细过程如下:

假设通信双方A与B通过某条传输路径已经得到密钥协商的公用参数p与g。则密钥协商过程如下:

(9)

在所选的路径上向B传输空间数据

(10)

式中,m′为数据传输的分片总量,Tai为每一条路径的时间戳,可避免数据同步传输过程中受到攻击,SA代表A的私钥,ESA(kai,Tai,m′)描述A利用自身私钥SA对数据进行签名,以便接收方可以及时认证消息。B按照和A相似的过程进行同步数据传输加密分片:

(11)

在所选择的同步传输路径上向A传输如下数据

(12)

当通信方Tbi接收到数据Mj后,根据随机数kb和Tbi判断数据是否重放,如果重放则直接去除,反之通过对方公钥进行签名核实。则发送发A传输空间数据的流程如下。

发送方A采用数据密钥Ka,b加密需要传输的数据,假设需发送的空间数据包为M′,C=EKab(M)代表经过加密处理的数据密文,A将密文C分解为n″个子数据包,同时对数据包添加会话序号seq、块标识i′与时间戳Ti′,则

(13)

接收方B接收数据流程为,B接收到数据后,按照认证码对空间数据进行认证,通过认证后根据块标识对数据包做解码处理,恢复明文数据包,实现数据同步且安全传输。

4 仿真数据分析与研究

为证明所提传输方法的有效性,在如图3所示的拓扑网络中进行仿真。实验参数如表1所示。

图3 仿真拓扑结构图

表1 实验参数表

将大小不同的数据通过本文方法、文献[1]、文献[2]方法进行同步传输,记录每次传输的时间,测试结果如表2所示。

表2 不同方法数据同步传输所需时间记录表

由表2可知,当空间数据小于5kB时,三种方法同步传输所需时间均相同,没有出现明显差异。但随着数据量的不断增大,本文方法的传输速率优势较为明显,当空间数据达到200kB时,本文方法的传输时间为58.12×10-3s,而文献[1]方法和文献[2]方法分别为61.34×10-3s和67.23×10-3s。这是因为基于线程池技术的传输时序图发挥出重要作用,具有较强的处理逻辑可以减少同步传输时间。此外为证明不同方法的传输安全性能,对累计传输错误率进行对比试验,试验结果如图4所示。

图4 不同方法同步传输累计错误率

由图4可知,本文方法的累计错误率最低,最高为数据140kB时的0.12%,比文献[1]方法和文献[2]方法在数据140kB时的0.18%和0.3%累计错误率更低。这是因为本文在传输过程中加入密钥机制,可以有效保证数据安全性,减少错误传输概率。

5 结论

为满足空间数据传输对速度与安全性的要求,本文将线程池技术与基于马尔可夫的空间数据加密算法相结合,设计一种同步传输方法。

1)该方法对于不同大小的空间数据均能快速传输,当空间数据达到200kB时,本文方法的传输时间为58.12×10-3s。

2)本文方法的累计错误率最低,最高为数据140kB时的0.12%,相较于对比方法累计错误率更低,更能保障数据安全。

3)虽然线程池技术拥有强大的处理能力,但是也存在一定风险,其应用程序容易受到其它多线程的破坏,导致死锁。当处理较长时间的并发任务时,还需改善其性能,使其具有更加广阔的应用前景。

猜你喜欢

空间数据时序线程
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
5G终端模拟系统随机接入过程的设计与实现
实时操作系统RT⁃Thread启动流程剖析
实时操作系统mbedOS 互斥量调度机制剖析
清明
基于GEE平台与Sentinel-NDVI时序数据江汉平原种植模式提取
你不能把整个春天都搬到冬天来
GIS空间数据与地图制图融合技术
融入空间数据的地图制图路径探究
Java的多线程技术探讨