kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> 基于云技术的分布式实时数据库系统的设计与实现
基于云技术的分布式实时数据库系统的设计与实现
2017年电子技术应用第11期
焦冬冬1,张 晨2,房志奇1,康 卫1
1.华北计算机系统工程研究所,北京100083;2.北京科技大学,北京100083
摘要:通过分析工业大数据的特点,提出并实现了一种基于云技术的分布式实时数据库系统。该系统将云技术与实时数据库技术相结合,既满足工控对于数据实时性的要求,又具有高扩展性、高容错性、高可靠性,满足工业大数据的处理要求。实验结果表明,该系统达到了设计要求。
中图分类号:TP392
文献标识码:A
DOI:10.16157/j.issn.0258-7998.166788
中文引用格式:焦冬冬,张晨,房志奇,等. 基于云技术的分布式实时数据库系统的设计与实现[J].电子技术应用,2017,43(11):112-115,123.
英文引用格式:Jiao Dongdong,Zhang Chen,Fang Zhiqi,et al. Design and implementation of the distributed real-time database system based on the cloud technology[J].Application of Electronic Technique,2017,43(11):112-115,123.
Design and implementation of the distributed real-time database system based on the cloud technology
Jiao Dongdong1,Zhang Chen2,Fang Zhiqi1,Kang Wei1
1.National Computer System Engineering Research Institute of China,Beijing 100083,China; 2.University of Science and Technology Beijing,Beijing 100083,China
Abstract:By analyzing the characteristics of the industrial big data, this paper designs and implements a distributed real-time database system based on cloud technology. The system integrates the cloud technology with the real-time database technology. This system enables a host of real-time, benefits-load balancing, high extensibility, fault tolerance and high reliability, meets the processing requirements of industrial big data.
Key words :distributed real-time database; cloud technology; big data

0 引言

目前实时数据库系统广泛应用于军事、电信、电力、航空、工业控制、证券交易、物联网等领域,随着企业信息化快速建设,工业实时数据增长速度远远超出企业的预期。以电力行业发电侧为例,电力生产自动化控制程度的提高,对诸如压力、流量和温度等指标的监测精度、频度和准确度更高,带来数据量的激增。就用电侧而言,一次采集频度的提升就会带来数据体量的“指数级”变化[1]。另外,基于工业大数据[2]分析有助于企业优化绩效,明确趋势和模式,支持实时决策。

分布式实时数据库系统是分布式数据库系统和实时数据库系统相结合的产物,是事务和数据都可以具有定时特性或显示定时限制的分布式数据库系统。目前国内主要的分布式数据库产品多采用多层的分布式技术,配置多套实时数据系统分别处理各自固定的采集器采集的数据,没有实现数据存储的透明性,不具备动态可扩展性。文献[3]中提出了一种去中心化的分布式实时数据库系统,使得系统具有更高的可用性,实现的是数据最终一致性,无法保证强一致性[4]。文献[5]提出了一种基于通信平台的分步式实时数据库系统,系统具有较高的扩展性,但是通信平台的负载较大,通信路径较长。

为此本文提出了一种基于云技术[6-8]的分布式实时数据库管理系统的设计方案,将云技术与实时数据库技术相结合,从而满足工业大数据的处理要求,可以应用于石化、电力、钢铁、物联网、气象预报、物流跟踪、生态监测等专业应用领域。

1 分布式实时数据库系统总体设计

基于云技术的分布式实时数据库系统主要分为四大子系统:主节点(Masternode)、实时数据节点(RTDatanode)、客户端和数据采集器。系统通过兼容HDFS[9]实现对工业非结构化数据的处理。系统的总体架构如图1所示。

jsj1-t1.gif

1.1 主节点Masternode

主节点是整个分布式实时数据库系统的核心,主要用于维护整个系统的元数据信息,同时监管整个集群。主节点主要包括四个子系统:通信处理子系统、元数据镜像和编辑日志管理子系统、数据节点管理子系统,以及元数据内存快照管理子系统,系统架构如图2所示。

jsj1-t2.gif

通信处理子系统主要有两种实现方式:远程过程调用接口和基于TCP或HTTP流式接口。主要用于客户端和主节点、主节点和实时数据节点、主节点和备份主节点之间的通信。

元数据镜像和编辑日志管理子系统主要有两个模块:其一是处理非结构化数据的元数据镜像和编辑日志管理模块,通过移植HDFS的相应模块实现;其二是工业实时数据的元数据镜像和内存数据节点元数据日志管理子系统,用于将接收到的实时数据从内存中同步持久化到本地磁盘,在集群启动时将元数据等加载到元数据内存快照管理子系统。

数据节点管理子系统主要包括数据节点启动模块、心跳处理模块、机架感知模块、负载均衡模块和非结构化数据的数据块管理模块。

(1)数据节点启动模块主要用于数据节点的握手、注册,对于非结构化数据需要上报数据块信息。

(2)心跳处理模块主要用于心跳信息的处理和心跳检查,心跳信息包括数据节点的身份信息、数据节点的负载信息,用于负载均衡模块等;心跳检查指的是根据设定的时间间隔检查心跳信息,用于判断数据节点的运行状态。

(3)负载均衡模块根据心跳处理模块得到负载信息,为每个数据节点赋予优先级。

(4)机架感知模块用于感知数据节点的机架信息。

(5)非结构化数据的数据块管理模块通过兼容HDFS的相应模块实现。

元数据内存快照管理子系统主要用于在内存中维护主节点需要维护的元数据信息,实现实时数据的分布式存储和检索、用户权限管理等。

1.2 实时数据节点RTDatanode

实时数据节点负责处理工业过程数据和系统的元数据信息。实时数据节点主要分为三个部分:内存数据节点子系统、实时数据节点子系统、非结构化数据节点子系统。其中非结构化数据节点子系统通过兼容HDFS的Datanode实现。实时数据节点总体架构如图3所示。

jsj1-t3.gif

内存数据节点子系统用于分担主节点元数据信息处理负载,维护部分系统元数据。

实时数据节点子系统主要用于工业实时数据和历史数据的处理,主要包括查询子系统、内存快照子系统、日志子系统、归档子系统、通信子系统和实时文件系统rtfs[10]

(1)查询子系统主要包括实时数据的发布和历史数据的查询,采用线程池技术响应客户端的请求。

(2)内存快照子系统采用链表来实现,过程数据缓存在内存的数据缓存链表中,数更新线程将新数据更新进该链表。内存快照子系统采用POT树索引结构[11]来管理内存中的数据。

(3)日志子系统主要包括实时数据日志模块和数据包日志模块,数据包日志模块用于防止数据包在发送队列和接收队列时系统故障引起的数据丢失。

(4)归档子系统主要由压缩和打包归档两部分组成。压缩采用旋转门压缩算法,压缩之后,将数据打包写入实时文件系统,如果失败将数据写入日志。

(5)通信子系统主要有数据包发送缓冲模块、元数据布隆过滤模块、主节点通信模块、实时数据节点通信模块和客户端通信模块等。数据包发送缓冲模块采用链表结构实现,支持并发读写,用于缓存备份数据包。元数据布隆过滤模块用于获取元数据信息。主节点通信模块和实时数据节点通信模块分别用于与主节点、实时数据节点通信。客户端通信模块用于响应客户端的请求。

1.3 关键技术

(1)负载均衡技术

负载均衡技术是保证系统运行效率和可用性的关键技术。基本原理如下:

IF(心跳间隔到期)

THEN 获取心跳信息中的CPU、内存、存储、进程等信息更新到Node_Load列表;

根据Node_Load信息更新Node_PRI->pri(数据节点的优先级);

更新Node_PRI最大堆;

ENDIF

IF(接收到分配节点申请)

THEN从Node_PRI最大堆中获取最高优先级节点返回;

更新Node_Load列表;

更新Node_PRI->pri;

更新Node_PRI最大堆;

ENDIF

(2)动态扩展技术

动态扩展技术是保证系统性能和连续性的关键技术,主要包括节点的动态添加和删除。动态添加节点的基本原理如下:

数据节点执行添加指令;

远程过程调用主节点NodeRegister(Node);

NodeRegister(Node)

IF(Node 在Node_List列表中)

THEN Node->alive=TRUE;

IF(Node 不在Node_Load列表中)

THEN 用Node初始化Node_Load并添加到列表中;

ENDIF

IF(Node 不在Heartbeat列表中)

THEN将Node添加到Heartbeat列表中;

ENDIF

ELSE Node->alieve=TRUE;

Node添加到Node_List中;

Node初始化Node_Load并添加到列表中;

Node添加到Heartbeat列表中;

ENDIF

动态删除节点的基本原理如下:

数据节点执行添加指令或故障;

主节点执行:

IF(心跳间隔到期)

THEN获取Node心跳信息,记录获取时间TIME;

IF(心跳信息含有关闭命令)

THEN 更新Node_List中Node->alive=FALSE;

更新其他所有包含Node结构,删除Node;

Node添加到Dead_Node列表中;

ELSE IF(Node在Heartbeat列表中)

THEN更新Heartbeat列表中Node->time=TIME;

FOR node in Heartbeat:

DO IF(TIME-node->time >设置最长失连时间)

THEN 更新Node_List中Node->alive=FALSE;

更新其他所有包含Node的数据结构,删除Node;

Node添加到Dead_Node列表中;

ENDIF

ELSE IF(Node不在Heartbeat列表中)

THEN NodeRegister(Node);

将Node从Dead_Node列表中删除;

ENDIF

IF(时间间隔到期)

THEN FOR node in Dead_Node:

DO IF(TIME-node->deadTime>最长dead时间)

THEN将node历史数据同步到其他节点;

ENDIF

ENDIF

ENDIF

1.4 客户端和数据采集器

客户端主要用于工业数据的查询和实时数据的订阅,客户端通过与主节点通信获得所需元数据信息,即数据块索引和实时数据节点列表为元素的有序列表,对于实时数据只有一个元数据信息,客户端依次与相应数据节点通信获取数据,从而实现数据的透明访问。

数据采集器主要用于采集工业现场的实时数据,加时间戳发送到实时数据节点。数据采集器会将数据发送到最短网络路径的实时数据节点(人工配置或主节点分配),当此实时数据节点故障时,数据采集器与主节点通信,申请一个有效的实时数据节点,然后将实时数据发送到此节点,从而保证了实时数据处理的高容错性。

2 测试

为了测试系统的性能和扩展性以及负载均衡,采用的测试环境包括两台浪潮NP3060,配置为:Intel Xeon CPU E5606,24 GB内存,千兆网络。两台机器安装VMware ESXi5.5.0,在其上构建虚拟机,虚拟机配置为:1核处理器,4 GB内存,共享千兆网络,操作系统为Ubuntu 11.10。

2.1 性能测试

使用一台虚拟机作为主节点,4台虚拟机为数据节点,4台虚拟机为数据采集器。每个数据采集器模拟生成1 000点、5万点的温度实时数据,采集周期是1 s,数据副本数量设置为2,进行7×24小时测试。测试表明系统高可用,7×24小时无故障运行。测试结果如表1所示。

jsj1-b1.gif

2.2 扩展性和负载均衡测试

使用一台虚拟机作为主节点,3台虚拟机为实时数据节点,编号为1、2、3。4台虚拟机为数据采集器。每个数据采集器模拟生成1 000点的温度实时数据,采集周期是1 s,测试时间为4万秒。当测试进行到2个小时时,动态添加一个实时数据节点4到集群中。进行到5个小时,动态删除数据节点3。测试结果如表2所示,表中每列是数据节点在查询时刻所存储数据包的数量。

jsj1-b2.gif

测试结果表明,集群能够实现动态添加和删除实时数据节点,具有高扩展性。经过一段时间的运行后,数据存储均衡,说明系统能够实现负载均衡。

2.3 查询测试

使用一台虚拟机作为主节点,4台虚拟机为实时数据节点,编号为1~4。4台虚拟机为数据采集器,客户端若干。每个数据采集器模拟生成1 000点温度实时数据,采集周期是1 s,数据副本数量设置为3,24小时的历史数据。客户端分别在集群健康、断开一、二台实时数据节点(包括所有可能的组合)的情况下查询历史数据和订阅实时数据。查询历史数据的测试结果如表3所示,由于设置副本数量为3,因此查询时集群允许最大数据节点故障数量为2。

jsj1-b3.gif

在集群健康时订阅实时数据的测试结果如图4所示。数据节点故障时订阅实时数据的测试结果如图5所示,在时刻T1,关闭实时数据节点2、3、4;在时刻T2,重新启动实时数据节点2,关闭实时数据节点1;在T3时刻,重新启动实时数据节点3,关闭实时数据节点2。对比图4和图5可以看出,在数据规模不大时,集群只有一台实时数据节点存活,不会影响数据的存储和订阅。

jsj1-t4.gif

jsj1-t5.gif

测试结果表明,系统的历史数据查询和实时数据订阅功能满足设计要求。在历史数据查询时,系统允许的最大数据节点故障数量为数据点的副本数量减1,在实时数据存储和订阅时,只要系统存活的实时数据节点总的负载容量大于系统处理的数据规模,就能保证实时数据的处理。这说明系统具有很高的容错性和可靠性。

2.4 集群数据同步通道性能测试

将发送数据节点定义为Client,将接收数据节点定义为Server,分别测试1~3个Client与1个Server连接情况下的通道性能。测试结果如表4所示。

jsj1-b4.gif

实验结果表明,在测试环境下,当数据副本设置为2时,集群的数据同步通道支持的最大单节点数据规模是285万点(102个数据组成大小为1 216 B的数据包);当数据副本设置为3时,支持的最大单节点数据规模是180万点。

3 结束语

本文通过分析工业大数据的特点,提出并实现了一种面向工业大数据同时兼容传统的分布式实时数据库系统功能的基于云技术的分布式实时数据库系统。该系统通过将云技术与实时数据库技术相结合,既满足工控对于数据实时性的要求,又具有高扩展性、高容错性、高可靠性,支持工业大数据的处理要求。分布式实时数据库系统可用于电力、石化、物联网等多种行业,具有广阔的应用场景。

参考文献

[1] 中国电机工程学会信息化专委会.北京中国电力大数据发展白皮书[M].北京:中国电力出版社,2013:9-12.

[2] 孙柏林.大数据技术及其在电力行业中的应用[J].电气时代,2013(8):18-23.

[3] 钱益舟.基于云技术的分布式实时数据库高性能数据存储检索机制的研究[D].杭州:浙江大学,2012.

[4] Werner Vogels.Eventually consistent[J].ACM Queue,2008,6(6):14-19.

[5] 黄震.工业分布式实时数据库网络通信平台的研究与设计[D].杭州:浙江大学,2012.

[6] VAGUERO L M,RODERO-MWEINO L,CACERES J.A break in the clouds:Towards a cloud definition[J].SIGCOMM Comput.Commun.Rev.,2009,39(1):50-55.

[7] Hadoop[EB/OL].(2016-07-01)[2016-12-18].http://hadoop.apache.org/.

[8] GREENBERG A,HAMILTON J,MALTZD A.The cost of a cloud:research problems in data center networks[C].SIGCOMM Comput.Commun.Rev.,2008,39:68-73.

[9] HDFS architecture guide[EB/OL].(2013-02-13)[2016-12-18].http://hadoop.apache.org/docs/r1.0.4/-hdfs_design.html.

[10] 郭瑞.力数实时数据库实时文件系统的研究[D].北京:华北计算机系统工程研究所,2013.

[11] 李亚凤.若干实时数据库过程数据处理关键技术的研究与实现[D].北京:华北计算机系统工程研究所,2013.



作者信息:

焦冬冬1,张 晨2,房志奇1,康 卫1

(1.华北计算机系统工程研究所,北京100083;2.北京科技大学,北京100083)

此内容为AET网站原创,未经授权禁止转载。
Baidu
map