一种对周期性数据上报进行时间散列的系统及实现方法
2020-05-07
1 研究目标
随着信息技术的飞速发展,大数据时代的到来,对数据传输效率及处理能力的需求不断增长。尤其是对于海量数据终端,周期性进行数据上报时,某一时点对网络、I/O、内存、计算能力等施加了巨大的压力,而此种业务场景在物联网领域中应用尤为常见。物联网通过各种传感器技术、各种通信手段,将任何物体与互联网相连接,从而实现了远程监视、自动报警、控制、诊断和维护,帮助人们实现管理、控制与运营,随着各行各业应用的发展,每秒钟物联网上都会产生海量的数据。因此会涉及大量数据周期性上报问题,有鉴于此,研究如何降低海量数据周期性上报对网络、I/O、内存、计算能力的要求,具有重要的意义。
一个典型的物联网架构的分层模型基本都是:感知层、网络层、服务层。
感知层主要指分布在前端的各种传感设备和数据采集设备、数据采集单元(Colletion Unit,简称CU),主要完成数据采集功能;网络层主要指数据传输通道,用于将数据采集单元采集到的数据,通过特定的数据格式,发送回中心服务单元(Service Unit,简称SU),做好后台进行数据分析的准备;目前主流的传输通道主要有GPRS/EDGE/3G /4G/NB-IoT/LoRa/Sigfox/RPMA/Ethernet/Fiber等;服务层主要指后台的数据分析平台和业务分析应用;根据业务类型和要求,将回传的数据进行整合、处理、挖掘;给出基于不同业务领域的各种分析报告、应用管理等,服务层有时又分为平台服务层和应用服务层。
典型的物联网架构的分层模型示意图如图1所示。
图1 典型的物联网架构示意
在经典的物联网架构下,采集单元采集数据后,需要定期向服务单元上报数据,即周期性将数据进行上报。假定上报当日零时时间戳为T0,当前上报批次为n,则:
采集单元在Tn时上报数据,p为数据上报的周期(秒)。
如若采用现有的技术方案,那么假定一个数据传输系统中有2 000个数据采集单元,每个采集单元有8 KB的上报数据,则数据上报点对网络带宽的要求如下:
在实际应用中,海量数据终端的采集单元可能远高于2 000个,随着采集单元数量的增加,带宽要求呈线性方式增长。由此可见,采用现有的技术方法周期性上报数据,瞬时并发的数据流带来传输的高峰,对网络带宽、I/O带宽、I/O读写等待时间、内存、计算能力等系统资源有很高的要求,带来运营成本的巨大压力。
本文就是说明,如何利用时间散列的方法,将高度集中的并发业务平均分布在一段时间内,从而降低周期性上报数据对网络带宽、I/O带宽、I/O读写等待时间、内存、计算能力等系统资源的要求。
2 实现方法
如若采用现有的技术方案,那么假定一个数据传输系统中有2 000个数据采集单元,每个采集单元有8 KB的上报数据,则数据上报点对网络带宽的要求需要考虑如下假设 :
(1)瞬时流量计算时,每个采集单元的数据大小为8 KB,2 000个数据采集单元同时产生的瞬时流量总量为:8 KB X 2 000=16 000 KB。从KB换算为MB时,我们取换算常数为10。
(2)而在计算瞬时带宽要求时,由于传送的数据不仅包括采集单元需要上报的采集数据, 还需要考虑数据通讯时控制单元需要传送的控制数据。因此,对瞬时带宽要求计算且带宽单位从MB换算为Mbit/s时,我们将换算常数简单取10。
(3)按照以上的假设,对瞬时流量和带宽要求的计算公式如下示:
可以看到,即使采集单元数量不算太多(2 000个),单一采集单元上传的数据量不大(8 KB)时,对瞬时带宽要求还是非常大的(160 Mbit/s)。
但是当我们将这些报文平均分布在10秒内上报时,则所需带宽为:
两者的比较如图2和图3所示。
图2 1秒内上报数据时的瞬时带宽需求
图3 10秒内上报数据时的带宽需求
可以看到,在将这些数据散列到一段时间内后,数据传送对系统资源(示例主要指带宽资源)的需求将大大减少。
报文发送时间、报文发送分布时间以及散列参数等内容,可以根据业务场景和实际工作需要自由定义,抽象为如下情况。
假定数据采集单元数量为l,任意一个数据采集单元的序列号为SN,
则散列参数计算公式为:
上述公式中HashSN为散列参数,1为序列号SN的长度,j为序列号遍历索引,0≤j 上述公式中T0为上报当日零时时间戳;n为当前上报批次;p为上报周期;t为时间片段的时长;i为时间片段编号,,其中,p/t向下取整且t«p;x为配置项,x是二次散列参数,将服务单元分配的、处于同一时间片段内的采集单元在该时段再次进行散列分布,使负载更为平均。 本文所描述的对周期性数据上报进行时间散列的系统由数据采集单元(CU)、服务单元(SU)以及网络三部分组成,具体请参考如图4所示,通过采集单元与服务单元之间的网络通信,实现对周期性上报数据的时间分流,以达到错开数据传输高峰期的方法。 ① 服务单元SU,主要指后台的数据分析平台和业务分析应用;根据业务类型和要求,将回传的数据进行整合、处理、挖掘;给出基于不同业务领域的各种分析报告、应用管理等,服务层有时又分为平台服务层和应用服务层; 图4 典型周期性数据上报系统的拓扑架构图 ② 网络,主要指将数据进行回传的传输通道,目前主流的传输方式主要指:GPRS/EDGE/3G/4G/NB-IoT/LoRa/Sigfox/RPMA/Ethernet/Fiber等; ③ 采集单元CU,主要指分布在前端的各种传感设备和数据采集设备、数据采集单元(Colletion Unit,简称CU),主要完成数据采集功能。 系统的具体实现方法如图5所示。 图5 对周期性数据上报进行时间散列的系统实现方法示意 步骤1、S101所述采集单元发起注册请求。 步骤2、S102所述服务单元根据所述注册请求与所述采集单元建立连接。 步骤3、S103所述服务单元将上报周期划分为复数个所述时间片段,获取各时间片段的负载状态,将负荷最小的时间片段的配置参数发送至所述采集单元。 步骤4、S104所述采集单元根据所述配置参数计算获得上报时间。通过所述上报时间,采集单元可以确定其上报数据的时间点,以此,通过服务单元的合理划分采集单元上报的时间,使不同采集单元可以分批次上报数据,减少多个采集单元同一时刻上报数据引起的设备压力,极大的降低了周期性上报数据对网络带宽、I/O带宽、I/O读写等待时间、内存、计算能力等系统资源的要求。 以下将举例详细描述系统功能及其实现过程。 如图6所示,在实际工作中,当采集单元数据上报周期设为p,服务单元则将所述上报周期p划分为若干连续的、相同的时间片段,每个时间片段的时长为t,并为每个时间片段编号为i,,由服务单元进行动态管理和检测。当所述对周期性数据上报进行时间散列的系统启动时,各时间片段的负载可计数为0,该引用计数为服务单元设置;采集单元向服务单元发起注册后,服务单元检测当前时间片段的负载情况P1~PN,选出负载最小的单元 min(P1,P2,P3…,PN),例如当前P1=1,P2=3,P3=5,那么该情况下选择P1这一个引用计数最小的一个单元,服务单元将采集单元上传的时间点被划入该时段P1,同时该片段计数加1,变成P1=2,当采集单元离线时,对应时段的引用计数减1,变回P1=1。以此,服务单元通过即时检测当前时间片段的引用计数,合理且快捷的获得各时间片段的负荷状态,将采集单元上报数据的时间准确的分配至负荷较小的时间片段中,使采集单元获得其对应的上报数据的时间段,以此,防止大量采集单元集中于同一时段上传数据的风险。同时,值得说明的是,当采集单元获得其上报时间后,并不用立即上报数据,其在该时段内的最终上报时点,可由采集单元具体分析后自行决定。 图6 数据上报周期时间片段示意 如图7所示,服务单元增加引用计数后,将引用计数对应的时间片段分配至采集单元;服务单元查询到采集单元离线后,减少引用计数。首先采集单元发出注册申请,服务单元接收到注册申请后,审核注册申请是否合规; 图7 数据上报时间Tn计算逻辑机制示意 如审核不通过,则断开连接,采集单元继续发起注册申请; 如审核通过,则服务单元与采集单元建立连接,此时,服务单元扫描当前划分好的时间片段,根据每一时间片段的引用计数值大小判断对应时间片段的负荷状态,当查询到最小负荷状态的时间片段后,即在该时间片段的引用计数上加值后(如加1),将时间片段的配置参数发送至采集单元,其中配置参数至少包含:上报周期,时间片段的时长和时间片段编号; 每一时间片段并不一定只匹配唯一的采集单元,因此,为避免多个采集单元在同一时间片段中上传数据,造成服务器压力等问题;采集单元在接收到配置参数后,会进行上报时间点计算,根据获得的时间片段的配置参数与散列参数计算自身的上报时间点Tn,以此更进一步防止了海量数据上传可能造成的拥堵压力; 当采集单元通过计算获得上传时间点Tn并在该时刻上传数据后,依然与服务单元保持连接,等待下一批次上报时间Tn+1,并在该时刻上传,以此循环。 当服务单元检测到某一采集单元离线后,则调节采集单元对应的时间片段的引用计数(如减去1)。离线后的采集单元,需重新注册获取新的时间片段,服务单元通过引用计数的增减,动态维护时间片段负载。 在上述对周期性数据上报进行时间散列的系统中,为了使时间负载更为均衡,更加平均的分配时段t,采集单元根据散列参数(hash)自行决定具体的上报时间。其中,的参考算法如下(假定SN长度为l): 上述公式中HashSN为散列参数,l为序列号SN的长度,j为序列号遍历索引,0≤j 本文所提供的对周期性数据上报进行时间散列的系统运用在实际工作中,具有较好的使用效果,具体对比说明如下: 假定系统中有2 000个数据采集单元,每个采集单元有8 KB的上报数据,上报周期为180 s,划分为10个时间片段,则每一时段18 s中,约有200个采集单元需要上报数据。假设x=10,则同一时间点并发的采集单元有20个,根据计算得出网络带宽为: 按照30%的冗余计算,网络带宽的要求约为1 kbit/s,与现有技术中同等条件下计算的160 kbit/s相比,极大地降低了对网络的要求。 使用上述方法,通过将传输周期划分为若干时段,并由服务单元动态管理时间片段,安排采集单元在负载最小的时间片段上传数据,加上时间散列机制,最大限度平均分布各个采集单元上传数据的时间,错开数据上报的高峰期,从而达到降低网络带宽、I/O带宽、I/O读写等待时间、内存、计算能力等系统资源的要求,降低系统运营成本。2.1 系统构成
2.2 系统的具体实现方法
2.3 示例说明
3 结论