一种面向流数据的分布式实时存储方法

2016-01-14 11:30孙艳华王丽娜
电脑知识与技术 2015年19期
关键词:接收数据数据量缓冲区

孙艳华 王丽娜

摘要:随着物联网建设的不断发展,以实时传感数据为基础的各类流数据如何及时快速存储已成为当前急需解决的问题。面对连续不断到达的数据流,数据流存储系统必须及时快速将其存储到持久化介质中。针对这一需求,本文提出了一种基于缓存的分布式实时存储方法DRS。DRS方法依据窗口阈值,不间断地从缓存区接收数据,并结合一致性哈希算法将数据分布存储到数据服务器中。实验表明,该分布式存储方法能够实时地将数据存储到持久化介质中。

关键字:流数据;实时存储;阈值;一致性哈希

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)19-0005-02

1引言

随着物联网建设地不断发展,流数据逐渐成为信息化系统中一类关键数据形式。该类数据如何及时存储已成为当前物联网应用建设中的一个重点。对于实时数据存储系统而言,首先要确保数据及时存储,从而保证数据的实时性。由于数据延迟存储,造成数据处理的非正确性,做出错误的决策。

以一个物联网环境下的地铁站交通监管数据流存储任务为例,该任务需要监管以下几类数据:1)客流;2)基础设施:扶梯,售票机,防火设备,照明灯等;3)车流:地铁,公交车,出租车等。收集并将该流数据及时存储。在该背景下,设计一种实时存储方法成为必要。

2交通枢纽实时监管系统

交通监管系统通过具体设备进行数据监测,存储,处理,对交通事件做出及时具体的措施。该系统采用了分布式的并行架构。其结构如图1所示。

3DRS方法的基本思想

车辆实时监管系统分布式架构中需要存储大规模实时数据,而这些数据具有实时性,高速性,因此我们提出的存储方法首要考虑存储的实时性。DRS方法的基本思想如下:

利用Map Reduce思想设计DRS方法,其方法的设计思路:数据接收阶段对数据做简单的划分工作,数据写入阶段则对已划分数据进行处理。以车流数据为例,当数据接收区监听到数据缓冲区有数据时,数据接收区开始接收数据。接收数据的同时,存储程序生成多个存放数据的队列,根据数据的时间标示,将该条数据放置到对应的队列中。当队列中数据到达到窗口阈值后,数据写入区解析存储该队列中的数据。各个队列中数据对象发送给各个数据写入区,数据写入区解析各个数据对象,将其同时存储到不同数据服务器中,实现高速率数据快速存储。

窗口阈值采用时间和数量阀值,当发送的数据在规定的时间阀值到达之前已经达到数量阈值,则立即将该部分数据进行解析存储,反之亦然。

4DRS方法的实现

4.1数据划分策略

各个队列中数据对象在内存中采用链表结构存储。根据第三节对DRS方法思想的描述可知,数据接收阶段接收数据的同时要对数据进行划分操作。该方法使用数据的唯一标示划分数据,将该条数据划分到对应的数据队列中。以车流为例描述该划分策略:首先,获取该条数据的时间戳属性值,进行hash直接取余,根据hash值将该条数据放置到对应的队列中。

当某个队列数据满足某个窗口阈值时,数据接收区会给数据对象加上标示key。每个数据写入区只负责某个队列数据对象的解析存储。

4.2数据写入

数据接收区将该段时间内的数据划分后,数据写入区接收分片数据。使用一致性哈希算法将各个分片数据有组织地存储到数据服务器中。每个服务器节点可以对等均匀地分布数据。

使用一致性哈希计算时,数据写入区将数据写入到哪台数据服务器不仅仅依赖标示key本身而将数据服务器的配置(IP地址或者机器名)也参与hash运算。单个数据服务器节点只需要专注于自身存储工作,从而实现将复杂的分布式架构逻辑与单个服务节点数据处理相分离,最大限度地利用现有的数据库存储技术。

数据存储流水线可以看做一个由数据监测,数据接收,数据划分,数据写入四个部分组成的串联系统。初始化数据发送速率,队列划分个数和窗口阈值大小,运行存储程序。

4.3DRS方法实现

基于上述理论,该DRS方法的实现如下:

首先,首先给几类流数据设定标示,如给流数据设置属性值,并配置其值,然后通过属性值将数据分类,即拥有相同屙性值的数据为相同类。

其次,数据处理机对某类数据处理之后,结果集也赋予相同的Attribute value值,将其一起发送到数据缓冲区,最后,存储程序对接收的数据进行存储,流程如下:

传感设备发送数据或者数据处理机发送数据时,首先将数据发往数据缓冲区;

(1)数据接收区一直监听数据缓冲区的数据,监测到数据缓冲区中有数据,则开始接收数据并初始化存放数据的队列;

(2)如果数据缓冲区监测没有此类数据的到来,则一直等待,直到发送端发送数据;

(3)存储程序根据时间戳属性计算出该条数据发往的对应队列;

f4)如果某个队列数据到达时间窗口阈值,无论数据量是否满足数据量阈值,数据接收区均给该数据对象配置标示key;

(5)数据写入区获取该数据对象,根据标示key和数据服务器列表,进行一致性哈希计算,根据hash值将该数据对象存放到对应数据服务器中;

(6)如果到达数据量窗口阈值,无论时间是否满足时间窗口阈值,数据写入区都将进行取数据对象操作。

5实验设计及结果

以物联网下交通枢纽监测系统下车流的存储为例测试验证DRS方法。

实验准备:2台双核3.0GHz CPU和4GB内存的机器上安装Load Runner9.0,模拟数据流发送端;1台2x4核2.4GHzCPU,16GB内存的机器上安装第三方缓存ActiveMQ中间件,作为缓存服务器;一台2x4核2.4GHz CPU,16GB内存的机器上安装存储程序;6台2x4核2.4GHz CPU,16GB内存1TBRAID5磁盘阵列的机器上安装oracle10g,作为持久化存储。

实验1:使用DRS方法进行低中速率数据存储测试,查看效果:使用Load Runner服务器模拟数据流发送时,设置不同的数据发送速率,窗口时间阈值设定为2s,数据量阈值设定为2000条。持续运行10小时。

实验结果:

图2中,横轴为数据发送速率,即每秒发送的数据量,单位为条/秒,表示速率不断提高,纵轴为延迟时间,单位为小时。由图2得知,将流数据划分并考虑将数据分布存储之后,低中速数据无延迟的存储到数据服务器中,这大大提高了系统性能,保证了数据的完整性,实时性。

实验2:使用DRS方法进行万级别发送速率的存储测试,查看效果:使用Load Runner服务器模拟数据流发送时,设置不同的数据发送速率与不同的数据量阈值,每秒数据发送量依次设置为1w,2w,3w,4w,5w,6w,7w,8w。数据量阈值分别设为2000条,3000条,5000条,在这三种阈值下分别进行测试。时间阈值设定为2s,持续运行10小时。

图3中,横轴为数据发送速率,即每秒发送的数据量,单位为条/秒,表示速率不断提高,纵轴为延迟时间,单位为小时。由结果图可知使用DRS方法进行存储也出现延迟现象,延迟时间随着速率不断提高而增长。当数据速率提高到更高级别时,由于数据划分策略缘故延迟现象不会完全消除,这也是本论文下一步将要解决的问题。

6结论

本文提出了分布式实时存储方法DRS,该方法基于实时车辆数据进行了一系列实验。结果证明该方法在大部分情况下拥有良好的性能,并应用于某市交通监管实时系统中,成效显著,提高了系统的性能。

本文下一步工作将针对于阈值的设定,数据的划分与发送数据的速率之间的关系做进一步分析,使该方法更有使用价值。

猜你喜欢
接收数据数据量缓冲区
冲激噪声背景下基于幅度预处理的测向新方法*
基于大数据量的初至层析成像算法优化
计算Lyapunov指数的模糊C均值聚类小数据量法
高刷新率不容易显示器需求与接口标准带宽
宽带信号采集与大数据量传输系统设计与研究
低复杂度多输入多输出雷达目标角度估计方法
嫩江重要省界缓冲区水质单因子评价法研究
单片机模拟串口数据接收程序的实现及优化
关键链技术缓冲区的确定方法研究
地理信息系统绘图缓冲区技术设计与实现